文章目录
目录
约束的分类
1,什么是约束?
约束就是表中的限制条件。
2,分类:
列级约束:
2.1 非空约束 not null
2.2 唯一性约束 unique
表级约束
2.3主键约束约束 primary key
2.4 外键约束 foreign key
一、非空约束
含义:约束的字段不能null,必须要有值。
示例:name varchar(20) not null
二、唯一性约束
含义:约束的字段不能有重复,但是可以为null。
示例:stu_id int unique;
三、主键约束
1、含义
1.给某个字段添加主键字段后,该字段不能为空且唯一。效果和not null unique相同,但是本质不同;主键字段还会默认添加索引-index'。
2. 一张表必须要有主键且只有一个,主键是表的唯一标识。即使两张表数据完全一样,但是主键值不一样,则认为两种表不同。
2、单一主键约束和复合主键
主键虽然只能有一个,但是一个主键可以添加多个字段,称为复合主键。给单一字段添加主键约束成为单一主键约束。
示例一、单一主键约束
create table student(
id int(10),
name varchar(32),
primary key(id)
);
或
create table student(
id int(10) primary key,
name varchar(32),
);
示例二、复合主键约束
create table student(
id int(10),
name varchar(32),
primary key(id,name)
);
只有id 和 name 都重复才算重复
注意:复合主键只有主键中的所有字段都重复才算重复
3、主键自增
含义:auto_increment。自动从1开始生成主键值
示例:
create table student(
id int(10) primary key auto_increment,
name varchar(32),
);
四、外键约束
含义:
某个字段添加外键约束以后称为外键字段 外键字段中的每一个数据称为外键值。外键也有单一字段外键和复合外键。一张表中可以有多个外键字段。
示例
1、什么时候需要用外键?
在表中存在一对多关系的时候,使用外键。且是在多的一方添加外键。
2、设计一个数据库用来描述学生和班级之间的关系
学生表(多),班级(一)。典型的一对多关系,可以在学生表中添加外键。
CREATE TABLE class(
cno int PRIMARY KEY,
name VARCHAR(128) NOT NULL UNIQUE--非空约束、唯一性约束
);
CREATE TABLE student(
stu_id int PRIMARY KEY,--主键约束
name VARCHAR(32) NOT NULL,非空约束
classno INT,-- 这里的值取至class表的cno。所以为这个字段添加外键约束。
CONSTRAINT student_class_fk FOREIGN KEY(classno) REFERENCES class(cno)
);
注意:
1、添加了外键约束的字段,添加数据的时候只能添加父表中已有的数据,否则会添加失败。
2、如果设置了级联,删除或者更新父表的数据,子表也会删除或者更新。如果没有设置,更新父表子表会更新;但是删除会失败。
3、如果子表中有数据,且该数据引用了父表中数据a,则不能删除父表中的数据a。可以将子表中的数据a设为null,解除关联可以删除。
4、无论父表、子表是否有数据,都不能删除父表,因为外键是表级约束。