創建一個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,不會用到索引