数据库SQL(五):Integrity Constraints(完整性约束)
文章目录
- 1、why
- 2、what
1、why
为什么要有完整性约束呢?
因为完整性约束可以保证用户修改数据库时不会破坏数据库的一致性,就是说不会将不满足应用需求的数据存入数据库。
2、what
Integrity Constraints are specified when schema is defined.
Integrity Constraints are checked when relations are modified.
也就是说,定义数据库schema的时候说明完整性约束,修改数据库表的时候检验是否违反了完整性约束。
完整性约束的类型:
key和foreign key是常用的的约束;
基于值的约束与应用数据管理需求相关,例如房价不能为负数,GPA不能超过4等
基于元组的约束:属性之间的约束
断言:一般指数据库中所有的表需要满足的约束,检测代价很大。
- 单一关系上的约束:
Not null,这个约束在应用层面经常遇到:注册时的必填项。
Check子句完成值的约束,这个例子说明了semester这个属性的取值为枚举的四个值,尽管数据类型为varchar。
Referential Integrity(引用完整性)
Ensures that a value that appears in one relation for a given set of attributes also appears for a certain set of attributes in another relation.
Example: If “Biology” is a department name appearing in one of the tuples in the instructor relation, then there exists a tuple in the department relation for “Biology”.
Let A be a set of attributes. Let R and S be two relations that contain attributes A and where A is the primary key of S. A is said to be a foreign key of R if for any values of A appearing in R these values also appear in S.
外码是一种数据的完整性约束,如果在department表中,某个department值没有出现过,则在instructor表中不能出现这个department值,即不能引用。总结就是,存在的才能被引用。
参照完整性约束的级联操作: on delete cascade/ on update cascade
外码依赖链:在链的一端做的删除或修改操作会影响整个链。
例题解释:定义course表时,其中的属性dept_name是外键,dept_name varchar(20) references department ,如果加入了on delete cascade和on update cascade声明,那么删除或修改department表中的记录导致这个参照完整性约束被违反,删除或修改不会被系统拒绝,而是对course表进行“级联”删除或修改。级联动作也可以是set null, set default
数据库SQL(五):Integrity Constraints(完整性约束)相关推荐
- [Qt教程] 第25篇 数据库(五)SQL表格模型QSqlTableModel
[Qt教程] 第25篇 数据库(五)SQL表格模型QSqlTableModel 楼主 发表于 2013-5-21 20:36:22 | 查看: 923| 回复: 7 SQL表格模型QSqlTable ...
- Kingbase数据库实验五 PL/SQL程序设计
Kingbase数据库实验五 PL/SQL程序设计 一.实验目的 二.实验内容及源代码 一.实验目的 能够使用流程控制语句完成简单程序的编写. 能够使用系统函数. 能够自定义简单地函数,并调用函数 ...
- 【校招VIP】数据库基础之sql五十道题
考点介绍: 数据库在测试工程师的面试过程中也是常问的一项.面试有一定的层次性,如bat级别公司每个点都会深入,而有些公司则只会问到表层,所以每个领域都分为必须掌握和深入了解这两个部分. 本期分享的数据 ...
- Oracle数据库实验五SQL语句应用
Oracle数据库SQL语句应用 1. 以 bs 用户登录 BOOKSALES 数据库,将下列表(表 A-7 至表 A-12)中的数据插入 到数据库的相应表中 在插入第4第5个表的数据时可能会报违反完 ...
- 数据库+SQL专场(持续输出)
文章目录 前言 数据库系统 特点 数据库管理系统 SQL语言 (数据库操纵语言)DML 存储过程(Stored Procedure) 数据库事务 关系数据模型 关系模式 关系数据结构 关系操作集合 连 ...
- 关于数据库SQL优化
1.数据库访问优化 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬 ...
- Mysql数据库(五)——mysql事务及引擎
Mysql数据库(五)--mysql事务及引擎 一.事务 1.事务的概念 2.事务的ACID特点 ①.原子性(Atomicity) ②.一致性(Consistency) ③.隔离性(Isolation ...
- 数据库sql课程设计_SQL和数据库-初学者完整课程
数据库sql课程设计 In this course, Mike Dane will teach you database management basics and SQL. 在本课程中,Mike D ...
- 建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...
学生选课数据库SQL语句45道练习题: 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...
最新文章
- MSMQ 远程计算机不可用 remotemachinenotavailable
- android binder 实例
- python 列表list 合并的方法
- ACM OnlineJudge网站汇总
- python ip动态代理_Python 爬虫设置动态代理
- Java的二十三种设计模式(原型模式(Prototype))
- mysql 查询正在执行的事务以及锁 常用的sql语句
- [蓝桥杯2015决赛]奇怪的数列-双指针+模拟
- 04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换(作业:快乐屋人脸识别+图片风格转换)
- python提取pdf表格信息
- 我们一家三口不和双方父母来往了怎么办?
- LINQ SQL分组取最近一条记录
- mangos服务器架构
- 自学python好找工作么-非计算机专业自学Python好找工作吗?
- Access中的模糊查询
- Linux安装后的基本配置
- 阿里云默认80端口无法访问
- Python安装过程中出现“找不到指定的路径”的解决办法
- 录入设备(3)——51单片机原理图及PCB设计
- 五险一金是包括什么?