数据库的完整性 是指 数据的正确性(correctness) 和 相容性 (compat-ability)

5.1 实体完整性

定义

对单属性码的说明有两种方法,一种是定义为表约束条件,一种是定义为列级约束条件

多属性吗只能定义成表级约束条件

实体完整性检查和违约处理

检查主码是否唯1 , 检查主码的各个属性是否非为空。

一般的数据库都会在主码上建一个索引

5.2 参照完整性

5.2.1 参照完整性检查 和 违约处理

如果要修改 参照表违约了 直接拒绝
如果修改被参照表违约 那么根据用户的设置进行处理

5.3 用户定义的完整性

属性上的约束条件

非空
唯一
检查列值是否满足一个条件 check 语句

不满足就拒绝

元组上的约束条件

check 语句可以设置针对元组的约束条件

5.4 完整性约束命名字句

1完整性约束命名字句名

constraint < 完整性约束条件>

完整新约束条件包括 unique not null primary key foreign key check 等

方便进行完整性的修改 删除 添加等

修改:
alter table
drop constraint C4;

alter table Student drop contraint C4;
alter tabele student
add constraint C1 check(Son between 2313 and 23434 )
先删除再添加新的约束

5.5 域的完整性限制

建立一个域 并且声明取值范围

create domin GrenderDomin char(2) check(value in ( 'asas' ,'sdsd') ;

Ssex 的说明就可以简写为
Ssex GerndeDomin

create domin GenderDomin char(2)
constraint GD check(value in ("nan","nv"))

alter domin GenderDomin drop constraint GD ;

alter domin GenderDomin add constraint GDD check(value in (1,0))

5.6 断言

可以使用断言机制, 使得任何操作违反了断言都会被拒绝执行
create assertion

check 字句与 where 语句类似

create asssertion asse_sc_cnum2
check (60>all(select * from *** where **))

5.7 触发器

触发器又叫做
事件条件动作规则 event - conditon -action
当特定的事件发生的时候 , 对 规则的条件进行检查

触发器的格式是
create trigger
{before | after } on < 表名>
reference new|old row as
for each {row |statement }
[when ]

1 只有表的拥有着可以创建触发器,并且一个表上只有一定数量的触发器

2 触发器名必须是唯一的,在统一模式下

3 触发器必须定义在基本表上(视图是不被允许的

4触发事件可以是 insert update delete delete 也可以是这几个事件的组合 比如 insert or update 还可以是 update of (《触发列》,...) 指明修改那些列的时候触发

5触发器类型 : 可以分为 行级触发器fir each row 语句级触发器 for each statement
一个一次修改1000 行的操作 , 语句级触发器执行1 次, 行级触发器执行1000次
6 触发条件:触发条件为真的时候才会执行触发器的内容

7 触发动作体
可以是 匿名的PL/sql 过程快
也可以是调用存储过程

如果是行级触发器,那么可以使用 new old 引用update insert 事件之后的新址和 updaye delete 中的旧值
如果是语句级触发器就不行

crate trigger SC_U after update
reference
newrow as newtuple
oldrow as oldtuple
for each row
when(newtupel.grde>oldtuple.grade1.1)
insert into
**
values("sdasd,"'sda)

语句级触发器又 newtable 和 oldtable 可以引用

5.7.2 激活触发器

执行触发器的时候遵循以下顺序

执行before 触发器
执行激活触发器的sql 语句
执行after 触发器

多个before after 触发器 谁先创建谁执行。

5.7.3 删除触发器

drop trigger on

数据库完整性 ch.5的更多相关文章

  1. 数据库系统学习(八)-SQL语言与数据库完整性和安全性

    第八讲 SQL语言与数据库完整性 重难点 数据库完整性的概念 关系数据库 防止和避免数据库中不合理数据的出现 输入错误,操作失误,程序处理错误等 完整性约束条件的一般形式 对O操作集合,当出现A情况时 ...

  2. 检查sqlite数据库完整性

    最近遇到一个问题,用户数据丢失,拿到用户数据库文件以后,发现数据库损坏. database disk image is malformed 因此希望可以找到一种方法,可以检测出来数据库是否损坏,经过g ...

  3. 数据库设计 ch.7

    数据库建设的基本规律 三分技术 七分管理 十二分基础数据 阶段 需求分析阶段 概念设计阶段 逻辑设计阶段 物理设计阶段 数据库实施阶段 数据库维护阶段 1 需求分析 2 概念设计 形成概念模型 3 逻 ...

  4. 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF

    1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载  链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...

  5. 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...

  6. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  7. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

  8. Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx

    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...

  9. C#语言和数据库基础

    第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...

随机推荐

  1. raft学习

    http://thesecretlivesofdata.com/raft/ 选举 角色:  leader 领导者 Follower跟随者  Candidate候选者 如果跟随者在一定时间内,么有收到领 ...

  2. RabbitMQ代码操作之AmqpAdmin和RabbitListener

    AmqpAdmin:RabbitMQ系统管理功能组件(可以创建exchange,queue,Binding) @Test public void createExchange(){ //创建交换器 / ...

  3. laravel框架中使用QueryList插件采集数据

    laravel框架中使用queryList 采集数据 采集数据对我们来说真家常便饭,那么苦苦的写正则采集那么一点点东西,花费了自己大把的时间和精力而且没有一点技术含量,这个时候就是使用我们的好搭档Qu ...

  4. 深入浅出 Java Concurrency (27): 并发容器 part 12 线程安全的List/Set[转]

    本小节是<并发容器>的最后一部分,这一个小节描述的是针对List/Set接口的一个线程版本. 在<并发队列与Queue简介>中介绍了并发容器的一个概括,主要描述的是Queue的 ...

  5. OpenCASCADE圆与平面求交

    OpenCASCADE圆与平面求交 eryar@163.com 在 解析几何求交之圆与二次曲面中分析了OpenCASCADE提供的类IntAna_IntConicQuad可以用来计算圆与二次曲面之间的 ...

  6. CCA Spark and Hadoop 开发者认证技能点【2016只为hadoop达到巅峰】

    Required Skills 技能要求: Data Ingest 数据消化: The skills to transfer data between external systems and you ...

  7. kuangbin带我飞QAQ 并查集

    1. POJ 2236 给出N个点,一开始图是空白的,两个操作,一个是增加一个点(给出坐标),一个是查询两个点间是否相通,当两点间的距离小于D或者两点通过其他点间接相连时说这两个点相通.并查集维护,每 ...

  8. Leetcode938. Range Sum of BST二叉搜索树的范围和

    给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和. 二叉搜索树保证具有唯一的值. 示例 1: 输入:root = [10,5,15,3,7,null,18], L = 7 ...

  9. object and namespace

    http://effbot.org/zone/python-objects.htm 几点总结: (1) 类的基本属性 . id, returned by id(obj) . type, returne ...

  10. JEECMS自定义标签开发步骤2

    JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3']             <img src=&quo ...