插件窝 干货文章 oracle数据库表的完整性约束有哪些

oracle数据库表的完整性约束有哪些

约束 TABLE VARCHAR2 NUMBER 847    来源:    2025-03-28

Oracle数据库表的完整性约束

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

1. 主键约束 (PRIMARY KEY)

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

2. 唯一约束 (UNIQUE)

  • 确保列或列组合中的值是唯一的
  • 允许NULL值(多个NULL被视为不同值)
CREATE TABLE products (
    product_id NUMBER,
    product_code VARCHAR2(20) UNIQUE,
    product_name VARCHAR2(100)
);

3. 非空约束 (NOT NULL)

  • 确保列不接受NULL值
CREATE TABLE customers (
    cust_id NUMBER,
    cust_name VARCHAR2(100) NOT NULL,
    email VARCHAR2(100)
);

4. 外键约束 (FOREIGN KEY)

  • 维护表之间的关系
  • 确保引用另一个表的主键或唯一键
CREATE TABLE orders (
    order_id NUMBER PRIMARY KEY,
    cust_id NUMBER REFERENCES customers(cust_id),
    order_date DATE
);

5. 检查约束 (CHECK)

  • 定义列值必须满足的条件
CREATE TABLE employees (
    emp_id NUMBER,
    emp_name VARCHAR2(100),
    salary NUMBER CHECK (salary > 0),
    gender CHAR(1) CHECK (gender IN ('M', 'F'))
);

6. 默认约束 (DEFAULT)

  • 当插入行时未指定值时提供默认值
CREATE TABLE orders (
    order_id NUMBER,
    order_date DATE DEFAULT SYSDATE,
    status VARCHAR2(20) DEFAULT 'PENDING'
);

约束的创建方式

约束可以在创建表时定义,也可以在表创建后添加:

-- 创建表后添加约束
ALTER TABLE employees ADD CONSTRAINT emp_pk PRIMARY KEY (emp_id);

-- 禁用/启用约束
ALTER TABLE employees DISABLE CONSTRAINT emp_pk;
ALTER TABLE employees ENABLE CONSTRAINT emp_pk;

-- 删除约束
ALTER TABLE employees DROP CONSTRAINT emp_pk;

这些完整性约束是维护数据库数据质量的关键工具,确保数据符合业务规则和关系要求。