数据库完整性 ch.5
数据库的完整性 是指 数据的正确性(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的更多相关文章
- 数据库系统学习(八)-SQL语言与数据库完整性和安全性
第八讲 SQL语言与数据库完整性 重难点 数据库完整性的概念 关系数据库 防止和避免数据库中不合理数据的出现 输入错误,操作失误,程序处理错误等 完整性约束条件的一般形式 对O操作集合,当出现A情况时 ...
- 检查sqlite数据库完整性
最近遇到一个问题,用户数据丢失,拿到用户数据库文件以后,发现数据库损坏. database disk image is malformed 因此希望可以找到一种方法,可以检测出来数据库是否损坏,经过g ...
- 数据库设计 ch.7
数据库建设的基本规律 三分技术 七分管理 十二分基础数据 阶段 需求分析阶段 概念设计阶段 逻辑设计阶段 物理设计阶段 数据库实施阶段 数据库维护阶段 1 需求分析 2 概念设计 形成概念模型 3 逻 ...
- 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF
1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载 链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...
- 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...
- MySQL学习笔记02_数据库和表的基本操作
02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...
- C#语言和数据库基础
第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...
随机推荐
- ThreadLocal简析
简介 ThreadLocal在Java多线程开发中常见的一个类,在面试中也经见的问题,比如ThreadLocal的作用是什么,ThreadLocal的实现原理是什么等等.ThreadLocal是jav ...
- 移动端自定义输入框的vue组件 ----input
<style scoped lang="less"> .keyboard { font-family: -apple-system, BlinkMacSystemFon ...
- JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台
此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...
- C++ #define,typedef,using用法区别
一.#define #define 是宏定义命令,宏定义就是将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替,是预编译命令,因此会在预编译阶段被执行 1.无参宏定义 无参宏的宏名 ...
- 水题两篇 Dream & Find Integer (HDU 6440/6441)
// 出自ICPC 2018网络赛C - Dream & D - Find Integer // 对大佬来讲的水题,本菜鸡尽量学会的防爆零题... // 今晚翻看vjudge昨日任务上的C题, ...
- 群晖引导是uefi还是传统模式的识别
看左下角光标闪不闪,不闪的是uefi,在闪的就是传统
- Java对象的存活判断
Java对象的回收是有依据的,普通的方式是计算法,比如被引用,对象计数器➕1,不被引用,➖1,回收的时候,发现是0则清除,但是不能解决两个对象互相被引用的情况,Java采用可达性分析,通过某个对象作为 ...
- rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法-转
原文:http://raksmart.idcspy.com/781 在CentOS上的Canon LBP2900安装打印机驱动,中间遇到了一些问题,主要是安装rpm包出现的依赖问题,现在解决了,现在简 ...
- vue报错 error: data.push is not a function
data定义出错,data需定义为一个数组 => data : [ ]
- ElasticSearch入门介绍之安装部署(二)
散仙,在上篇文章对ElasticSearch整体入门作了个介绍,那么本篇我们来看下,如何安装,部署es,以及如何安装es的几个比较常用的插件. es的安装和部署,是非常简单方便的,至少这一点散仙在es ...