—NOT NULL
– UNIQUE
– PRIMARY KEY
– FOREIGN KEY
– CHECK

列级别约束条件示例:

  1. CREATE TABLE employees(
  2. employee_id NUMBER(6)
  3. CONSTRAINT emp_emp_id_pk PRIMARY KEY,
  4. first_name VARCHAR2(20),
  5. ...);

表级别约束条件示例:

  1. CREATE TABLE employees(
  2. employee_id NUMBER(6),
  3. first_name VARCHAR2(20),
  4. ...
  5. job_id VARCHAR2(10) NOT NULL,
  6. CONSTRAINT emp_emp_id_pk
  7. PRIMARY KEY (EMPLOYEE_ID));

FOREIGN KEY 约束条件:关键字
外键是在子表中定义的,而包含被引用列的表是父表。外键是使用以下关键字的组合
定义的:
• FOREIGN KEY 用于在表约束条件级别定义子表中的列。
• REFERENCES 用于标识父表中的表和列。
• ON DELETE CASCADE 指出在删除父表中的行时,还删除子表中的相关行。
• ON DELETE SET NULL 指出在删除父表中的行时,将外键值设为空值。
默认行为被称为限制规则,该规则可禁止更新或禁止删除被引用的数据。
在没有ON DELETE CASCADE 或ON DELETE SET NULL 选项时,如果在子表中引用
父表中的一行,则不能删除该行。

  1. --删除外键
  2. ALTER TABLE table_name
  3. DROP CONSTRAINT constraint_name;
  4. --禁用外键
  5. ALTER TABLE table_name
  6. DISABLE CONSTRAINT constraint_name;
  7. --启动外键
  8. ALTER TABLE table_name
  9. ENABLE CONSTRAINT constraint_name;

oracle约束的4种状态:
disable novalidate 既不会约束新增数据也不会验证已有数据,等同于disable
enable novalidate 约束新增数据但不会验证已有数据
disable validate 约束新增数据但不会验证已有数据,启用后禁止DML
enable validate 约束新增数据并验证已有数据,等同于enable

--查看约束
select t.owner,t.constraint_name,t.status,t.deferrable,t.deferred,t.validated from user_constraints
--添加约束
ALTER TABLE orders
MODIFY customer_id CONSTRAINT orders_cust_nn NOT NULL (customer_id);