oracle创建表时的约束

来源:互联网 发布:idc国际数据公司薪水 编辑:程序博客网 时间:2024/06/06 09:16

一、创建表时对表各种限制的体现。

1、主键 primary key 一个表中只有一个主键、不为空、不重复

2、外键 foreign key 外键可以重复、可以为空

3、唯一性Unique 唯一但是允许空值

4、自定义Check

5、不为空Not null

6、默认值 default

二、创建表时生成以上限制。

--语法:

Create table table_name(col_name col_type XX constraintcon_name XXX);

--主键

IDNUMBERCONSTRAINT pk_id_1PRIMARYKEY

          IDNUMBER PRIMARY KEY

(一个表只有一个主键,自动产生索引、唯一不为空)

--外键

DEPid NUMBER,

CONSTRAINT FK_DEPidFOREIGNKEY(DEPID)REFERENCES DEPT_T(depT_ID)

DEPid NUMBER,

FOREIGNKEY(DEPID)REFERENCES DEPT_T(depT_ID)

--唯一性

cc VARCHAR2(10)CONSTRAINT u_1 UNIQUE

cc VARCHAR2(10) UNIQUE

(唯一自动产生索引,可以为空)

--自定义CHECK约束

dd NUMBER CHECK(dd>1AND dd<10)

dd NUMBER CONSTRAINT c_K CHECK(dd>1AND dd<10)

--not null

ff NUMBER NOTNULL

ff NUMBER CONSTRAINT n_1 NOTNULL

--default

ff NUMBER/* CONSTRAINT d_1*/DEFAULT 1

default 不能自己起名。。。

--查看约束

select * from user_constraint

查看可以看到,主键和unique都自动创建了索引。

--完整的创建一张表例子

CREATETABLE t_5

(

 IDNUMBERCONSTRAINT PK_t_5_id PRIMARYKEY,

 dept_Id NUMBER,

 NAMEvarchar2(10)CONSTRAINT u_key_name UNIQUE,

 dc NUMBERCONSTRAINT c_key_dcCHECK(dc>10AND dc<20),

 ye VARCHAR2(10)CONSTRAINT n_key_ye NOTNULL,

 be VARCHAR2(10)DEFAULT 'tiger',

 CONSTRAINT f_key_dept_idFOREIGNKEY(dept_id)REFERENCES dept_t(dept_id)

)

当然所有约束的名字都可以省略,just like:

CREATETABLE t_5

(

 IDNUMBERPRIMARYKEY,

 dept_Id NUMBER,

 NAMEvarchar2(10) UNIQUE,

 dc NUMBER CHECK(dc>10AND dc<20),

 ye VARCHAR2(10) NOTNULL,

 be VARCHAR2(10)DEFAULT 'tiger',

 FOREIGNKEY(dept_id)REFERENCES dept_t(dept_id)

)


三、创建表后生成以上限制。

--语法:

Alter table Add constraint con_name 约束 字段

CREATETABLE t_5

(

 IDNUMBER,

 dept_Id NUMBER,

 NAMEvarchar2(10),

 dc NUMBER ,

 ye VARCHAR2(10) ,

 be VARCHAR2(10)

)

 

ALTERTABLE t_5ADDCONSTRAINT pk_ID_t_5PRIMARYKEY(ID);

ALTERTABLE t_5ADDCONSTRAINT fk_dept_idFOREIGNKEY(dept_id)REFERENCES dept_t(dept_id);

ALTERTABLE t_5ADDCONSTRAINT u_key_nameUNIQUE(NAME);

ALTERTABLE t_5MODIFY yeNOTNULL;

ALTERTABLE t_5MODIFY beDEFAULT 'csdn';

(其中not nulldefault约束用modify修改)

四、表的修改

--增加列

ALTERTABLE t_5ADD cdefVARCHAR2(10)NOTNULL;

--删除列

ALTERTABLE t_5DROPCOLUMN cdef;

--删除约束

Alter table drop constraint XXX
(其中一个表中只有一个主键可以直接删除

Alter table drop primary key

 

以上是我能想到的,也能用到的,关于创建表还有很多很多。。。


原创粉丝点击