美文网首页SQL笔记
SQL笔记--(4)--[完整性约束]

SQL笔记--(4)--[完整性约束]

作者: FengBli | 来源:发表于2017-03-16 19:39 被阅读0次

完整性约束:

保证授权用户对数据库所做的修改不会破坏数据的一致性;防止对数据的意外破坏

单个关系上的约束:


类型 含义
not null约束 已声明为主码的属性,不必显式声明为not null create table stu(name, varchar(20) not null);
unique约束 unique(A, B, C)指明A, B, C构成候选码;即:关系中的任意两个元组不能在所列属性上取值相同,但可以为null(除非已显式指明为not null) unique(name, addr)
check子句 check(P)指明:关系中每个元组都必须满足此谓词P create table section(semester varchar(6), check(semester in ('Fall', 'Summer', 'Spring', 'Winter')))

参照完整性


令关系rs的属性集分别是RS,主码分别是K_rK_s。如果要求对s中任意元组p,均存在r中元组t使得t.K_s = p.ALPHA,我们称S的子集ALPHA为参照关系rK_r外码(foreign key)

以上称为参考完整性约束,或子集依赖

create table(
...
dept_name varchar(20) references department
...);

以上代码,当违反参照完整性约束时,处理为拒绝执行导致完整性破坏的操作(即:此事务被回滚)

create table course(
...
foreign key (dept_name) references department
      on delete cascade
      on update set null
      on insert set default,
...);

以上代码,

  • 当删除department元组操作违反参照完整性约束时,系统并不拒绝此操作,而是“级联”删除course关系中相应元组;
  • 当更新department元组操作违反参照完整性约束时,系统并不拒绝此操作,而是参照域(此处为dept_name)设为null;
  • 当插入department元组操作违反参照完整性约束时,系统并不拒绝此操作,而是参照域(此处为dept_name)设为预设值。

assertion


create assertion credits_earned_constraint check
  (not exists ( select ID
                      from student
                      where tot_credits <> (select sum(credits)
                                                         from takes natural join course
                                                         where student.ID = takes.ID
                                                                   and grade is not null
                                                                   and grade <> 'F')));

相关文章

  • SQL笔记--(4)--[完整性约束]

    完整性约束: 单个关系上的约束: 参照完整性 令关系r和s的属性集分别是R和S,主码分别是K_r和K_s。如果要求...

  • 面试积累之数据库篇(六)

    事务的4大属性:原子性,隔离性,一致性,持久性 sql完整性约束:主键约束唯一约束检查约束外键约束默认约束 sql...

  • SQL——完整性约束

    完整性约束的作用在于保证授权用户对数据库所做的修改不会破坏数据的一致性。或者说,防止的是对数据的意外破坏。 单个关...

  • 数据库基础Database2-中级SQL

    数据库基础Database2 三 中级SQL 中级SQL主要包含形式更复杂的SQL查询、视图定义、事务、完整性约束...

  • SQL Sever 数据库之约束

    数据库的约束 一、创建、修改和删除约束 约束是SQL Server提供的自动强制数据完整性的一种方式,通过定义列的...

  • mysql基础2-数据完整性约束使用

    四、数据完整性约束 实体完整性、域完整性、引用完整性、自定义完整性 1、实体完整性主键约束、唯一约束、主键自增 2...

  • 2018.12.28 数据定义DDL-3.3/3.4

    3.3数据完整性约束 3.3.1 数据的完整性约束 3.3.2 主键约束 3.3.3 代替键约束 3.3.4 参照...

  • 101MySQL 基础课程--SQL 的约束

    SQL 的约束 约束分类听名字就知道,约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯...

  • SQL-完整性约束-2018.07.13

    完整性约束 数据类型完整性 非空约束 唯一键 主键约束 外键约束 默认值约束 标识列8 检查约束(CHECK)

  • Microsoft SQL Server数据库完整性约束、索引、

      本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束、索引与视图创建等操作的方法。...

网友评论

    本文标题:SQL笔记--(4)--[完整性约束]

    本文链接:https://www.haomeiwen.com/subject/sfgjnttx.html