当前位置:网站首页>数据库的约束
数据库的约束
2022-08-10 09:59:00 【晓之以理的喵~~】
一、约束的定义
约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是列一级别的 也可以是表级别的。
二、约束的功能
实现一些业务规则,防止无效的垃圾数据进入数据库,维护数据库的完整性(完整性指正确性与一致性)。从而使数据库的开发和维护都更加容易。
三、约束的分类
1、主键约束
定义:唯一的标识表中的每一行,不能重复,不能为空。 创建主键或唯一约束后,数据库会自动创建一个与约束同名的索引(UNIQUENES为UNIQUE唯一索引)。需要注意的是:每个表只能有且有一个主键约束。
命名规则:PK_表名
限制:一个表或视图有且只有一个主键;主键大小不能超过一个数据块大小;主键组合键不能超过32列;不能指定一列或组合列既是主键又是唯一键;创建一个继承层次结构中的子视图时,不能指定一个主键。主键可以唯一指定的顶层(根)视图。
(1)单字段主键
在定义列的同时指定主键,语法规则:字段名 数据类型 Primary Key [默认值]
(2)多字段联合主键
主键由多个字段联合组成。语法规则:Primary Key[字段1,字段2,…,字段n]
2、外键约束
定义:用来维护从表(Child Table)和主表(Parent Table)之间的引用完整性. 外键约束是个有争议性的约束,它一方面能够维护数据库的数据一致性,数据的完整性。防止错误的垃圾数据入库; 另外一方面它会增加表插入、更新等SQL性能的额外开销,不少系统里面通过业务逻辑控制来取消外键约束。
主表(父表):对于两个具有关联关系的表而言,相关联字段中的主键所在的那个表即是主表。
从表(子表):对于两个具有关联关系的表而言,相关联字段中的外键所在的那个表即是从表。
命名规则:FK_表名_列名
限制:引用唯一或主键约束,必须是父表中已经定义的;外键的组合列不能超过32列;字表和父表必须在同一个数据库,分布式数据库中,外键不能跨节点,但触发器可以;不能在CREATE TABLE语句中包含AS子查询子句定义一个外键约束,相反,你必须创建一个没有约束的表,然后添加ALTER TABLE语句;
3、唯一约束
定义:在表中每一行中所定义的这列或这些列的值都不能相同。必须保证唯一性。否则就会违法约束条件。
命名规则:UK_表名_列名
限制:不能在视图约束上指定字段为NULL或NOT NULL值;不能指定一个对象的属性为NULL或NOT NULL,相反,而应使用的IS [NOT] NULL条件CHECK约束。
4、非空约束
定义:约束的列不能为NULL值。否则就会报错
命名规则:NN_表名_列名
限制:组合字段定义的唯一索引,字段个数不能超过32个;不能指定同一字段或组合字段即为主键又是唯一键
5、条件约束
定义:表中每行都要满足该约束条件。条件约束既可以在表一级定义也可以在列一级定义。在一列上可以定义任意多个条件约束。
命名规则:CK_表名_列名
限制:条件约束中的条件与查询语句中的条件相同,但是不包括CURRVAL,NETXTVAL,LEVEL和ROWNUM这样的伪列(PSEUDOCOLUMNS),还不能引用其它行中值的查询语句,不可以调用SYSDATE,USER,USERENV和UID的函数。
四、约束的操作
1,添加约束
(1)添加非空约束
ALTER TABLE tables
MODIFY(MGR CONSTRAINT 约束名 NOT NULL);
(2)添加其他约束
ALTER TABLE tables CONSTRAINT 约束名(条件);
2,删除约束
ALTER TABLE tables CONSTRAINT 约束名;
3,重命名约束
ALTER TABLE tables
RENAME CONSTRAINT 约束名 TO 新约束名;
4,禁用约束
ALTER TABLE 表 DISABLE CONSTRAINT 约束名 [CASCADE];
ALTER TABLE 表 DISABLE PRIMARY KEY CASCADE; -- CASCADE子句用来关闭存在有完整性关系的约束
5,启用约束
使用ENABLE不会将主键约束与外键约束同时打开,只能对主键约束与外键约束分别使用ENABLE CONSTRAINT 子句打开
ALTER TABLE 表 ENABLECONSTRAINT 约束名 [CASCADE];
边栏推荐
- Payment x Aggregation x Ledger Separation - The Way to Avoid Risk of "Erqing" on the Return Platform
- 讯飞翻译机抢镜背后,跨语种沟通迈入全新时代
- CAD to WPF: Tips on converting CAD drawing files to WPF vector code files (xaml files)
- Which is the strongest workflow engine for "Technology Selection"?Chief Architecture Helps You Pick
- 第三章 搜索与图论(三)
- keepalived:主备配置
- 「微服务架构」编曲与编舞——让系统协同工作的不同模式
- 【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代
- 【物联网架构】什么是物联网平台?
- 「应用架构」TOGAF建模:企业可管理性图
猜你喜欢

Plot temperature curves; QChart,

jq封装树形下拉选择框组件

腾讯发布四足机器人 Max 二代版本,梅花桩上完成跳跃、空翻

【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代

JS高级 之 Promise 详解

shell------ commonly used gadgets, sort, uniq, tr, cut

Guo Jingjing's personal chess teaching, the good guy is a robot

"Microservice Architecture" Arrangement and Choreography - Different Models for Making Systems Work Together

【物联网架构】什么是物联网平台?

Chapter 3 Search and Graph Theory (3)
随机推荐
UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果)
「敏捷建模」纪律:敏捷设计理念
腾讯云校园大使开始招募啦,内推名额和奖金等你来拿
VBA: 遍历文件抓取指定条件的数据
「业务架构」TAGAF建模:业务服务/信息图
keepalived:常见问题
dos环境下操作mysql
属性动画QPropertyAnimation
多元线性回归分析(Stata)
shell iterates over folders and outputs
dedecms支持Word内容一键上传
高通 msm8953 LCD 休眠/唤醒 流程
Payment x Aggregation x Ledger Separation - The Way to Avoid Risk of "Erqing" on the Return Platform
91.(cesium之家)cesium火箭发射模拟
"Data Architecture": How can master data management (MDM) help my industry?
OLTP and OLAP database architecture 】 【 : actual comparison
09 【Attributes继承 provide与inject】
Fourier series and Fourier transform
数据中台解决方案及未来发展方向
杭电多校七 1008-Triangle Game(博弈)