《oracle数据库》约束

约束

  1. 如果不指定约束名,Oracle server 自动按照SYS_Cn的格式指定约束名
  2. 创建和修改约束:
  • 建表的同时
  • 建表之后
  1. 可以在表级或列级定义约束
  2. 可以通过数据字典视图查看约束

一、 NOT NULL(非空)

只能定义在列级

《oracle数据库》约束
由于定义了hire_date列不能为空,因此在hire_date列插入空值时会出错。
《oracle数据库》约束

二、 UNIQUE(唯一:空值除外)

可以定义在表级或列级

《oracle数据库》约束

三、 PRIMARY KEY(主键)

可以定义在表级或列级

《oracle数据库》约束

四、 FOREIGN KEY(外键)

只能定义在表级

(1) FOREIGN KEY…REFERENCES

关键字:

  • FOREIGN KEY: 在表级指定子表中的列。
  • REFERENCES: 标示在父表中的列。

《oracle数据库》约束

注意:

由于定义了department_id为employee表中的外键与department表中的主键department_id相连接,而在父表中的主键ID10不存在,因此在外键列插入父表主键列不存在的值会出错。
《oracle数据库》约束

(2) ON DELETE CASCADE(级联删除)

当父表中的列被删除时,子表中相对应的列也被删除。

《oracle数据库》约束
当删除父表中主键ID为1000的记录时,子表中外键ID为1000的记录也会被删除。
《oracle数据库》约束

(3) ON DELETE SET NULL(级联置空)

当父表中的列被删除时,子表中相对应的列置空。

《oracle数据库》约束

当删除父表中主键ID为1000的记录时,子表中外键ID为1000的数据会更新为null。
《oracle数据库》约束

五、 CHECK(定义每一行必须满足的条件)

可以定义在表级或列级

《oracle数据库》约束

六、 ALTER TABLE(添加或删除约束)

① 添加或删除约束,但是不能修改约束。
② 有效化或无效化约束。
③ 添加 NOT NULL 约束要使用 MODIFY 语句。

(1) 添加约束

《oracle数据库》约束
添加not null约束
《oracle数据库》约束

(2) 删除约束

《oracle数据库》约束

(3) 无效化约束

在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
《oracle数据库》约束

(4) **约束

在ALTER TABLE 语句中使用ENABLE 子句可将当前无效的约束**。
《oracle数据库》约束

七、 查询约束

(1) USER_CONSTRAINTS(查询约束)

《oracle数据库》约束

(2) USER_CONS_COLUMNS(查询定义约束的列)

《oracle数据库》约束