資源描述:
《oracle主鍵約束的創(chuàng)建,添加和刪除》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Oracle主鍵約束的創(chuàng)建,添加和刪除2010-06-2710:40:16
2、分類:learning
3、標(biāo)簽:
4、字號(hào)大中小訂閱oracle的主鍵約束添加刪除1、創(chuàng)建表的同時(shí)創(chuàng)建主鍵約束一、無(wú)命名createtableaccounts(accounts_numbernumberprimarykey,accounts_balancenumber);二、有命名createtableaccounts(accounts_numbernumberprimarykey,accounts_balancenumber,constrai
5、ntyyprimarykey(accounts_number));2、刪除表中已有的主鍵約束一、無(wú)命名SELECT*FROMUSER_CONS_COLUMNSWHERETALBE_NAME='accounts';找出主鍵名ALTERTABLEACCOUNTSDROPCONSTRAINTSYS_C003063;二、有命名ALTERTABLEACCOUNTSDROPCONTRAINTyy;3、向表中添加主鍵約束ALTERTABLEACCOUNTSADDCONSTRAINTPK_ACCOUNTSPRIMARYKEY(A
6、CCOUNTS_NUMBER);oracle中notnull約束是我們用到的最多的約束之一了。我們可以在創(chuàng)建表時(shí)讓系統(tǒng)自動(dòng)指定notnull約束的名字來(lái)創(chuàng)建,也可以手動(dòng)的的指定notnull約束的名字來(lái)創(chuàng)建,也可以在表創(chuàng)建好后手動(dòng)的修改表已達(dá)到增加notnull約束的目的。下面是一個(gè)例子createtabletest_not_null(idnumbernotnull,namevarchar2(30),telvarchar2(20)constrainttest_not_null_telnotnull);在這里我們創(chuàng)
7、建了一個(gè)表,并分別給id和tel兩列創(chuàng)建了notnull的約束,其中id的約束是系統(tǒng)自動(dòng)命名的,而tel的約束使我們手動(dòng)命名的。對(duì)于地二個(gè)列name,oracle系統(tǒng)不會(huì)自動(dòng)增加notnull的約束。我們可以在這個(gè)表里面插入一行數(shù)據(jù),例如:insertintotest_not_null(id,tel)values(123,’88888888′);我們也還可以使用修改表的方式來(lái)增加notnull約束。例如剛才我們沒(méi)有在test_not_null上建立空值約束,我們可以現(xiàn)在通過(guò)修改的方式來(lái)建立altertablete
8、st_not_nullmodify(namenotnull);如果你執(zhí)行了剛才我們的插入數(shù)據(jù)的操作,你執(zhí)行這句話的時(shí)候可能會(huì)有以下錯(cuò)誤:ORA-02296:無(wú)法啟用(SYS.)-找到空值這是因?yàn)槲覀儎偛旁诓迦霐?shù)據(jù)時(shí)已經(jīng)給name這一列增加了一個(gè)空值,現(xiàn)在又要在這一列上增加notnull約束,顯然是不行的。如果實(shí)際問(wèn)題中我們真的遇到這種需求,例如對(duì)于某個(gè)字段我們認(rèn)為原來(lái)可以為空,并且再該列插入了很多空值,后來(lái)我們發(fā)現(xiàn)實(shí)際上是不應(yīng)該為空的,可能會(huì)需先將原來(lái)的空值全部更新到一個(gè)新的有統(tǒng)一意義的值,然后在進(jìn)行空值約束的加
9、入操作。例如我們可以這樣做:updatetest_not_nullsetname=‘不知道’wherenameisnull;現(xiàn)在我們?cè)僭黾恿械膎otnull約束是沒(méi)有問(wèn)題了。altertabletest_not_nullmodify(namenotnull);表修改1.創(chuàng)建表:a.創(chuàng)建xs表中計(jì)算機(jī)專業(yè)學(xué)生的備份Createtablexs_jsjasselect*fromxswherezym=’計(jì)算機(jī)’;b.完整的例子: Createtabletest(xmchar(20)notnull,zyvarcha
10、r(30)default(‘計(jì)算機(jī)’));--CreatetablecreatetableDEPT(DEPTNONUMBER(2)notnull,DNAMEVARCHAR2(14),LOCVARCHAR2(13))tablespaceUSERSpctfree10initrans1maxtrans255storage(initial64Kminextents1maxextentsunlimited);--Create/Recreateprimary,uniqueandforeignkeyconstraintsalt
11、ertableDEPTaddconstraintPK_DEPTprimarykey(DEPTNO)usingindextablespaceUSERSpctfree10initrans2maxtrans255storage(initial64Kminextents1maxextentsunlimited);c.規(guī)則 Altertable命令有許多選項(xiàng),一個(gè)記住語(yǔ)法的方