Oracle数据库基础(六)(约束)

在这里插入图片描述

一、约束概述

1.1 约束的作用

  • 约束(CONSTRAINT)的全称是约束条件,也称作完整性约束条件
  • 约束是在数据表上强制执行的一些数据校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合则无法执行
  • 约束条件可以保证表中数据的完整性,保证数据间的商业逻辑

1.2 约束的类型

约束条件包括:
  • 非空约束(Not Null):简称NU
  • 唯一性约束(Unique):简称UK
  • 主键约束(Primary Key):简称PK
  • 外键约束(Foreign Key):简称FK
  • 检查约束(Check):简称CK

二、非空约束

2.1 建表时添加非空约束

  • 非空约束用于确保字段值不为空
  • 默认情况下,任何列都允许有空值,但业务逻辑可能会要求某些列不能取空值
  • 当某个字段被设置了非空约束条件,这个字段中必须存在有效值
    例如:
    1.当执行INSERT操作时,必须提供这个列的数据
    2.当执行UPDATE操作时,不能给这个列的值设置为NULL
CREATE TABLE employees(
eid NUMBER(6),
name VARCHAR2(30) NOT NULL,   //最常见的写法
salary NUMBER(7,2),
hiredate DATE CONSTRAINT employees_hiredate_nn NOT NULL  //最标准的格式
);

2.2 修改表时添加非空约束

  • 可以在建表之后,通过修改表的定义,添加非空约束
ALTER TABLE employees MODIFY(eid NUMBER(6) NOT NULL );

2.3 取消非空约束

  • 如果业务要求取消某列的非空约束,可以采用重建表或者修改表的方式
ALTER TABLE employees MODIFY(eid NUMBER(6) null);

三、唯一约束

3.1 什么是唯一性约束

  • 唯一性(Unique)约束条件用于保证字段或者字段的组合不出现重复值
  • 当给表的某个列定义了唯一约束条件,该列的值不允许重复,但允许是NULL值
  • 唯一性约束条件可以在建表同时建立,也可以在建表以后再建立

3.2 添加唯一性约束

  • 在建表employees的同时,在eid、email列上创建唯一约束条件,并在建表后在name列上建立一个名为employees_name_uk的唯一约束条件
CREATE TABLE employees(
eid NUMBER(6) UNIQUE, 
name VARCHAR2(30),
email VARCHAR2(50),
salary NUMBER(7,2),
hiredate DATE,
CONSTRAINT employees_email_uk UNIQUE(email)  
);
  • 在建表之后添加唯一性约束条件:
ALTER TABLE employees 
ADD CONSTRAINT employees_name_uk UNIQUE(name);

❤️ 出现的一个小BUG:
在这里插入图片描述

在这里插入图片描述

  • 原因:查看表可知,name这一列已经有重复的值,如果再添加唯一性约束条件是不可以的。
  • 解决方法:删掉重复值后再添加唯一性约束条件

四、主键约束

4.1 主键的意义

  • 主键(Primary Key)约束条件从功能上看相当于非空(NOT NULL)且唯一(UNIQUE)的组合
  • 主键字段可以是单字段或多字段组合,即:在主键约束下的单字段或者多字段组合上不允许有空值,也不允许有重复值
  • 主键可以用来在表中唯一的确定一行数据
  • 一个表上只允许建立一个主键,而其他约束条件则没有明确的个数限制

4.2 主键选取的原则

  • 主键应是对系统无意义的数据
  • 永远也不要更新主键,让主键除了唯一标识一行之外,再无其他的用途
  • 主键不应包含动态变化的数据,如时间戳
  • 主键应自动生成,不要人为干预,以免使它带有除了唯一标识一行以外的意义
  • 主键尽量建立在单列上

4.3 添加主键约束

4.3.1 在建表时添加主键约束条件
CREATE TABLE employees2(
eid NUMBER(6) PRIMARY KEY,
name VARCHAR2(30),
email VARCHAR2(50),
salary NUMBER(7,2),
hiredate DATE
);
4.3.2 建表后创建主键约束条件
ALTER TABLE employees2
ADD CONSTRAINT employees2_eid_pk PRIMARY KEY(eid);

五、外键约束(基本不用)

5.1 外键约束的意义

在这里插入图片描述

5.2 添加外键约束

在这里插入图片描述

5.3 外键约束对一致性的维护

在这里插入图片描述

5.4 外键约束对性能的降低

在这里插入图片描述

5.5 关联不一定需要外键约束

在这里插入图片描述

六、检查约束

6.1 什么是检查约束

在这里插入图片描述

6.2 添加检查约束

在这里插入图片描述

  • 15
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值