溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle中怎么創(chuàng)建約束

發(fā)布時(shí)間:2021-07-26 10:51:23 來源:億速云 閱讀:256 作者:Leah 欄目:數(shù)據(jù)庫

Oracle中怎么創(chuàng)建約束,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

Oracle  創(chuàng)建主鍵,外鍵, check約束的幾種方法:(write by RFH)

1. 在創(chuàng)建表時(shí)創(chuàng)建約束:

//添加主鍵約束

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. 假如你已經(jīng)建表完成,而忘記添加約束,沒關(guān)系,可以單獨(dú)添加:

   //添加主鍵約束:

   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表來獲取當(dāng)前用戶的約束:

select constraint_name,table_name,constraint_type from  user_constraints;

如果我們要想看某個(gè)表的約束:

select constraint_name,table_name,constraint_type from  user_constraints where table_name=’TABLENAME’;//注意表名要大寫


類似的,索引表USER_INDEXES,序列表USER_SEQUENCES,觸發(fā)器表USER_TRIGGERS,存儲過程表USER_PROCEDURES,當(dāng)然還有USER_TABLES,VIEW_TABLES 等。有個(gè)驚人的發(fā)現(xiàn),之前建的外鍵會被添加到索引表中。他們中一般都有對應(yīng)字段table_name ,trigger_name等等。

4.我們已經(jīng)可以自己創(chuàng)建和查詢約束,那么如果想要刪掉無用的約束呢?

//刪除主鍵

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI