主键索引 PRIMARY 唯一的 不能为空 一个表只能有一个 主键索引通常在建表的时候就指定 id
建表时指定
CREATE 表名(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,PRIMARY KEY(ID))
PRIMARY KEY(ID)
普通索引 NORMAL 不受限制
建表时指定
CREATE 表名(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,INDEX USERNAME_INDEX(USERNAME(16))) //给列USERNAME建普通索引USERNAME_INDEX
ALTER语句指定
ALTER 表名 ADD INDEX U_INDEX (USERNAME) //给列USERNAME建普通索引 U_INDEX
删除索引
DROP INDEX U_INDEX ON 表名 //删除表t_user中的索引U_INDEX
唯一索引 UNIQUE 唯一可允许为空
建表时指定
CREATE 表名r(ID INT NOT NULL,USERNAME VARCHAR(16) NOT NULL,UNIQUE U_INDEX(USERNAME)) //给列USERNAME添加唯一索引T_USER
ALTER语句指定
ALTER 表名 ADD UNIQUE u_index(USERNAME) //给列T_USER添加唯一索引u_index
删除索引
DROP INDEX U_INDEX ON 表名
全文索引 FULLTEXT 长篇文章可用 如果短篇文章 可用INDEX
char和varchar再数据库设计的时候要明白:
char 是固定长度0-255 如果存数据的时候有空格 则会把空格存入数据表中,取数据的时候空格丢弃
varchar 是可变长度 0-65535 如果存数据的时候有空格 则会不会把空格存入数据表中,取数据的时候如果数据有空格则会保留空格
索引不足之处:
索引提高了查询的速度,但是降低了INSERT、UPDATE、DELETE的速度,因为在插入、修改、删除数据时,还要同时操作一下索引文件;
占用一定的磁盘空间
一般情况下不是鼓励使用like,如果非使用,那么需要注意 like"%aaa%"不会使用索引;但like“aaa%”会使用索引。
原文:http://blog.51cto.com/kangjunfei/2177507