文档介绍:约束
目标
通过本章学习,您将可以:
描述约束
创建和维护约束
什么是约束
约束是表级的强制规定
约束放置在表中删除有关联关系的数据
有以下五种约束:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
注意事项
如果不指定约束名 Oracle server 自动按照 的格式指定约束名
在什么时候创建约束:
建表的同时
建表之后
可以在表级或列级定义约束
可以通过数据字典视图查看约束
定义约束
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
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));
定义约束
列级
表级
column [CONSTRAINT constraint_name] constraint_type,
column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),
NOT NULL 约束
保证列值不能为空:
NOT NULL 约束
无NOT NULL 约束
NOT NULL
约束
…
非空约束(not null)
1)确保其所在字段值不能为空
2)非空约束只能定义为字段级别
基本语法:column_name datatype not null
CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE
CONSTRAINT emp_hire_date_nn
NOT NULL,
...
NOT NULL 约束
只能定义在列级:
系统命名
用户命名
UNIQUE 约束
唯一约束(unique)
1)确保其所在字段值不能重复
2)允许空值
3)既可以定义为字段级别也可以定义到表级别
4)可以在一个字段上建立唯一约束(此字段值不能重复,既可以是表级别也可以是字段级别), 也可以在几个字段上建立唯一约束(这几个字段的组合值不能重复,只能是表级别的)
5)Oracle会自动为建立唯一约束的字段创建索引
字段级别:column_name datatype unique
表级别:constraint uni_name unique(column_name[,..])自定义约束名或者 unique(column_name[,..]) 系统自动分配约束名删除约束:alter table 表名 drop constraint 约束名;
UNIQUE 约束
EMPLOYEES
UNIQUE 约束
INSERT INTO
不允许: 已经存在
允许
…