目录

1实体完整性(主键)

1.1实体完整性检查

1.2实体完整性定义

1.3实体完整性删除

2.参照完整性(外键)

2.1参照完整性检查

2.2参照完整性定义

2.2参照完整性删除

3.用户定义的完整性

3.1属性上的约束条件(列级完整性约束)

3.2元组上的约束条件(表级完整性约束)

4断言(Mysql已淘汰)

4.1创建断言

4.2删除断言

5.触发器

5.1创建触发器

5.2删除触发器

5.3显示触发器


 

数据库完整性:数据库完整性约束指数据的正确性和相容性

 

1实体完整性(主键)

1.1实体完整性检查

主码唯一且其各属性不为空

主码定义时自动创建索引,提高实体完整性检查速度

 

1.2实体完整性定义

列级约束条件定义

Create table 表名(

        列名 int primary key,

        …

);

表级约束条件定义

Create table 表名(

        …

        primary key(列名1,[列名2,...])

);

多个属性作为主键时,只能使用表级约束条件定义方法

alter table语句定义

Alter table 表名 add primary key(列名1,[列名2,...]);

 

1.3实体完整性删除

Alter table 表名 drop primary key;

 

2.参照完整性(外键)

R(Kr,F,…)----->S(Ks,…)

F是Ks的外码,F不是基本关系R的主码,Ks是基本关系的S的主码

基本关系R称为参照关系,基本关系S称为被参照关系或目标关系

F与Ks需定义在同一个域上,F上的值为空值或Ks上的某个取值

 

2.1参照完整性检查

对目标关系S中的某一元组进行更新操作时,参照关系R中的外码存在对欲更新元组中被引用属性值的引用时,会出现参照不一致问题,解决策略如下:

级联操作:连带删除参照关系S中的相关元组

拒绝操纵:拒绝该更新操作

 

2.2参照完整性定义

表级约束条件定义

Create table 表名(

       …

       Constraint foreign key 外键名(列名1,[列名2,...]) 
            
          references 被参照表名(列名1,[列名2,...])

            [ On delete cascade       //级联操作

              On update no action ]   //拒绝执行,默认

);

alter table语句定义

Alter table 表名 add foreign key 外键名(列名1,[列名2,...]) references 被参照表名(列名1,[列名2,...]);

 

2.2参照完整性删除

Alter table 表名 drop foreign key 外键名;

 

3.用户定义的完整性

3.1属性上的约束条件(列级完整性约束)

列值非空:not null

列值唯一:unique

列值默认值:default 值

列值自增:auto_increment

列值检查:check (条件表达式)(Mysql已淘汰)

 

3.2元组上的约束条件(表级完整性约束)

Create table 表名(

        …

        Constraint 约束名 check(条件表达式)(Mysql基本已淘汰)

);

 

 

4断言(Mysql已淘汰)

4.1创建断言

Create assertion 断言名 check(条件判断句);

 

4.2删除断言

Drop assertion 断言名;

 

5.触发器

5.1创建触发器

Create trigger 触发器名

Before|After  Insert | Update | Delete on 表名

For each row | statement

语句;
eg:

DELIMITER $$

create trigger tri_test 

before insert on table_a 

for each row

begin

declare msg varchar(200);

if new.a >10 then

set @sum = new.a;

elseif new.a <10 then

   set msg = "插入数值需大于或等于10,请重试!";  

   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg; 

end if;

end $$

DELIMITER ;

 

5.2删除触发器

Drop trigger 触发器名;

 

5.3显示触发器

Show trigger \G;