oracle 5种约束条件使用方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 约束

约束是操作表数据的强制规定

有以下五种约束:

•NOT NULL ;非空约束

•UNIQUE :唯一值约束

•PRIMARY KEY:主键约束

•FOREIGN KEY:外键约束

•CHECK:检查约束

约束:建表的时候可以加约束,建表后也可加约束

注意事项

、如果不指定约束名 Oracle server 自动按照 S、YS_C n 的格式指定约束名

、在什么时候创建约束:

•建表的同时

•建表之后

、可以在表级或列级定义约束

、可以通过数据字典视图查看约束

create table newdept

as

select * from departments

create table newemp

as

select * from employees

2 定义约束

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

P RIMARY KEY (EMPLOYEE_ID));

列级

column[CONSTRAINT constraint_name] constraint_type,

表级

column,...

[CONSTRAINT constraint_name] constraint_type (column, ...),

3 NOT NULL 约束

只能定义在列级:

保证列值不能为空:

修改first_name 非空

alter table newemp

modify (first_name NOT NULL)

取消非空约束

alter table newemp

modify (first_name NULL)

增加约束

定义每一行必须满足的条件

以下的表达式是不允许的:

•出现CURRVAL, NEXTVAL, LEVEL, 和ROWNUM 伪列

•使用 SYSDATE, UID, USER, 和 USERENV 函数

•在查询中涉及到其它列的值

..., salary NUMBER(2)

CONSTRAINT emp_salary_min

CHECK (salary > 0),...

限制工资不能少于2000

alter table newemp

ADD constraints newemp_salary_ck CHECK(salary>=2000)

添加约束的语法

使用 ALTER TABLE 语句:

添加或删除约束, 但是不能修改约束

有效化或无效化约束

添加 NOT NULL 约束要使用 MODIFY 语句

ALTER TABLE table

ADD [CONSTRAINT constraint] type (column);

添加约束

ALTER TABLE employees

ADD CONSTRAINT emp_manager_fk

FOREIGN KEY(manager_id)

REFERENCES employees(employee_id);

alter table表名

modify(自定义列名约束设置)

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,

4主键约束

限制列值不允许空值,且不能为空,一个表只有一个主键

只要主键都会Alter,一般主键是ID唯一的

alter table newemp

ADD constraints newemp_empid_pk primary key(employee_id)

删除主键约束

alter table newemp

drop constraints newemp_empid_pk;

复合主键(多个列设置为主键)

ALter table newemp

add constraint newemp_ename_pk primary key(first_name, last_name)

5唯一约束

唯一值约束,限制列值不允许重复,可以为空(不会限制空值),一个表可以有多个唯一值的约束,不允许insert into

可以定义在表级或列级:

设置唯一值约束

alter table newemp

ADD constraints newemp_email_uk UNIQUE(email)

CREATE TABLE departments(

department_id NUMBER(4),

department_name VARCHAR2(30)

CONSTRAINT dept_name_nn NOT NULL,

manager_id NUMBER(6),

location_id NUMBER(4),

CONSTRAINT dept_id_pk PRIMARY KEY(department_id));

查约束,限制自定义条件,忽略空值

可以定义在表级或列级:

CREATE TABLE employees(

employee_id NUMBER(6),

last_name VARCHAR2(25) NOT NULL,

email VARCHAR2(25) ,

salary NUMBER(8,2),

commission_pct NUMBER(2,2),

hire_date DATE NOT NULL,

...

CONSTRAINT emp_email_uk UNIQUE(email));

相关文档
最新文档