数据完整性:实体完整性(主键,唯一性)
参照完整性 (外键约束)
值域完整性(检查约束 check)
约束:
主键约束:唯一的标示表中的记录。一个表只能建一个主键约束。
1.建表的同时加上主键。
要求:建学生表,学号为主键
create table xs1(
学号 char(6) not null primary key,
姓名 varchar(8) ,
出生日期 datetime);
create table xs1(
学号 char(6) not null ,
姓名 varchar(8) ,
出生日期 datetime,
primary key(学号)
);
学生成绩表,在学号和课程号的组合上建主键
create table xs_kc1(
学号 char(6) ,
课程号 char(3),
成绩 float,
primary key(学号,课程号)
);
2.修改表结构的时候添加上主键。
create table abc(
id int not null,
name varchar(8));
alter table abc
add primary key(id);
create table test(
id int not null auto_increment primary key,
name varchar(8),
birthday datetime);
唯一性约束:
create table xs1(
学号 char(6) not null ,
姓名 varchar(8) unique ,
出生日期 datetime,
primary key(学号)
);
create table xs1(
学号 char(6) not null ,
姓名 varchar(8) ,
性别 char(2) default '男',
出生日期 datetime,
primary key(学号),
unique(姓名)
);
alter table xs1
add unique(姓名);
外键约束
foreign key(字段名) references 表名(字段名)
要求成绩表中学号的数据应该来源于学生表里的学号数据。
create table xs_kc1(
学号 char(6) ,
课程号 char(3),
成绩 float,
primary key(学号,课程号),
foreign key(学号) references xs(学号),
foreign key(课程号) references kc(课程号));
alter table xs_kc1
add constraint fk_kch foreign key (课程号) references kc (课程号)
在原来的三张表上添加上主键,外键和唯一性约束。
emp:
empid name ..... headerid
领导编号来源于雇员编号。
check约束
check(条件)
check(性别 in('男','女'))
create table xs_kc1
(学号 char(6),
课程号 char(6),
成绩 float check(成绩 between 0 and 90),
primary key(学号,课程号),
foreign key(学号) references xs(学号) on delete cascade,
foreign key(课程号) references kc(课程号));
create table xs_kc1
(学号 char(6),
课程号 char(6),
成绩 float check(成绩 between 0 and 90),
constraint pk_xskc_xhkch primary key(学号,课程号),
constraint fk_xh foreign key(学号) references xs(学号) on delete cascade,
constraint fk_kch foreign key(课程号) references kc(课程号));