数据库5:数据的完整性

一、学习目标

二、选择&填空&判断(基础知识

§数据库完整性概述
数据库的完整性就是数据的正确性和相容性
完整性:防止数据库中存在不正确的数据,防范不合语义的、不正确的数据
安全性:防止恶意破坏和非法存取,防范非法用户的非法操作
维护完整性:
        提供定义完整性约束条件的机制
        提供完整性检查的方法
        违约处理(拒绝NO ACTION、级联 CASCADE

§实体完整性

-就是主码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;

三、大题

可能就是让你写出一些约束或者触发器,主要就是把上面的代码块都记住就可以了


现在可以回去看一下学习目标,是不是都会了。

猜你喜欢

转载自blog.csdn.net/karonneveralone/article/details/122311046