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