一.作用
数据的准确性和可靠性
二.分类
实体完整性,域完整性,引用完整性,自定义完整性
三.详细
1.实体完整性
①实体:记录
②实体完整性约束保证数据记录之间是准确的(能够唯一标识一个实体)
③实体完整性包含主键约束,唯一约束,主键自增三种
1)主键约束【例如id】
特点:唯一的,不能为空
关键字:primary key
添加约束语法:alter table 表名 add constraint 约束名 primary key(字段名);
约束名:PK_字段
删除约束语法:alter table 表名 drop primary key;
create table student(
id int primary key,
name varchar(20),
age int
)
表已经创建好,需要添加主键约束
alter table 表名 add constraint 约束名 primary key(字段名);
约束名:PK_字段
alter TABLE userinfo add uid INT;
alter table userinfo add CONSTRAINT PK_uid PRIMARY KEY(uid)
删除约束
alter table userinfo drop primary key;
2)唯一约束【例如身份证字段】
特点:不能重复,可以为空,可以添加多个
关键字:unique
添加约束语法:alter table 表名 add constraint 约束名 unique(字段名);
约束名:UQ_字段名
删除约束语法:alter table表名 drop key 约束名;
创建表时:
create table student(
id int PRIMARY key,
name VARCHAR(20),
age int,
idcard VARCHAR(30) unique
)
表已创建好,需要添加唯一约束
alter table userinfo add CONSTRAINT UQ_tel unique(tel)
3)主键自增
特点:从1开始,每次自身加1(在oracle中不能使用)
关键字:auto_increment
只能在创建表时添加主键自增的约束,而且必须是主键才能添加!!!
①添加主键自增
create table student(
id int PRIMARY key auto_increment,
name VARCHAR(20),
age int,
idcard VARCHAR(30) unique
)
②删除主键自增约束
----去除自增熟悉
----删除主键约束
# 去掉自增性
alter TABLE student modify id int;
# 删除主键
alter table student drop primary key;
2.域完整性(只能在创建表时添加!!!!)
域:字段
域完整性约束保证字段的数据准确的
域完整性包括类型约束,非空约束,默认值
1)类型约束
2)非空约束
特点:字段不允许为空
关键字:not null
3)默认值
特点:设置默认的值
关键字:default
create table student(
id int PRIMARY key auto_increment,
name VARCHAR(20) not null,
age int,
idcard VARCHAR(30) unique,
sex char(2) DEFAULT '女'
)
3.引用完整性
一张表中通用列的取值必须参考另外一张表的主键
引用完整性有外键约束
1)外键约束
特点:设置外键的字段的取值只能参考另一张表中同一个字段的值
关键字:foreign key
添加外键约束的语法:alter table 表名1 add constraint 约束名 foreign key(字段名)
reference 表名2(字段名)
删除外键的语法:alter table 表名 drop froeign key 约束名;
# 建立一个学生表,其中class_id是与班级表中的id是一致
create table student(
id int PRIMARY key auto_increment,
name VARCHAR(20) not null,
age int,
idcard VARCHAR(30) unique,
sex char(2) DEFAULT '女',
class_id INT
)
建立班级表
create table classroom(
class_id int PRIMARY KEY,
class_name VARCHAR(30)
)
建立两个表的外键约束
alter table student add constraint FK_class_id FOREIGN KEY(class_id) REFERENCES classroom(class_id)
删除外键的语法:
alter table student drop foreign key FK_class_id