当前位置:网站首页>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.删除主表前,要先删子表
边栏推荐
- [leetcode daily question 2021/4/29]403. Frogs cross the river
- 解决:无法加载文件 C:\Users\user\AppData\Roaming\npm\npx.ps1,因为在此系统上禁止运行脚本 。
- 第8期:云原生—— 大学生职场小白该如何学
- 剑指Offer(二十一):栈的压入、弹出序列
- C language callback function
- SAP ABAP 守护进程的实现方式
- GIS方法类期刊和论文的综述(Introduction)怎么写?
- [leetcode每日一题2021/2/14]765. 情侣牵手
- Flutter 防止科学计数并去除尾数无效0
- oracle 启动不了 tnslistener服务启动不了
猜你喜欢

Problems encountered in QRcode QR code (C language)

Mlx90640 infrared thermal imager temperature sensor module development notes (VI) pseudo color coding of infrared images

Write to esp8266 burning brush firmware
![[dectectron2] follow the official demo](/img/aa/03e46897234c309415b336ac39b7d9.png)
[dectectron2] follow the official demo

putty的使用教程

GIS方法类期刊和论文的综述(Introduction)怎么写?

粽子大战 —— 猜猜谁能赢

在altium designer中禁用USBJATG
![[leetcode daily question 2021/4/23]368. Maximum divisible subset](/img/0b/32ca862963c842a93f79eaac94fb98.png)
[leetcode daily question 2021/4/23]368. Maximum divisible subset

RT-Thread 学习笔记(六)--- 开启基于SPI Flash的elmfat文件系统(上)
随机推荐
7-25 0-1背包 (50分)
12 don't forget every component when copying an object
使用Geoprocessor 工具
[leetcode每日一题2021/4/29]403. 青蛙过河
剑指Offer(五十二):正则化表达式
在altium designer中禁用USBJATG
第6期:大学生应该选择哪种主流编程语言
router.push(),router.repalce(),router.go()使用
Common classes (understand)
[leetcode daily question 2021/4/23]368. Maximum divisible subset
Oracle创建索引
Database functions
Issue 5: the second essential skill for College Students
使用grid实现左中右布局,中间内容自适应
[leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间
RT-Thread 学习笔记(一)---配置RT-Thread开发环境
[leetcode每日一题2021/2/14]765. 情侣牵手
[leetcode每日一题2021/2/18]【详解】995. K 连续位的最小翻转次数
如何实现临时的图形要素现实
一文详解Nodejs中fs文件模块与path路径模块