龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle约束(1)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
导读: 什么是 约束 ?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。 Oracle数据库 是一种功能性很强大的数据库系统,Oracle数据库中的数据是绝对要保

导读:什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。Oracle数据库是一种功能性很强大的数据库系统,Oracle数据库中的数据是绝对要保密的,下文中就为大家介绍Oracle数据库的约束问题。

Oracle 有如下类型的约束:

NOT NULL
UNIQUE Key
PRIMARY KEY
FOREIGN KEY
CHECK

Oracle使用SYS_Cn格式命名约束.

创建约束:

在建表的同时创建

建表后创建

可定义列级或表级约束.

可通过数据字典表查看约束.

建表时创建约束

create table OTL_NICOTINE_GRADE ( ID NUMBER not null, SEASON_NO NUMBER(4) not null, RECEIPT_NO NUMBER(8) not null,
GRADE VARCHAR2(10) not null, PROPORTION NUMBER(5,2) not null, WEIGHT NUMBER(10,2) not null, VALUE NUMBER(12,2) not
null, constraint PK_OTL_NICOTINE_GRADE primary key (ID, GRADE), constraint FK_OTL_NICO_REFERENCE_OTL_CHEC foreign
key (ID) references OTL_CHECK_CHEM (ID) )


建表后添加约束

 ALTER TABLE (table_name) ADD ( CONSTRAINT (foreign key constraint name) FOREIGN KEY (field name ) REFERENCES
primary_table_name ( primary_table_primary_index_field )
SQL> create table emplyees(
2 employee_id number(6),
3 last_name varchar2(25) not null,
4 salary number(8,2),
5 commission_pct number(2,2),
6 hire_date date,
7 constraint emp_hire_date_1 not null,
8 CONSTRAINT dept_dname_uk UNIQUE(emp_name)
9 );
表已创建。
SQL>
1 select constraint_name,table_name
2 from dba_constraints
3 where table_name='EMPLYEES'
CONSTRAINT_NAME TABLE_NAME
------------------------------ ------------------------------
SYS_C003012 EMPLYEES
EMP_HIRE_DATE_1 EMPLYEES

定义主键约束PRIMARY KEY

SQL> CREATE TABLE dept(
2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE(dname),
6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));

外键约束FOREIGN KEY

SQL> CREATE TABLE emp(
2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL,
10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
11 REFERENCES dept (deptno));

外键约束的关键字

FOREIGN KEY

定义子表的哪一列作为外键约束

REFERENCES

指示主表和参照的列

ON DELETE CASCADE

删除主表记录时将子表相关记录删除

精彩图集

赞助商链接