zoukankan      html  css  js  c++  java
  • MySQL基础知识

    7. 聚簇索引

    每个InnoDB表都有一个特殊的索引,称为聚簇索引,其中存储着数据行。通常聚簇索引与主键是同义词

    归属:聚簇索引是InnoDB存储引擎所特有的

    说明:

    ◇ 当你为表定义主键时,InnoDB会将其作为表的聚簇索引。请为你创建的每个表都显式地定义主键。如果不存在逻辑上唯一且非空的列或列组合,请添加一个自增列,其值能够自动填充;

    ◇ 如果你没有为表定义主键,InnoDB将查找第一个全部列都是NOT NULL的唯一索引,将其用作聚簇索引;

    ◇ 如果表没有主键,也没有符合条件的唯一索引,InnoDB将在一个包含行ID的合成列上生成隐藏的聚簇索引。此时数据行将根据InnoDB分配给数据行的ID值进行排序。行ID是一个6字节的字段,随着新行插入到表中而单调递增。因此,根据行ID排序实际上就是根据行的插入顺序排序;


    为了使查询、插入和其它数据库操作的性能最佳,你必须了解InnoDB如何使用聚簇索引来优化每个表中最常见的查询和DML操作


    聚簇索引如何加速查询

    通过聚簇索引访问数据行是很快的,因为索引搜索能够直接定位到包含该行全部数据所在的页面。如果表很大,与行数据和索引记录存储在不同页面的存储组织相比,聚簇索引结构通常能够节省一次磁盘I/O操作


    辅助索引和聚簇索引的关系

    除聚簇索引以外的所有索引都称为辅助索引。在InnoDB中,辅助索引中的每个记录既包含辅助索引列,也包含主键列。InnoDB使用主键值搜索聚簇索引中的数据行。如果主键很长,辅助索引使用的空间将会更多,因此一个短的主键是有利的


    6. 索引

    索引的类型:

    ◇ B-Tree索引

    ◇ 哈希索引

    ◇ 空间索引

    ◇ 全文索引

    主键:InnoDB与MyISAM都拥有主键的概念,结构上都是一棵B-Tree,但区别如下:

    InnoDB的主键即聚簇索引,聚簇索引即主键;

    MyISAM的主键与辅助索引结构上没有差别,MyISAM的主键即普通的唯一非空索引



    5. 存储引擎

    存储引擎分类:

    ◇ InnoDB

    ◇ MyISAM

    ◇ 其它的MySQL内置存储引擎,如ARCHIVE, MEMORY

    ◇ 第三方存储引擎



    4. 字符串字面值

    △ 字符串是由单引号或双引号包裹的字节或字符序列,例如:

    'a string'

    "another string"

    △ 彼此相邻的字符串,会被连接到一起,形成一个新的字符串,例如下面两行等价:

    'hello world'

    'hello' " " "world"


    △ 字符串内的某些字符序列有特殊的含义,它们被称为转义序列,转义序列以转义字符「」开头,MySQL识别的转义序列如下图所示


    对于其它的转义序列,反斜杠自动被忽略,也就是说被转义字符当作无转义字符对待,例如,x相当于x

    转义序列,大小写敏感,例如,相当于退格符,而B相当于B

    模式匹配上下文中,「%」和「_」作为通配符存在,所以在模式匹配上下文中,如需引用%」和「_」,需要对其转义,例如%「\_。而在模式匹配上下文之外,%「\_」代表的就是%「\_」,而非%」和「_


    △ 在字符串中包含引号字符的方式如下:

    ① '里面包含'时,字符串里的单引号需写两次''

    ② "里面包含"时,字符串里的双引号需写两次""

    ③ 对引号字符进行转义,字符前加反斜杠

    ④ "里面包含',或'里面包含"时,无需特别对待

    示例:










    3. 文件结构

    MySQL中,每个数据库,对应数据目录中的一个单独的目录;数据库中的表,对应数据库目录中一个或多个文件



    2. 关键字和保留字

    「interval「write

    完整保留字列表

    https://dev.mysql.com/doc/refman/5.5/en/keywords.html



    1. 标识符

    MySQL内的某些对象,如数据库、表、索引、列、别名、视图、存储过程、分区、表空间和其它一些对象,它们的名字被称作标识符

    △ 引用标识符时,可以加,也可以不加引号,但是当标识符为下列情况之一时,引用时必须加引号:

    ① 包含特殊字符,比如「减号-」

    ② 本身是保留字

    ☆ 标识符引号字符是反引号


    △ 标识符中可以包含引号字符,提前是标识符已被引号字符引用。当标识符内含的引号与引用标识符的引号相同时,你需要将标识符内含的引号写两次

    示例:创建一个名为a`b的表,表中包含一个名为c"d的整数列


    △ Unix MySQL下,数据库名,表名,大小写敏感;列名,索引名,大小写不敏感


  • 相关阅读:
    13 文件操作
    10 dict嵌套与升级
    08 连接和顺序列表
    01 Python 逻辑运算
    了解bordercollapse
    orchard模块编写的错误及其解决办法
    orchard文档之理解内容处理器
    orchard文档之理解数据访问
    orchard文档之orchard工作原理
    orchard文档之创建自定义表单
  • 原文地址:https://www.cnblogs.com/chaikefusibushiji/p/7475564.html
Copyright © 2011-2022 走看看