当前位置:网站首页>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)
- .NET5WTM(ASP.NET Core) PGSql开箱操作
- Koin
- (转载)ArcGIS Engine中各种点的创建方法
- Dry goods likeshop takeout order system is open source, 100% open source, no encryption
- 【论文下饭】Deep Mining External Imperfect Data for ChestX-ray Disease Screening
- display-inline+calc实现左中右布局,中间自适应
- $router和$route的区别
- Phase 4: one of College Students' vocational skills preparation in advance
- JS对象赋值问题
猜你喜欢

工厂模式详解

在神州IV开发板上为STemWin 5.22加入触屏驱动
![[paper after dinner] deep mining external perfect data for chestx ray disease screening](/img/d6/41c75d292c26b2e7e116767a51eb5e.png)
[paper after dinner] deep mining external perfect data for chestx ray disease screening

.NET5WTM(ASP.NET Core) PGSql开箱操作

抽象工厂及其改进示例

RT-Thread 学习笔记(三)---用SCons 构建编译环境

2021-08-12函数递归_和鹏哥学习C语言
![[leetcode daily question 2021/2/14]765. Lovers hold hands](/img/be/8639a05c733638bf0b3fdeb11abccf.png)
[leetcode daily question 2021/2/14]765. Lovers hold hands
![[leetcode每日一题2021/2/14]765. 情侣牵手](/img/be/8639a05c733638bf0b3fdeb11abccf.png)
[leetcode每日一题2021/2/14]765. 情侣牵手

Centos8 (liunx) deploying WTM (asp.net 5) using PgSQL
随机推荐
10 let operator= return a reference to *this
剑指Offer(七):斐波那契数列
Issue 6: which mainstream programming language should college students choose
algorithm
json_ object_ put: Assertion `jso->_ ref_ count > 0‘ failed. Aborted (core dumped)
第4期:大学生提前职业技能准备之一
[leetcode daily question 2021/2/18] [detailed explanation] minimum number of turns of 995. K continuous bits
第7期:内卷和躺平,你怎么选
工厂模式详解
Redis implementation of distributed lock solution
剑指Offer(四十三):左旋转字符串
[dectectron2] follow the official demo
剑指Offer(四十四):翻转单词顺序序列
Uninstall Meizu app store
超图 影像 如何去除黑边(两种方法)
.net operation redis string string
Database functions
A semicolon is missing
使用float实现左中右布局,中间内容自适应
.NET5WTM(ASP.NET Core) PGSql开箱操作