主键索引
创建主键索引
第一种方式:
在创建表的时候,直接在字段名后指定 primary key
第二种方式:
在创建表的最后,指定某列或某几列为主键索引
第三种方式:
创建表以后再添加主键
先建表
再添加主键
主键索引的特点:
- 一个表中,最多有一个主键索引,当然可以使符合主键
- 主键索引的效率高(主键不可重复)
- 创建主键索引的列,它的值不能为null,且不能重复
- 主键索引的列基本上是int
删除主键索引
唯一索引
创建唯一索引
第一种方式:
在表定义时,在某列后直接指定unique唯一属性
第二种方式:
创建表时,在表的后面指定某列或某几列为unique
第三种方式:
创建表以后再添加唯一索引
先建表
再添加唯一索引
唯一索引的特点:
- 一个表中,可以有多个唯一索引
- 查询效率高
- 如果在某一列建立唯一索引,必须保证这列不能有重复数据
- 如果一个唯一索引上指定not null,等价于主键索引
删除唯一索引
普通索引
创建普通索引
第一种方式:
在表的定义最后,指定某列为索引
第二种方式:
创建完表以后指定某列为普通索引
先建表
再添加普通索引
第三种方式:
创建一个索引名为 idx_name 的索引
先建表
再创建一个索引名为 idx_name 的索引
那么第三种方式和第二种方式有何不同呢?
第三种方式删除普通索引的时候会有所不同,本来正常删除索引只要用列名称就能删除这一列的普通索引,但是第三种方式删除普通索引要用我们自己之前定义的名称才能删除。
演示:
删除普通索引
删除前
删除后
全文索引
当对文章字段或有大量文字的字段进行检索时,会使用到全文索引。MySQL提供全文索引机制,但是有要求,要求表的存储引擎必须是MyISAM,而且默认的全文索引支持英文,不支持中文。如果对中文进行全文检索,可以使用sphinx的中文版(coreseek)。
查询表的索引有哪些
第一种方法演示:
第二种方法演示:
第三种方法演示:
删除表的索引总结
- 第一种方法-删除主键索引:
alter table 表名 drop primary key;
- 第二种方法-其他索引的删除:
alter table 表名 drop index 索引名
; 索引名就是show keys from表名中的Key_name 字段
mysql>alter table user10 drop index idx_name;
- 第三种方法方法:
drop index 索引名 on 表名
mysql>drop index name on user8;
索引创建原则
- 比较频繁作为查询条件的字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 更新非常频繁的字段不适合作创建索引
- 不会出现在where子句中的字段不该创建索引