一、学习目标
二、选择&填空&判断(基础知识
§实体完整性
-就是主码PRIMARY KEY
-单属性可以写在列级或者表级,多属性的主码只能定义在表级
定义在列级
SNO CHAR(9) PRIMARY KEY
定义在表级
CONSTRIANT PK_SNO PRIMARY KEY(SNO)
COSNTRAINT PK_SNO_CNO PEIMARY KEY(SNO,CNO)
-实体完整性检查检查以下两个方面,违法一个都要拒绝操作:
主码是否唯一?
主码的各个属性是否为空?
-检查方式:全表扫描,不过主码一般都有索引
§参照完整性
-即为外码FOREIGN KEY
-被参照的表不能随意删 改——违反完整性可以灵活应对默认是拒绝
-参照表不能随意增 改——违反完整性一律被拒绝
NO ACTION ——拒绝执行
SET -NULL——设为空值
CASCADE——级联操作
定义在表级
CONSTRAINT FK_SNO FOREIGN KEY(SNO) REFERENCES Student(SNO)
ON DELETE CASCEDE,ON UPDATE CASCADE,(NO ACTION)
§用户定义的完整性
-约束条件分为:
属性上的约束条件
元组上的约束条件
-属性上的约束条件
NOT NULL
UNIQUE
CHECK(里面写条件表达式)
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) UNIQUE ,
Sex CHAR(2),
Grade SMALLINT CHECK (Grade>=0 AND Grade <=100),
CONSTRAINT PR_SNO_CNO PRIMARY KEY (Sno, Cno),
CONSTRAINT CK_CNO_SEX CHECK(Sex="MAN" AND CNO~="1110")
);
-属性上的约束条件检查和违约处理 : 在插入和修改属性值的时候检查
-元组上的约束:CHECK可以设置不同属性的约束条件
§完整性约束命名子句
-创建:CONSTRAIN 名字 约束
约束主要就五个UNIQUE\NOT NULL\CHECK\PRIMARY KEY\FOREIGN KEY
-修改完整性限制:其实就是删了再从新建一个
ALTER TABLE <TABLE NAME>
DROP CONSTRAINT<约束名> [CASCADE|RESTRICT]
ALTER TABLE<TABLE NAME>
ADD CONSTRAINT <约束名> 那五个约束类型
-查询数据库中的约束
§断言
这个我感觉不会考,因为ORACLE数据库根本不支持
-断言就是涉及多个表或聚集操作的比较复杂的完整性约束
§触发器 trigger
-是事件驱动的特殊过程,可以实施更为复杂的检查和操作
-定义触发器(以下全部是ORACLE写法)
CREATE TRIGGER TRIGGER_NAME
AFTER[BEFOR]
CREATE OR UPDATE OR DELETE
ON TABLE_NAME
[REFERENCE OLD AS OLDTUPLE NEW AS NEWTUPLE]
[FOR EACH ROW]
BEGIN
IF(:OLDTUPLE..................)
THEN [DO SOMETHING]
END IF;
END;
-删除触发器
DROP TRIGGER TRIGGER_NAME;
三、大题
可能就是让你写出一些约束或者触发器,主要就是把上面的代码块都记住就可以了
现在可以回去看一下学习目标,是不是都会了。