1.实体完整性
能够唯一标识表中的每一条记录
实现方式:主键、唯一键、auto_increment属性
2.域完整性
表中特定列数据的有效性,确保不会输入无效的值
实现方式:类型、缺省值、检查约束、空值
3.引用完整性
维护表间数据的有效性、完整性
实现方式:建立外键联系另一表的主键
4.自定义完整性
根据业务处理流程定义的特定业务规则
实现方式:存储过程、触发器、规则
二。使用约束的目的是什么?
确保表中数据完整性
常用的约束类型有哪些?
主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
(一个表中,一般只有一个主键约束)
alter table 表名 add constraint pk_约束名 primary key(字段);
删除约束:
alter table 表名 drop constraint 约束名;
唯一约束(Unique Constraint):要求该列数据唯一,允许为空,但只能出现一个空值
alter table 表名 add constraint uk_约束名 unique(字段);
检查约束(Check Constraint):某列取值范围限制、格式限制等
默认约束
外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列
数据表删除语句
drop table stuinfo;
创建表
create table stuinfo(
sid int primary key auto_increment,
sname varchar(20) not null,
sbrithday date,
gradeId int not null,
sage int
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
添加唯一约束 unique(字段)
alter table stuinfo add constraint uk_sname unique key(sname);
删除唯一约束 (drop index 约束名)
alter table stuinfo
drop index uk_sname;
添加检查约束 check(条件判断) 年龄只能大于1990-01-01
alter table stuinfo add constraint ck_sbir check(sbrithday>'1990-01-01');
添加一个检查约束,限制年级只能在 (1,2,3)三个值之间选择一个
alter table stuinfo add constraint ck_gid check(gradeId in(1,2,3));
限制某一个字段只能在某个区间时,使用between ... and ...
年级表
create table grade(
gid int not null,
gname varchar(10)
);
foreign key 外键约束: 主表------从表
外键约束应该是添加在从表上
先需要给主表被引用的字段添加主键约束
alter table grade add constraint pk_gid primary key(gid);
alter table stuinfo add constraint fk_gradeId foreign key(gradeId) references grade(gid);
查看表结构
desc studentinfo;
修改表名
alter table stuinfo rename to studentinfo;
修改字段描述
alter table studentinfo modify sbrithday varchar(20);
添加新字段
alter table studentinfo add sex char(4) after sname;新增字段在指定已存在的字段之后
alter table studentinfo add aa char(4) first;新增一个字段到第一位置
删除字段
alter table studentinfo drop column aa;