您好,登錄后才能下訂單哦!
Oracle中怎么創建約束,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Oracle 創建主鍵,外鍵, check約束的幾種方法:(write by RFH)
1. 在創建表時創建約束:
//添加主鍵約束
Create table userinfo (userid number(20)constraint pk_user primary key ,uname varchar(20));
Create table userinfo(userid number(20),unamevarchar(20),constraint pk_user primary key(userid);
//添加外鍵約束
create table userinfo(useridnumber(20),deptid number(20) referencesdept(deptid));
create table userinfo(useridnumber(20),deptid number(20), constraint fk_dept foreign key(deptid)references dept(deptid));
//添加check約束
create table userinfo(useridnumber(20),age number(3) constraint ck_age check(age<100 and age>10));
create table userinfo(useridnumber(20),age number(3), constraint ck_age check(age<100 and age>10))
2. 假如你已經建表完成,而忘記添加約束,沒關系,可以單獨添加:
//添加主鍵約束:
alter table userinfo add constraintpk_user primary key(userid);
//添加外鍵約束:
alter table userinfo add constraint fk_dept foreign key(deptid)references dept(deptid);
//添加check約束
alter table userinfo add constraint ck_age check(age<100 andage>10);
3對表中約束的查詢:
Desc userinfo;
all_constraints 包含了表的約束信息,但是會被刷屏
我們用user_constrains表來獲取當前用戶的約束:
select constraint_name,table_name,constraint_type from user_constraints;
如果我們要想看某個表的約束:
select constraint_name,table_name,constraint_type from user_constraints where table_name=’TABLENAME’;//注意表名要大寫
類似的,索引表USER_INDEXES,序列表USER_SEQUENCES,觸發器表USER_TRIGGERS,存儲過程表USER_PROCEDURES,當然還有USER_TABLES,VIEW_TABLES 等。有個驚人的發現,之前建的外鍵會被添加到索引表中。他們中一般都有對應字段table_name ,trigger_name等等。
4.我們已經可以自己創建和查詢約束,那么如果想要刪掉無用的約束呢?
//刪除主鍵
alter table dept drop primary key;
或者
alter table userinfo drop constraint pk_user;
//刪除check約束
alter table userinfo drop constraint ck_age;
//刪除外鍵約束
alter table userinfo drop constraint fk_dept;
用alter table語句:(僅供參考)
完整用法:
ALTER [IGNORE] TABLE tbl_name alter_specification [,alter_specification] ... alter_specification: table_option ...
| ADD [COLUMN]column_definition [FIRST
| AFTER col_name ]
| ADD [COLUMN](column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type](index_col_name,...)
| ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition]
| ALTER [COLUMN]col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTERcol_name]
| MODIFY [COLUMN]column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEYfk_symbol
| DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name
| ORDER BY col_name [, col_name] ...
| CONVERT TO CHARACTERSET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTERSET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。