大学毕业了,某猛男出售二手的大学高数课本。
书边的广告词:“九五成新,有补考成绩单为证!
1、 数据库的完整性控制定义:数据库中完整性是指数据的正确性、有效性、相容性,防止错误的数据进入数据库。保护数据以防止合法用户无意中造成的破坏,确保用户所做的事情是正确的。
a) 正确性(Correctness)是指数据的合法性,比如数值数据中只能含数字而不能含字母
b) 有效性(Validity)是指数据是否属于所定义的有效范围
c) 相容性(Consistency)是指表示同一事实的两个数据应相同,不一致就是不相容
2、 SQL中的完整性约束
a) 域约束:对数据类型加以约束
Create domain域约束名字数据类型
b) 基本表约束:对基本表加以约束
i. 候选键(主键)
primary key (<列名序列>) 或Unique (<列名序列>)
ii. 外键
Foreign key(<依赖表列名序列>) references <参照表> (<参照表列名序列>) [ on
delete/update <参照动作>]
操作动作(如果参照表删除或更新)有:
No action:对依赖表没有影响
Cascade:将依赖表中的值一起删除/更新
Restrict:依赖表中外键没有对应值时才能删除/修改,否则拒绝
Set null:将依赖表中被删除/修改的外键值置为空
Set default:将依赖表中被删除/修改的外键值置为设置的默认值
iii. 检查约束:对单个关系的元组值加以约束,尽可能不要涉及其他关系
Check(<条件表达式>)
c) 断言:如果完整性约束设计多个关系,那么采用断言机制书写完整性约束
create assertion <断言名> check
(<条件表达式>)
d) 触发器:)是一个能由系统自动执行时对数据库进行完整性约束的语句
3、 SQL3的触发器
a) 定义:触发器(Trigger)是一个能由系统自动执行时对数据库修改的语句,也称为主动规则(Active Rule)或事件-条件-规则(Event-Condition-Action Rule,ECA规则)
Create trigger触发器名
After/instead of/before
update/delete/insert on table|view
referencing
OLD AS
NEW AS
触发动作
b) 组成
i. 事件:对数据库的插入、删除、修改等操作
ii. 条件:将测试条件是否成立,成立的话就执行动作,否则什么也不做;
iii. 动作:满足预定的条件,就由DBMS执行这些动作。
c) 结构
触发器命名
动作时间触发事件目标表名
旧值和新值的别名表
动作间隔尺寸
触发动作 动作事件条件
动作体
i. 动作时间:定义了何时想要执行触发器动作
1. Before在触发事件进行以前
2. After在触发事件完成以后
3. Instead of在触发事件发生时
ii. 触发事件:定义了激活触发器的SQL数据更新语句的类别
1. Update只有update可以加of +属性
2. Delete
3. insert
iii. 目标表:当该表被修改、删除、插入时,将激活触发器(on短语)
iv. 旧值和新值的别名表
1. Update用OLD AS和NEW AS
2. Delete用OLD AS
3. Insert用NEW AS
v. 触发动作:定义了当触发器被激活时想要它执行的SQL语句
1. 动作间隔尺寸:
a) For each row
b) For each statement
2. 动作事件条件:当触发器激活时,如果条件是True则执行,否则不执行
3. 动作体:当触发器被激活时想要DBMS执行的SQL语句
零测试