1 约束种类
约束名 | 约束关键字 |
---|---|
主键 | primary key |
唯一 | unique |
非空 | not null |
外键 | foreign key |
检查约束 | mysql不支持 |
2 主键约束
通常不使用业务字段(身份证,学号)作为主键,单独使用一个id作为主键,可以没意义,只要唯一,非空就行
2-1 主键的创建与删除
在创建表的时候添加主键
id int primary key
auto_increment
在已有的表中添加主键,id设置主键
alter table student add primary key(id);
删除主键
alter table student drop primary key;
2-2 主键自增
- 字段类型必须是整数类型
auto_increment
3 唯一约束(这个字段不能重复)
4 非空约束(这个字段不能为空)
主键约束=唯一约束+非空约束,那么有什么区别吗?
主键约束只能出现一次,唯一+非空约束可以多次出现
5 外键约束
如何区分主表和从表
员工表:从表(使用别人的数据)
部门表:主表5-1 外键的创建与删除
新增表的时候创建外键
constraint emp_depid_fk foreign key(dep_id) references department(id)
向已有表添加外键
alter table employee add constraint emp_depid_fk foreign key(dep_id) references department(id)
删除外键
alter table employee drop foreign key emp_depid_fk;
5-2 外键的级联
主表中的数据变化,从表中的数据也跟着变化on delete cascade on update cascade
5-3 外键的创建(多对多)学生表,课程表,和成绩表之间的关系
代码块 CREATE DATABASE ec14; USE ec14; CREATE TABLE student( id int PRIMARY key auto_increment, stu_name varchar(10) not null ); CREATE TABLE subj( id int PRIMARY key auto_increment, sub_name varchar(10) ); CREATE TABLE score( id int PRIMARY key , stu_id int, sub_id int, score int not null, CONSTRAINT stu_fk FOREIGN key (stu_id) REFERENCES student(id) on DELETE CASCADE on UPDATE CASCADE, CONSTRAINT sub_fk FOREIGN key (sub_id ) REFERENCES subj (id) on DELETE CASCADE on UPDATE CASCADE ); select from score;
来源:https://www.cnblogs.com/hellosiyu/p/12501652.html