普通索引 主键 复合主键 外键 唯一索引 全文索引fulltext
普通索引
普通索引 index 标识 MUL 字段的值允许重复,允许为空,一个表可以有多个普通索引
show index from t1;
create table t1(id int(3),name char(3),index(name),index(id));
create index name on t1(name);
drop index name on t1;
主键
主键 primary key 标识 PRI 字段的值不可以重复,不可以为空值,一个表只能有一个主键
create table t1(id int(3) primary key auto_increment,name char(3));
create tanle t2(id int(3) auto_increment,name char(2),primary key(id));
alter table t1 add primary key(name);
alter table t1 drop primary key;
复合主键
复合主键 primary key 标识 PRI 多个字段的值不可以同时重复,不可以为空
create table t1(id int(3),name char(3),primary key(id,name));
alter table t1 drop primary key;
唯一索引
唯一索引 unique 标识 UNI 字段的值可以重复,不可以为空,当值为空时变成主键 一个表可以有多个唯一索引
create table t1(id int(3),name char(3),unique(id),unique(name));
create unique index name on t1(name);
drop index name on t1;
外键
外键 foreign key 标识 MUL
一个表中的值需要在另一个表中值的范围内选取
表的存储引擎必须是innodb
两个表中字段类型必须匹配
被参数字段要是key的一种(通常为主键primary key)
create table t1(id int(3) zerofill unsigned primary key auto_increment,name char(3))engine=innodb;
create table t2(id int(3),name char(3),foreign key(id) references t1(id) on update cascade on delete cascade)engine=innodb;
alter table t2 add foreign key(id) references t1(id) on update cascade on delete cascade;
show create table t1; 看constraint后面的值
alter table t1 drop foreign key 外键名;
AUTO_INCREMENT 自增长 ++
自增长需要数值类型,必须为主键
不赋值默认从1开始
经常把表中能够唯一标识记录的字段设置为主键 字段[记录编号字段]
同步更新
同步删除
on update cascade
on delete cascade