—NOT NULL
– UNIQUE
– PRIMARY KEY
– FOREIGN KEY
– CHECK
列级别约束条件示例:
CREATE TABLE employees(
employee_id NUMBER(6)
CONSTRAINT emp_emp_id_pk PRIMARY KEY,
first_name VARCHAR2(20),
...);
表级别约束条件示例:
CREATE TABLE employees(
employee_id NUMBER(6),
first_name VARCHAR2(20),
...
job_id VARCHAR2(10) NOT NULL,
CONSTRAINT emp_emp_id_pk
PRIMARY KEY (EMPLOYEE_ID));
FOREIGN KEY 约束条件:关键字
外键是在子表中定义的,而包含被引用列的表是父表。外键是使用以下关键字的组合
定义的:
• FOREIGN KEY 用于在表约束条件级别定义子表中的列。
• REFERENCES 用于标识父表中的表和列。
• ON DELETE CASCADE 指出在删除父表中的行时,还删除子表中的相关行。
• ON DELETE SET NULL 指出在删除父表中的行时,将外键值设为空值。
默认行为被称为限制规则,该规则可禁止更新或禁止删除被引用的数据。
在没有ON DELETE CASCADE 或ON DELETE SET NULL 选项时,如果在子表中引用
父表中的一行,则不能删除该行。
删除外键
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
禁用外键
ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;
启动外键
ALTER TABLE table_name
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);