在慕課網上學習時記的關於oracle中約束概念的基礎筆記,當初一直對約束的概念不清不楚的,因此找了些資料來看
create table table_name ( column_name datatype not null, ... )
alter table table_name modify column_name datatype not null; 注意:在設置非空約束以前,表中不該該有數據
alter table table_name modify column_name datattype null;
方式一: create table table_name( column_name datatype PRIMARY KEY,... );
方式二:(建立聯合主鍵) constraint constraint_name primary key(column_name1,...)
alter table table_name add constraint constraint_name primary key(column_name1,...);
alter table table_name rename constraint old_name to new_name
alter table table_name disable|enable constraint constraint_name; (禁用或啓用約束) alter table table_name drop constraint constraint_name; (經過主鍵名刪除約束) alter table table_name drop primary key[cascade]; (由於一個表只有一個主鍵,因此也能夠直接這樣刪除主鍵;可選參數cascade用於級聯刪除,好比有外鍵的狀況)
create table table1(從表) ( column_name datatype references table2(主表)(column_name),... ); 設置外鍵約束時,主表的字段必須是主鍵;主從表中相應的字段必須是同一個數據類型;從表中外鍵字段的值必須來自主表中相應字段的值,或者爲null 例子 先建立一個主表 create table typeinfo ( typeid varchar2(10) primary key, 設置主鍵 typename varchar2(20) ); 接下來建立一個從表 create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20), typeid_new varchar2(10) references typeinfo(typeid) (將 typeid_new 設爲外鍵,引用的是 typeinfo 表的主鍵) );
constraint contraint_name(約束名) foreign key(column_name) references table_name(column_name) [on delete cascade] []中的東西表示級聯刪除,添加之後,則刪除主表的字段值,從表的外鍵也會刪除 create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20), typeid_new varchar2(10), constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid) ); 在修改表時添加外鍵約束 create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20), typeid_new varchar2(10) ); alter table userinfo add constraint fk_typeid_alter foreign key(typeid_new)references typeinfo(typeid);
disable|enable constraint constraint_name (放到alter table 後面使用) 經過user_constraints表查看有哪些約束 select table_name,constraint_name,constraint_type,status from user_constraints where table_name='APPR_ITM_DEFINE_EX'
alter table userinfo disable constraint fk_typeid_alter;
drop constraint constraint_name;(放到alter table 後面使用)
以下: alter table userinfo drop constraint fk_typeid_alter;
方式一(列集) create table table_name(column_name datatype unique,...) create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20) unique, 設置惟一約束 typeid_new varchar2(10) ); 方式二(表集) constraint constraint_nameunique(column_name) create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20) , typeid_new varchar2(10), constraint un_username unique(username) 設置惟一約束 ); 若是要設置多個惟一約束,須要繼續添加constraint constraint_nameunique(column_name)才行,不能寫在一個constraint中
create table userinfo ( id varchar2(10) primary key, 設置主鍵 username varchar2(20) , typeid_new varchar2(10) ); alter table userinfo add constraint un_username unique(username);
1.禁用惟一約束 disable|enable constraint constraint_name (放到alter table 後面使用) 禁用約束 alter table userinfo disable constraint un_username; 2.刪除惟一約束 drop constraint constraint_name;(放到alter table 後面使用) 以下: alter table userinfo drop constraint un_username;