创建一个class的表, 注意:这里的引号不是英文引号
CREATE TABLE `class` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL COMMENT '用户名',
`sex` TINYINT(4) NOT NULL COMMENT '性别',
`age` INT(4) NOT NULL COMMENT '年龄',
`time` datetime(0) NULL DEFAULT NULL COMMENT '时间',
`desc` VARCHAR(20) NOT NULL COMMENT '详情',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic COMMENT '班级表';
1主键索引
主键索引一般在建表的时候添加,一般都是id,自动递增
建立表后添加主键索引
alter table 'class' add primary key (' id')
特点:不能为空并且唯一
2普通索引
一张表中的普通索引可以有多个
alter table 'class' add index index_name (‘name’)
index_name是索引名
3唯一索引
alter table 'class' add UNIQUE ('name')
唯一索引和主键索引的区别
唯一索引可以有多个null,但是数据内容不能重复
主键索引不能为null,内容唯一
4全文索引
alter table 'class' add FULLTEXT ('name')
全文索引主要针对于文本文件,比如标题文章
5多字段索引
alter table 'class' add index index_name (`name`, `sex`, `desc` )
6什么时候开始引用索引
6.1频繁查询的字段,应该创建索引
6.2更新非常频繁的字段,不应该创建索引
6.3唯一性太差的字段,应该创建索引
6.4不会出现在where条件之后的字段,不应该创建索引。
7索引的使用情况
7.1对于创建的多列索引,查询左边的索引的列,索引会被使用到,
eg: alter table 'class' add index index_name (`name`, `sex`, `desc` )
select * from class where name ='张三';会被使用到索引
select * from class where desc='张三';不会用到索引
7.2对于模糊查询,like '%张三'不会用到索引,like ‘张三%’会用到索引
7.3如果条件中含有or,不会用到索引