新增/刪除約束(Oracle)
增加一列或者多列
alter table 表名 add(column_name datatype[,..]);
修改一列或者多列(修改列的型別或者是長度)
alter table 表名 modify(column_name datatype[,..]);
刪除一列
alter table 表名 drop column column_name;
刪除多列
alter table 表名 drop(column_name[,..])[@more@]建表階段新增約束(欄位級|表級)
非空約束(not null)
1)確保其所在欄位值不能為空
2)非空約束只能定義為欄位級別
基本語法:column_name datatype not null
唯一約束(unique)
1)確保其所在欄位值不能重複
2)允許空值
3)既可以定義為欄位級別也可以定義到表級別
4)可以在一個欄位上建立唯一約束
(此欄位值不能重複,既可以是表級別也可以是欄位級別),
也可以在幾個欄位上建立唯一約束(這幾個欄位的組合值不能重複,只能是表級別的)
5)Oracle會自動為建立唯一約束的欄位建立索引
欄位級別:column_name datatype unique
表級別:
constraint uni_name unique(column_name[,..])自定義約束名
或者
unique(column_name[,..]) 系統自動分配約束名
刪除約束:alter table 表名 drop constraint 約束名;
主鍵約束(primary key)
1)確保所在欄位值非空且唯一
2)一個表最多隻允許一個主鍵,當然這個主鍵可以基於一個欄位也可以基於多個欄位
3)非聯合主鍵既可以是欄位級別的也可以是表級別的,聯合主鍵只能是表級別的
4)oracle會自動為其建立索引
欄位級別:column_name datatype primary key
表級別:
constraint p_k primary key(column_name[,..])自定義約束名
或者
primary key(column_name[,..])系統自動分配約束名
一般情況下我們選擇透過序列讓系統去幫我們確保不違反主鍵約束
create table 表名(column_name datatype primary key,column_name2 datatype[,..]);
create sequence 序列名;
insert into 表名 values(序列名.nextval,值[,..])
刪除主鍵:
alter table 表名 drop constraint 約束名;
或者
alter table 表名 drop primary key;
外來鍵約束(foreign Key)
1)確保所在欄位的值與另一個表中的欄位值有一定的關聯關係
2)既可以定義為欄位級別也可以定義為表級別
3)被外來鍵關聯上的另一個表的欄位必須唯一(即此欄位必須是
unique或者primary key)
欄位級別:column_name datatype reference 父表名(欄位名)
表級別:
constraint f_k foreign key(column_name) references 父表名(欄位名) --自定義約束名
或者
foreign key(column_name) references 父表名(欄位名) --系統自動分配約束名
刪除父表(主表):
方式一:先刪除子表或者只刪除子表的外來鍵約束
然後使用drop table 表名刪父表
方式二:drop table 父表名 cascade constraints;
檢查約束(check)
1)確保所在欄位的值在check所給的範圍裡面
2)既可以定義為欄位級別也可以定義為表級別
欄位級別:column_name datatype check(值1,值2)
表級別:constraint c_k check(條件)--自定義約束名
或者check(條件)--系統自動分配約束名
建完表後新增約束
alter table 表名 add constraint 約束名 unique(column_name[,..])--自定義約束名
alter table 表名 add unique(column_name[,..]);--系統自動分配約束名
主鍵約束、外來鍵約束、檢查約束的新增形如唯一約束
非空約束的新增
alter table 表名 modify(column_name not null);
禁用約束:
alter table 表名 disable constraint 約束名;
啟用約束
alter table 表名 enable constraint 約束名;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1052055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql-基本練習(06-唯一約束、外來鍵約束、新增、刪除單列)MySql
- 【PK】Oracle 10g刪除主鍵約束後無法刪除唯一約束索引問題的模擬與分析Oracle 10g索引
- 批量刪除MSSQL 中主外來鍵約束SQL
- mysql 刪除老是報外來鍵約束MySql
- 【Foreign Key】Oracle外來鍵約束三種刪除行為Oracle
- (10)邏輯綜合新增約束(環境約束)
- mysql中外來鍵約束級聯更新與刪除MySql
- Oracle約束Oracle
- oracle 約束Oracle
- Sqlserver中所有約束的型別,建立、修改與刪除SQLServer型別
- 生成指令碼,得到所有表的外來鍵約束,然後刪除並重建這些約束指令碼
- 資料完整性約束:主鍵、外來鍵、各種約束的建立刪除語句
- Oracle定義約束 外來鍵約束Oracle
- 解決資料庫的索引亂碼問題,先刪除外來鍵約束,再刪除主鍵約束及其索引資料庫索引
- [求助][資料庫]表間約束的刪除完整性?資料庫
- oracle中的約束Oracle
- oracle 約束詳解Oracle
- Oracle約束簡介Oracle
- oracle鍵約束控制Oracle
- 解決無法刪除表,提示被外來鍵約束引用
- mysql新增約束語句筆記MySql筆記
- 利用Storyboard給UIScrollView新增約束UIView
- oracle11g_RAC新增刪除節點Oracle
- oracle JOB 查詢 新增 修改 刪除 執行Oracle
- sql server中預設約束的通用sql指令碼的刪除方法SQLServer指令碼
- 利用虛擬列實現虛擬刪除的主外來鍵約束
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- informix新增刪除chunkORM
- oracle 註釋和約束Oracle
- oracle的延遲約束Oracle
- Oracle 增加修改刪除欄位與新增註釋Oracle
- 轉:Oracle RAC 新增和刪除OCR(10g)Oracle
- 如何解決邏輯刪除與資料庫唯一約束衝突資料庫
- Sql server 檢視錶引用、依賴項,刪除表及約束 指令碼SQLServer指令碼
- (9)邏輯綜合新增約束(時序、DRC)
- Oracle 11g系列:約束Oracle
- 修改oracle的約束欄位Oracle
- jQuery 新增和刪除classjQuery