石头游戏网

3 KEY与INDEXKEY与INDEX等效,表定义中在列定义时可

简介: 3 KEY与INDEXKEY与INDEX等效,表定义中在列定义时可以使用primary key指定主键,也可以使用key指定主键,这样做的目的是为了与其他数据库兼容,如下SQL:需要注意的时如果在列声明完毕后,另起行中

如果使用了symbol,其值必须是在数据库唯一、在约束类型唯一,如果重复则会报错。

注:在NDB中如果CONSTRAINT symbol并不是出现在外键定义中或symbol未出现在CONSTRAINT关键字后面,NDB会使用外键索引的名称。

在MySQL中,每一个约束类型在每个数据库中拥有命名空间,即对于每个数据库,每种类型的约束名必须是唯一的。

2 主键 PRIMARY KEY唯一索引要求所有的列都定义为非空,如果这些列没有明确的声明为非空,MySQL会默认隐式地进行声明。

此处应该注意的是并不是说唯一键的索引列数据必须为非空,也可以插入空值,但是空值不会在索引中进行维护。

如果表中并没有主键,但是应用中需要表存在主键,MySQL会把第一个不含有NULL值的唯一索引当作主键。

对于InnoDb引擎的表,保持主键短小能最小化普通索引的存储开销,因为每一个普通索引都会包含该行对应的主键副本。

在CREATE TABLE语句中,PRIMARY KEY被放置在最前,后续是所有的唯一索引,然后是非唯一索引,这样能使MySQL优化器优先选择利用哪个索引并且更快地位检测重复值。

主键可以是多列的组合,但是此时是不能在列声明时使用PRIMARY KEY进行指定的,这种方式只适合单列主键的指定,此时需要使用单独的指定语句,如下:在MySQL中,主键的名称就是primary。

对于其他索引,如果没有指定一个名称,索引会选用其第一个列的列名或列名加上后缀(_2,_3)来使其唯一,可以通过SHOW INDEX FROM tbl_name来查看索引信息,如下:如上图主键索引名称为PRIMARY,第一个普通索引名称为name,第二个为gender,第三个索引是联合索引,采用其第一个列名加后缀命名为name_2,第四个索引是联合索引,采用其第一个列名加后缀命名为gender_2。

需要注意的是,如果主键为多列联合主键,那么任意一列中都不允许出现空值。

3 KEY与INDEXKEY与INDEX等效,表定义中在列定义时可以使用primary key指定主键,也可以使用key指定主键,这样做的目的是为了与其他数据库兼容,如下SQL:需要注意的时如果在列声明完毕后,另起行中使用key进行索引申明,生成的都是普通索引。

4 唯一索引UNIQUE唯一索引要求所有索引中维护的值必须是唯一的如果想表中插入的数据行中对应的唯一索引列值是重复的则会报错。

如果在唯一索引中指定了列的前缀长度,那么前缀长度的值必须是唯一的。

NULL值是不会被维护到唯一索引中的,如果一个唯一索引是联合索引,只要任意一个列出现NULL都不会被维护到唯一索引中。

5 全文索引FULLTEXTFULLTEXT索引是应用于全文检索的,只有InnoDb和MyIsam存储引擎支持全文索引,并且只能在CHAR、VARCHAR和TEXT类型的列上创建全文索引。

8 CHECK所有的存储引擎都会解析CHECK子句,但是会忽略不执行。


以上是文章"

3 KEY与INDEXKEY与INDEX等效,表定义中在列定义时可

"的内容,欢迎阅读石头游戏网的其它文章