1 约束
什么是约束
除了数据类型以外额外添加的约束
约束的作用:
为了保证数据的完整性 合法性
分类:
not null 非空约束 数据不能为空
create table stu(id int , name char(10) not bull);
default 默认值约束 可以指定字段的默认值
create table stu(id not null,name default "man")
unique 唯一约束 该字段是唯一的不可以重复
其中唯一约束有分成单列唯一约束和多列唯一约束
单列唯一约束
create table stu(id int unique)
多列唯一约束
需要两个字段都相同才会触发约束条件
create table stu(id int ,name char(10),unique(id,name));
primary key 主键约束
用于唯一标识表中一条记录
主键与唯一约束+非空约束的效果相同
create table stu(id int primary key);
主键也分多列联合主键和单列
多列联合主键作用和多列联合约束相似,需要主键中的两个字段都相同才会触发约束
create table stu(id int ,name char(10),primary key(id,name));
auto_increment 自增长约束
作用 通常搭配主键使用 可以自动为你的数据自加1
通常是id 计数从1开始,会自动的加一
注意:自动增长 只能用于整型
使用语法:
create table stu(id primary key auto_increment);
修改自动增长的起始位置(语法):
alter table stu auto_increment = 3;
foreign key 外键
用于建立两张表之间的联系
使用的语法:
1 先建立教室表
create table classroom(id int primary key,name char(10));
2 再建立学生表
create table stu(id int primary key,name char(10),classroom_id int not null,foreign key(classroom_id) references classroom(id));
级联操作
on delete cascade (同步删除)
on update cascade(同步更新)
1 先建立教室表
create table classroom(id int primary key,name char(10));
2 再建立学生表(学生表与教室表建立级联)
create table stu(id int primary key,name char(10),classroom_id int not null,foreign key(classroom_id) references classroom(id) on delete cascade on update cascade);
表与表之间的联系
一对一
一对多
1 先建立教室表
create table classroom(id int primary key,name char(10));
2 再建立学生表(学生表与教室表建立级联)
create table stu(id int primary key,name char(10),classroom_id int not null,foreign key(classroom_id) references classroom(id) on delete cascade on update cascade);
多对多
1 建立学生表
create table stu(id int primary key,name char(10));
2 建立教师表
create table tea(id int primary key,name char(10));
3 建立学生表与教师表之间多对多关系的表t_s
create table t_s(s_id int not null,t_id int not null,foreign key(s_id) references stu(id),foreign key(t_id) references tea(id),primary key(s_id,t_id));