文章目录
- 前言
- 1. 数据库约束
- 1.1 not null
- 1.2 unique
- 1.3 primary key,主键约束
- 1.4 default,设置默认值
- 1.5 foreign key 外键约束
前言
数据库约束,在实际应用中,由于某些特定的要求,例如学生的学号不能为空,学生表中的班级id,在班级表中要能存在,所以,为了保证数据的完整性,数据库设置了数据库约束功能。下面,我们来康康有哪些约束和约束的功能吧~
1. 数据库约束
1.1 not null
非空约束,避免某些重要数据为空。
1.2 unique
有些数据是不能有重复的,例如没有学号重复的同学。上述两个约束将在后面进行演示
1.3 primary key,主键约束
主键,用主键约束的数据非空且不能重复。
一个表只能有一个主键。
not null 与 primary key联合使用可起到主键的作用。
如下图所示·。
联合主键,将多个列放在一起共同作为主键
create table student(id int, name varchar(20), classid int,primary key(id,name));
效果如下图,意思是只要知道这个学生的id和name就可以找到这个学生,当然这里是不合法的,因为这里将id和name设置成联合主键,学生的id可能出现重复,不合法.
自增主键
例如学生的学号,不能重复,为了保证这种性质,我们设置了自增主键.
在使用自增主键时,学生的学号可以为null,系统会按顺序为学生自动设置学号.
如下图所示
注意,若是自己设置了一个id,那么自增主键下次会在这个id后面自增,如下图,我们自己设置了一个同学id为5,那么下次使用自增主键时,id为6.
1.4 default,设置默认值
有些数据,暂时不确定的时候可以不插入,这个default可以将为设置的值标记为default.如下图,只设置了id,name被填上默认值"无名氏"
1.5 foreign key 外键约束
外键约束针对多个表之间的约束.例如,在学生表中设置classid,在class表中设置id,则学生表中的classid号,在class中的classid一定要存在,否则则报错. 这里学生表为主表,班级表为副表
将class表的classid设置为student的外键
create table student(id int primary key auto_increment,name varchar(20),classid int,foreign key(classid) references class(id));
如下图,在学生表插入班级号1,但由于班级号的id中还没有1,不匹配,报错.
所以,在设置学生的classid时,要保证在class中,有和classid匹配的值.
外键约束也约束副表,由于class中的id被学生表引用,那么被引用class的id不能被删除,否则报错.