数据库完整性

  • 实体完整性

    • 在CREATE TABLE时用PRIMARY KEY定义,分为列级约束条件(写在列后面)和表级约束条件(写在表的最后)。

    • 定义主码相当于UNIQUE+NOT NULL。

    • 全表扫描十分耗时,因此会自动在主码上建立一个索引。如B+树索引,提高效率。

  • 参照完整性

    • 在CREATE TABLE时用FOREIGN KEY定义那些列为外码,用REFERENCES指明这些外码参照那些表的主码。

    • 违约处理:拒绝执行(NO ACTION)为默认策略,级联操作(CASCADE),设置为空值。

    • 违约处理实例:ON DELETE CASCADE,ON UPDATE NO ACTION.

    • 对于参照完整性,除了定义外码,还应该定义外码列是否允许空值。

  • 用户自定义完整性

    • 属性上的约束条件:NOT NULL,UNIQUE,CHECK短语(检查列值满足某表达式)

    • 元组上的约束条件:使用CHECK短语,可以设置不同列之间的取值相互约束条件。

    • (check短语里的内容同where语句)

  • 完整性约束命名子句

    • 创建语法:CONSTRAINT<约束名><约束条件>,实例:CONSTRAINT name CHECK(age>30)

    • 修改完整性限制,在ALTER TABLE时修改

    • 删除:DROP CONSTRAINT name

    • 增加:ADD CONSTRAINT name CHECK(num BETWEEN 1 AND 100)

    • 更新:先删除原来的约束条件,在增加新的约束条件

  • 域的完整性约束

    • 域是具有相同数据类型的值的集合。

    • CREATE DOMAIN建立域以及约束就可以用来定义属性。实例:CREATE DOMAIN name CHAR(5) NOT NULL

    • 可以用ALTER DOMAIN修改域。

  • 断言

    • 使用断言指定一般性的约束,任何使断言不为真值的操作都会被拒绝执行。

    • 语句格式:CREATE ASSERTION <断言名><CHECK子句>

    • 删除断言:DROP ASSERTION<断言名>

  • 触发器

    • 触发器即事件-条件-动作规则。当特定事件发生,对条件进行检查,成立就执行动作。

    • 触发器只能定义在基本表上,不能定义在视图上。

    • 触发事件可以为INSERT,DELETE,UPDATE或者为其组合,以及UPDATE OF<触发列>

    • 触发器类型有行级触发器(FOR EACH ROW)和语句级触发器(FOR STATEMENT)

    • 格式


 CREATE TRIGGER <触发器名>
{BEFORE|AFTER} <触发事件> ON<表名> //指明触发器激活时间,
REFERENCING NEW|OLD ROW AS<变量>
FOR EACH {ROW|STATEMENT}
[WHEN<触发条件>]<触发动作体>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库完整性 实体完整性 实体完整性:PRIMARY KEY列级 约束条件CREATE TABLE Student...
    iOS_愛OS阅读 4,298评论 0 1
  • 一、实体完整性 定义实体完整性: 1.在CREATE TABLE中使用PRIMARY KEY定义(列级和表级皆可)...
    一村之里正阅读 5,276评论 0 0
  • 一、选择题1、完整性检查和控制的对象是(A、C),防止它们进入数据库。安全性控制的防范对象是(B、D),防止他们对...
    exmexm阅读 5,860评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,486评论 19 139
  • 实体-联系模型 基本概念 实体和属性 实体是客观存在并且可以相互区分的任何事物属性是实体所代表事物具有的某种特性每...
    我家有个小太阳阅读 11,767评论 1 8