插件窝 干货文章 oracle数据库完正性约束类型有哪些

oracle数据库完正性约束类型有哪些

约束 示例 NUMBER PRIMARY 422    来源:    2025-03-28

Oracle数据库完整性约束类型

Oracle数据库提供了多种完整性约束来确保数据的准确性和一致性。以下是主要的完整性约束类型:

1. 主键约束 (PRIMARY KEY)

  • 唯一标识表中的每一行
  • 不允许NULL值
  • 一个表只能有一个主键
  • 示例: sql CREATE TABLE employees ( emp_id NUMBER PRIMARY KEY, emp_name VARCHAR2(100) );

2. 外键约束 (FOREIGN KEY)

  • 建立表之间的关系
  • 确保引用完整性
  • 可以引用其他表的主键或唯一键
  • 示例: sql CREATE TABLE orders ( order_id NUMBER PRIMARY KEY, emp_id NUMBER REFERENCES employees(emp_id) );

3. 唯一约束 (UNIQUE)

  • 确保列或列组合的值唯一
  • 允许NULL值(但只能有一个NULL)
  • 一个表可以有多个唯一约束
  • 示例: sql CREATE TABLE products ( product_id NUMBER PRIMARY KEY, product_code VARCHAR2(20) UNIQUE );

4. 检查约束 (CHECK)

  • 定义列值必须满足的条件
  • 可以使用逻辑表达式
  • 示例: sql CREATE TABLE students ( student_id NUMBER PRIMARY KEY, age NUMBER CHECK (age >= 18) );

5. NOT NULL约束

  • 确保列不能包含NULL值
  • 实际上是CHECK约束的特殊形式
  • 示例: sql CREATE TABLE customers ( cust_id NUMBER PRIMARY KEY, cust_name VARCHAR2(100) NOT NULL );

6. 默认约束 (DEFAULT)

  • 当插入数据未指定值时提供默认值
  • 不是严格意义上的约束,但有助于数据完整性
  • 示例: sql CREATE TABLE orders ( order_id NUMBER PRIMARY KEY, order_date DATE DEFAULT SYSDATE );

约束管理

  • 约束可以在创建表时定义,也可以后期添加
  • 可以启用或禁用约束
  • 可以为约束命名以便于管理

约束验证时机

  • 立即验证(IMMEDIATE):在每条DML语句执行后验证
  • 延迟验证(DEFERRABLE):在事务提交时验证

这些完整性约束共同确保了Oracle数据库中数据的准确性和一致性。