主键索引
PRIMARY KEY 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,一个表只能有一个主键。
增加主键
1、 在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不允许为空)【优点: 非常直接; 缺点: 只能使用一个字段作为主键】。
2、 在创建表的时候, 在所有的字段之后, 使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)。
3、 当表已经创建好之后, 额外追加主键: 可以通过修改表字段属性, 也可以直接追加。
格式:
Alter table 表名 add primary key(字段列表);
前提: 表中字段对应的数据本身是独立的(不重复)。
主键约束
主键对应的字段中的数据不允许重复: 一旦重复,数据操作失败(增和改)。
更新主键和删除主键: 没有办法更新主键: 主键必须先删除,才能增加。
格式:
Alter table 表名 drop primary key;
自增长使用
1、 当自增长被给定的值为NULL或者默认值的时候会触发自动增长。【自增长的第一个元素是1,且每次都是自增1】
2、 自增长如果对应的字段输入了值,那么自增长失效: 但是下一次还是能够正确的自增长(从最大值 1)。
3、 如何确定下一次是什么自增长呢? 可以通过查看表创建语句看到。
修改自增长
1、 自增长如果是涉及到字段改变: 必须先删除自增长,后增加(一张表只能有一个自增长)。
2、 修改当前自增长已经存在的值: 修改只能比当前已有的自增长的最大值大,不能小(小不生效)。
格式:
Alter table 表名 auto_increment = 值;
查看自增长对应的变量: show variables like ‘auto_increment%’;
删除自增长
自增长是字段的一个属性: 可以通过modify来进行修改(保证字段没有auto_increment即可)。
格式:
Alter table 表名 modify 字段 类型;
唯一索引 UNIQUE
唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引
格式:
ALTER TABLE table_name ADD UNIQUE (column);
创建唯一组合索引
格式:
ALTER TABLE table_name ADD UNIQUE (column1,column2);
普通索引 INDEX
INDEX: 最基本的索引,它没有任何限制。
格式:
ALTER TABLE table_name ADD INDEX index_name (column);
组合索引 INDEX
组合索引,即一个索引包含多个列。多用于避免回表查询。
格式:
ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);
全文索引 FULLTEXT
全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。
格式:
ALTER TABLE table_name ADD INDEX index_name (column);
注意: 索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用DROP INDEX index_name ON table_name;删除索引。
索引设计的原则:
1、适合索引的列是出现在where子句中的列,或者连接子句中指定的列。
2、基数较小的类,索引效果较差,没有必要在此列建立索引。
3、使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间。
4、不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。
所以只保持需要的索引有利于查询即可。