目录
一、数据库的约束
1.1 约束类型
1.1.1 null约束
1.1.2unique约束
1.1.3default默认值约束
1.1.4primary key主键约束
1.1.5foreign key外键约束
二、内容重点总结
一、数据库的约束
1.1 约束类型
not null - 指示某列不能存储 null值。
unique - 保证某列的每行必须有唯一的值。
default - 规定没有给列赋值时的默认值。
primary key - not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。
1.1.1 null约束
创建表时,可以指定某列不为空:
create table student (
id int not null,
sn int,
name varchar(20),
email varchar(20)
);
当我们插入空值的时候会发生错误,这就是null约束
1.1.2unique约束
指定列为唯一的、不重复的
--将student删除重新构造表结构
drop table student;
create table student(
id int not null,
sn int unique,
name varchar(20),
email varchar(20)
);
插入一条数据,在sn中插入一条重复的数据,看看能否插入成功
这里发现不能插入重复值
这里发现,虽然不能重复,但是是可以为空值的
1.1.3default默认值约束
当插入数据的时候,列为空的时候,插入指定的默认值
-- 重新设置学生表结构
drop table student;
create table student (
id int not null,
sn int unique,
name varchar(20) default 'kown',
email varchar(20)
);
下面进行插入看看姓名为空的一个效果,发现当我的列为空的时候会插入自定义的值
1.1.4primary key主键约束
相当于unique和not null的结合,不重复也不能为空
-- 重新设置学生表结构
drop table student;create table student (
id int primary key,
sn int unique,
name varchar(20) default 'kown',
email varchar(20)
);
插入数据查看效果,当前表中有一条数据
当插入重复的数据之后发现直接就报错了,说明不能插入重复的数据
同时,当插入数据的时候id为空时就会报错,所以说明不能为空
对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1
当插入值的时候并没有插入id的值 由于设置了自增长所以会有一个自增的值。
1.1.5foreign key外键约束
外键用于关联其他表的主键或唯一键,语法:
foreign key (字段名) references 主表(列)
案例:
- 创建班级表classes,id为主键
-- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识
create table classes (
id int primary key auto_increment,
name varchar(20),
`desc` varchar(100) --``这个符号是数字esc下面的那个符号
);
对班级表插入数据
- 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id
-- 重新设置学生表结构
create table student (
id int primary key auto_increment,
sn int unique,
name varchar(20) default 'unkown',
classes_id int,foreign key(classes_id) references classes(id)
);
由于学生表的classes_id是被班级表的id约束的,所以插入的过程中如果插入班级表中没有的班级是会报错的,但是班级表中含有的班级就不会。
当插入一个班级表中没有的数据的时候就会报错。
classes表对student有一个约束作用,同时student对classes表也存在约束作用,当要删除classes表时会发现删除不掉!这里的显示意思就是说该表存在约束别人的条件不能进行删除
要删除classes表应该怎么办呢,只能先删除student表
二、内容重点总结
约束类型 | 说明 | 示例 |
NULL约束 | 使用NOT NULL指定列不为 空 | name varchar(20) not null, |
UNIQUE唯一约束 | 指定列为唯一的、不重复的 | name varchar(20) unique, |
DEFAULT默认值约 束 | 指定列为空时的默认值 | age int default 20, |
主键约束 | NOT NULL 和 UNIQUE 的 结合 | id int primary key, |
外键约束 | 关联其他表的主键或唯一键 | foreign key (字段名) references 主 表(列) |