数据库的完整性 是指 数据的正确性(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. vue2 + koa2全栈部署

    1.首先打包前端上传 修改config下的index.js 代理地址为服务器IP index: path.resolve(__dirname, '../dist/index.html'), asset ...

  2. nginx 解决问题

  3. 朴素贝叶斯算法的python实现方法

    朴素贝叶斯算法的python实现方法 本文实例讲述了朴素贝叶斯算法的python实现方法.分享给大家供大家参考.具体实现方法如下: 朴素贝叶斯算法优缺点 优点:在数据较少的情况下依然有效,可以处理多类 ...

  4. 【solr】Solr与JDK对应版本关系,Tomcat与JDK

    Solr与JDK对应版本关系,Tomcat与JDK版本对应关系 最新在部署solrCloud集群,由于自己机器上用的JDK都是JDK1.7的,然后我就从网上下载了最新下载了最先的solr6.6.0和最 ...

  5. Data too long for column

    一篇文章的正文,需要很多字数,默认就是255,不够 @Lob @Basic @Type(type = "text") @Column(name = "detail&quo ...

  6. neo4j的搭建和实例使用

    一. 简介 neo4j是当今最流行的图数据库,基于 节点+关系 的架构,保存了图形数据的基本元素.同时,数据库也支持通过基础数据元素和独特的CQL查询语法,快速方便的检索.构建复杂的图表关系结果. 二 ...

  7. 如何妥善处理WebBrowser对Javascript的错误问题,阻止JS弹出框,提高用户体验

    由于项目需求,最近转战客户端,开始搞浏览器开发.众所周知,现在在微软平台上开发浏览器,最常用的方法就是扩展Webbrowser,但是首先要清楚的是,WebBrowser控件仅仅是对WebBrowser ...

  8. vue-cli# 项目结构

    引自:https://segmentfault.com/a/1190000007880723 http://blog.csdn.net/hongchh/article/details/55113751 ...

  9. R语言画图教程之盒形图

    R语言画图教程之盒形图 我们之前有分享过一系列的R语言画图代码(PCA图.Pathway图.火山图.RDA图.热图),今天再来补充一个盒形图(箱形图)的代码. 以下代码只是示例,不能直接搬来用哦,注意 ...

  10. Java虚拟机系列(三)---内存溢出情况及解决方法

    因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法 ...