当前位置:网站首页>Sql Server 数据库之完整性约束
Sql Server 数据库之完整性约束
2022-07-26 10:40:00 【孩纸D】
在数据库中有四种类型的约束来保证完整性:
| 域完整性 —— 对列的约束 | |
| 实体完整性 —— 对行的约束(不能用重复行) | |
| 引用完整性 —— 一个表中的某列值是引自另一个表的 | |
| 自定义完整性(这个可能有点深奥,未进行了解) |
1.保证域完整性的约束方法:检查约束、默认约束、非空约束
检查约束也就是Check约束,再白话一点就是进行条件的控制,但是对条件的书写还不能那么随意,也是有规范的,至于这个规范,,,目前我会用的有:性别的选择:sex = 'men' or sex = 'women',或者是 sex IN('men' , 'women'),对邮件的@符号的要求:email “%@%”,表示必须要有@符号,%表示有任意个字节,对大小关系的判断:例如 hours > 0,还有一个对长度的判断:length(log) >= 6 (其中sex、email、hours、log都是表中列的名称)。
默认约束就是当没有对其进行输入值时,显示设置的默认值,其设置位置是在下面的列属性中默认值或绑定中。
非空约束就是设计表时是否允许为空的。
2.保证实体完整性的约束方法:唯一约束、主键约束、标识符
唯一约束和主键约束都是为了保证某一列中的值不能重复,主键约束可以设置多列为主键,这样就增加了可能性,即只要设置主键的这几列不完全相同就可以。
标识符,首先必须是int型,而且标识符不能进行编辑,他是自动生成的。若对某列进行了删除,其标识列不能自动更新。
3.保证引用完整性的约束方法:外键约束
即一个表(从表)中的某一列或多列(从键)是引自另一个表(主表)的,也就是说从表中的这一列(即从键)中的数据必须是主表中已有的(这也决定了为什么输入数据时要先输入主表中的值了)。设置方法是:右键单击列名 -> 关系 -> 添加 -> 表和列规范,然后设置主键表从键表,以及主键从键就可以了。
主外键建立后注意事项:
1.当主表中没有对应的记录时,不能将记录添加到从表
2.不能更改主表中的值而导致子表中的记录孤立
3.子表存在与主表对应的记录时,不能从主表中删除该行
4.删除主表前,要先删子表
边栏推荐
- json_ object_ put: Assertion `jso->_ ref_ count > 0‘ failed. Aborted (core dumped)
- 2021-08-14三子棋
- 【论文下饭】Deep Mining External Imperfect Data for ChestX-ray Disease Screening
- .net operation redis string string
- 鹏哥C语言第四课(3)
- 2021-08-12函数递归_和鹏哥学习C语言
- Introduction to Phoenix (Level 1: Phoenix installation, level 2: Phoenix basic grammar)
- .net operation redis hash object
- Write to esp8266 burning brush firmware
- [leetcode daily question 2021/2/13]448. Find all the missing numbers in the array
猜你喜欢

从蚂蚁的觅食过程看团队研发(转载)

sigmod 函数与softmax 函数对比

Dry goods likeshop takeout order system is open source, 100% open source, no encryption

Oracle cannot start tnslistener service cannot start
![[leetcode daily question 2021/2/14]765. Lovers hold hands](/img/be/8639a05c733638bf0b3fdeb11abccf.png)
[leetcode daily question 2021/2/14]765. Lovers hold hands

$router和$route的区别

异常的概念与处理

第5期:大学生入职必备技能之二
![[leetcode每日一题2021/4/23]368. 最大整除子集](/img/0b/32ca862963c842a93f79eaac94fb98.png)
[leetcode每日一题2021/4/23]368. 最大整除子集
![[leetcode每日一题2021/2/14]765. 情侣牵手](/img/be/8639a05c733638bf0b3fdeb11abccf.png)
[leetcode每日一题2021/2/14]765. 情侣牵手
随机推荐
剑指Offer(二十):包含min函数的栈
Redis docker instance and data structure
10 令 operator= 返回一个 reference to *this
Introduction to Phoenix (Level 1: Phoenix installation, level 2: Phoenix basic grammar)
Application of.Net open source framework in industrial production
11 在 operator= 中处理“自我赋值”
uniapp使用简单方法signalR(仅用于web调试,无法打包app)
12 复制对象时勿忘其每一个成分
【机器学习小记】【人脸识别】deeplearning.ai course4 4th week programming
一文详解Nodejs中fs文件模块与path路径模块
kali 查看ip地址
剑指Offer(四十三):左旋转字符串
使用float实现左中右布局,中间内容自适应
[leetcode daily question 2021/2/14]765. Lovers hold hands
px2rem-loader将px转化为rem,适配移动端vant-UI等框架
Asynctask < T> decoration and await are not used in synchronous methods to obtain asynchronous return values (asynchronous methods are called in synchronous methods)
C language calculation date interval days
flutter 背景变灰效果,如何透明度,灰色蒙板遮罩
[leetcode daily question 2021/2/18] [detailed explanation] minimum number of turns of 995. K continuous bits
常见的类(了解)