数据完整性约束指的是:数据的准确性和可靠性。
完整性约束
实体完整性:能唯一标示一个实体
主键约束primary key
唯一约束unique
主键自增auto_increment
域(字段)完整性:
非空约束:not null
默认约束:default
引用完整性:一张表中通用列的取值必须参考另外一张表主键字段。
外键约束:foreign key
自定义完整性:
check约束: 在mysql中不能使用
A.实体完整性
实体:记录
实体完整性约束保证数据记录之间是准确的(能够唯一标识一个实体)。
主键约束: 唯一的,不能为空。 primary key
#1.添加主键约束
create table student(
sid int primary key,
sname varchar(20)
);
#2.添加主键约束
create table student(
sid int,
sname varchar(20),
primary key(sid)
);
#3.表创建之后添加主键约束
create table student(
sid int,
sname varchar(20)
);
#主键约束
alter table student add CONSTRAINT PK_SID primary key(sid);
1.字段选择?
唯一的,不要选择业务字段。
2.主键添加
一张表中只能有一个主键,但是可以有联合主键(多个字段整体作为主键)。
3.每张表必须设置主键
唯一约束: 不能重复 可以添加多个(unique)
alter table userinfo add CONSTRAINT UQ_CARD unique(card);
主键自增: 从1开始,每次自身加1(oracle不能使用,序列)
create table student(
sid int primary key auto_increment,
sname varchar(20)
);
删除约束:
alter table student drop primary key
B.域完整性
域: 字段
类型约束:
非空约束: 不能为空 not null
默认值: default 值
#非空和默认值
create table student(
sid int primary key auto_increment,
sname varchar(20) not null,
gender bit(1) default 1
);
C.引用完整性
一张表中通用列的取值必须参考另外一张表主键字段。
外键约束:foreign key
alter table student add CONSTRAINT FK_CID foreign key(cid)
REFERENCES classroom(cid);
注意:
1.主外键关联
2.外键关联字段名称可以不一样,但是类型必须一致。
D.自定义完整性
check约束: 在mysql中不能使用
Alter table student add constriaint check(age between 1 and 150)