一、主键:
1.主键分类:普通主键 复合主键 主键+auto_increment
2.使用规则
(1)一个表中只能有一个 primary key 字段
(2)对应的字段值不允许有重复,且不允许赋 NULL 值
(3)如果有多个字段都作为 PRIMARY KEY ,称为复合主键,必须一起创建。
(4)主键字段的 KEY 标志是 PRI
(5)通常与 AUTO_INCREMENT 连用
(6)经常把表中能够唯一标识记录的字段设置为主键字段[ 记录编号字段 ]
3.查看主键
desc 表; //KEY 标志是 PRI
4.创建主键
在已有表创建 alter table 表 add primary key(字段名);
建表时创建 create table 表名(字段列表,primary key(字段名));
create table t1(id char(9) primary key,name char(10)); //该格式不能创建复合主键
create table t2(id char(9),name char(10),primary key(id));
alter table t1 add primary key(id);
5.删除主键
alter table 表 drop primary key;
6.复合主键的使用:多个字段一起做主键,插入记录时,只要做主键字段的值不同时重复,就可以插入记录。
(1)创建:create table t3(cip char(15),serport smallint(2),status enum("yes","no"),primary key(cip,serport));
(2)删除:alter table t3 drop primary key;
(3)新增:alter table t3 add primary key(cip,serport);
7.注意:主键primary key 通常和auto_increment连用,auto_increment让字段的值自动增长i++,i为表中最大数值,也可以指定值
create table t21 (id int(2) primary key auto_increment,name char(10)); //创建表,设置某行自增长
alter table t4 add id int(2) primary key auto_increment; //新增一行自增长
二、外键(限制如何给字段赋值的)
1.a表x字段设外键为b表x字段则a表x字段赋值时,值只能在b表的x字段值的范围里选择,且b表x字段某值的更改、删除均会让a表x字段对应值自动同步。
2.使用规则
表的存储引擎必须是 innodb 字段类型要一致 被参照字段必须要是索引类型的一种 (primary key
3.创建外键 foreign key 的命令格式:
create table 表(字段名列表,foreign key(字段名) references 表名(字段名)on update cascade on delete cascade)engine=innodb;
新建表:create table jfb(jfb_id int(2),name char(15), foreign key(name) references bjb(name)on update cascade on delete cascade)engine=innodb;
旧表:alter table bjb add foreign key(bjb_id) references jfb(jfb_id) on update cascade on delete cascade;
4.查看外键 show create table 表名;
删除外键 alter table 表名 drop foreign key 外键名;
alter table bjb drop foreign key bjb_ibfk_1;
5.注意:on update 和 on delete 后面可以跟的词语有四个no action , set null , set default ,cascade
no action 表示不做任何操作, set null 表示在外键表中将相应字段设置为null set default 表示设置为默认值
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除
未经允许不得转载:天府数据港官方信息博客 » Mysql之主键外键
客官点个赞呗! (0)