oracle中constraint用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle中constraint用法
Oracle中Constraint用法
在Oracle数据库中,Constraint(约束)是用于限制表中数据的完整性的规则。
它可以帮助我们保持数据的准确性和一致性。
下面是一些常用的Constraint用法。
1. NOT NULL Constraint(非空约束)
NOT NULL约束用于确保某一列的值不为空。
当试图插入或更新该列中的值时,如果为空,则会触发一个错误。
示例:
CREATE TABLE students (
id NUMBER PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
age NUMBER
);
2. UNIQUE Constraint(唯一约束)
UNIQUE约束用于确保某一列中的值是唯一的,即不重复。
这可以用于避免重复数据的插入。
示例:
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
email VARCHAR2(50) UNIQUE,
phone VARCHAR2(20),
...
);
3. PRIMARY KEY Constraint(主键约束)
PRIMARY KEY约束用于定义一列或一组列作为表的主键,主键的值在表中必须是唯一的,并且不能为空。
示例:
CREATE TABLE customers (
id NUMBER PRIMARY KEY,
name VARCHAR2(50),
email VARCHAR2(50),
...
);
4. FOREIGN KEY Constraint(外键约束)
FOREIGN KEY约束用于定义与其他表之间的关联关系,确保数据的一致性。
一个表的外键关联到另一个表的主键。
示例:
CREATE TABLE orders (
id NUMBER PRIMARY KEY,
customer_id NUMBER,
...
CONSTRAINT fk_orders_customers FOREIGN KEY (customer_i d)
REFERENCES customers(id)
);
5. CHECK Constraint(检查约束)
CHECK约束用于限制一列中的值必须满足特定的条件。
如果条件为假,则插入或更新操作会触发错误。
示例:
CREATE TABLE products (
id NUMBER PRIMARY KEY,
name VARCHAR2(50),
price NUMBER,
...
CONSTRAINT chk_products_price CHECK (price > 0)
);
6. DEFAULT Constraint(默认约束)
DEFAULT约束用于在插入数据时为列提供默认值,如果插入语句未指定列的值,则会使用默认值。
示例:
CREATE TABLE orders (
id NUMBER PRIMARY KEY,
date_ordered DATE DEFAULT SYSDATE,
...
);
以上是Oracle中一些常用的Constraint用法。
它们可以帮助我们确保数据的完整性和一致性,提高数据库的可靠性和性能。
7. ENABLE/DISABLE Constraint(启用/禁用约束)
ENABLE和DISABLE关键字可以用来启用或禁用约束。
这可以在需要时临时禁用约束,进行数据操作,并在操作完成后重新启用约束。
示例:
-- 禁用约束
ALTER TABLE employees
DISABLE CONSTRAINT employees_salary_check;
-- 启用约束
ALTER TABLE employees
ENABLE CONSTRAINT employees_salary_check;
8. CASCADE Constraint(级联约束)
CASCADE关键字用于当删除或更新主表的记录时,级联更新或删除相关联的外键表中的记录。
示例:
-- 创建表时定义级联删除外键约束
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
department_id NUMBER,
...
CONSTRAINT fk_employees_departments
FOREIGN KEY (department_id)
REFERENCES departments(id)
ON DELETE CASCADE
);
-- 更新主表记录时级联更新外键表
UPDATE departments
SET id = 5
WHERE id = 1;
-- 删除主表记录时级联删除外键表
DELETE FROM departments
WHERE id = 5;
9. NOVALIDATE Constraint(无效约束)
NOVALIDATE关键字用于创建约束时不执行验证操作,可以加快创
建表的速度。
但是需要注意,这可能会导致数据完整性不被强制执行。
示例:
-- 创建唯一约束时使用NOVALIDATE
ALTER TABLE employees
ADD CONSTRAINT unique_email
UNIQUE (email)
NOVALIDATE;
10. DEFERRABLE Constraint(延迟约束)
DEFERRABLE关键字用于在事务执行时,暂时推迟约束的检查,可以在事务结束时进行检查。
这对于需要在事务中更新多个表时,确保数据的完整性非常有用。
示例:
-- 创建延迟检查的外键约束
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customers
FOREIGN KEY (customer_id)
REFERENCES customers(id)
DEFERRABLE INITIALLY DEFERRED;
以上是更高级的Constraint用法。
它们提供了更灵活的数据约束功能,可以根据实际需求进行配置,以实现更精确的数据管理。