Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程課件05.第五章 表管理_第1頁
Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程課件05.第五章 表管理_第2頁
Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程課件05.第五章 表管理_第3頁
Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程課件05.第五章 表管理_第4頁
Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程課件05.第五章 表管理_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2023/12/211Oracle數(shù)據(jù)庫應(yīng)用

與開發(fā)案例教程第五章表管理2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程2第五章表管理5.1表和方案5.2創(chuàng)建表5.3維護(hù)表5.4維護(hù)約束條件5.5序列和同義詞2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程35.1表和方案常用數(shù)據(jù)類型在創(chuàng)建表的時(shí)候,不僅需要指定表名、列名,而且要根據(jù)情況為每個(gè)列選擇合適的數(shù)據(jù)類型并定義其長度,用來指定該列可以存取哪種類型的數(shù)據(jù)。Oracle中常用的數(shù)據(jù)類型如下所示:字符數(shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型日期和時(shí)間數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型大對象數(shù)據(jù)類型行數(shù)據(jù)類型2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程45.1表和方案用戶與方案方案是指用戶所擁有一系列邏輯數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫對象的集合,在Oracle數(shù)據(jù)庫中對象是以用戶來組織的,一個(gè)方案對應(yīng)一個(gè)數(shù)據(jù)庫用戶,每個(gè)用戶都有一個(gè)單獨(dú)的方案。用戶與方案名稱相同,而且是一一對應(yīng)的關(guān)系?!纠?-1】在數(shù)據(jù)庫ZCGL中創(chuàng)建用戶ZCGL_OPER,密碼是admin,默認(rèn)表空間是zcgl_tbs1,臨時(shí)表空間是zcgl_temp1,并為該用戶在表空間zcgl_tbs1中分配50M的限額。并將DBA角色授予該用戶。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程55.2

創(chuàng)建表創(chuàng)建表的一般語法所謂創(chuàng)建表,實(shí)際上就是在數(shù)據(jù)庫中定義表的結(jié)構(gòu)。表的結(jié)構(gòu)主要包括表與列的名稱、列的數(shù)據(jù)類型,以及建立在表或列上的約束?;菊Z法格式如下所示:CREATETABLE[schema.]table_name(column1datatype1[DEFAULTexpl][column1constraint],column2datatype2[DEFAULTexp2][column2constraint],…)[TABLESPACEtablespace_name];2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程65.2

創(chuàng)建表語法說明1)schema:指定表所屬的用戶方案名稱。如果用戶在自己的方案中創(chuàng)建表,要求該用戶必須具有CREATETABLE系統(tǒng)權(quán)限;如果要在其他方案中創(chuàng)建表,則要求該用戶必須具有CREATEANYTABLE系統(tǒng)權(quán)限。2)table_name:指定要?jiǎng)?chuàng)建的表的名稱。3)columnldatatypel:用于指定列的名稱和及其數(shù)據(jù)類型。4)DEFAULTexpl:用于指定列的默認(rèn)值。5)columnlconstraint:用于為約束命名。如果不使用columnlconstraint子句,Oracle將自動(dòng)為約束建立默認(rèn)的約束名。6)TABLESPACEtablespace_name:用于指定存儲(chǔ)表或索引的表空間。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程75.2

創(chuàng)建表創(chuàng)建標(biāo)準(zhǔn)表【例5-2】在用戶ZCGL_OPER的方案中創(chuàng)建一個(gè)名為ZICHANMINGXI的標(biāo)準(zhǔn)表?!纠?-3】使用DESC命令來顯示ZICHANMINGXI表的結(jié)構(gòu)。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程85.2

創(chuàng)建表創(chuàng)建臨時(shí)表如果在創(chuàng)建表時(shí)用關(guān)鍵字TEMPORARY或GLOBALTEMPORARY指定了表的類型,Oracle會(huì)生成一個(gè)臨時(shí)表。臨時(shí)表用于存放事務(wù)或會(huì)話的私有數(shù)據(jù),其表結(jié)構(gòu)會(huì)一直存在,但其數(shù)據(jù)只是在當(dāng)前事務(wù)內(nèi)或會(huì)話內(nèi)有效。臨時(shí)表分為事務(wù)臨時(shí)表和會(huì)話臨時(shí)表兩種?!纠?-4】創(chuàng)建事務(wù)臨時(shí)表temp1?!纠?-5】創(chuàng)建會(huì)話臨時(shí)表temp2。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程95.2

創(chuàng)建表基于已有的表創(chuàng)建新表通過在CREATETABLE語句中嵌套SELECT子查詢就可以基于已有的表或視圖來創(chuàng)建新表,這種創(chuàng)建表的語法格式是:CREATETABLEtable_name[(column1,column2,……)]ASSELECT<query>語法說明:1)column1,column2,……:定義新表的字段,新表中所有列的數(shù)據(jù)類型和長度都與原表中相應(yīng)的列一樣;如果省略該子句,那么新表的字段名與查詢結(jié)果集中的字段名同名。2)ASSELECT<query>:在子查詢中可以引用一個(gè)或多個(gè)表(或視圖),查詢結(jié)果集中包含的列即是新表中定義的列,并且查詢到的記錄都會(huì)插入到新表中。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程105.2

創(chuàng)建表基于已有的表創(chuàng)建新表【例5-6】通過復(fù)制表ZICHANMINGXI的結(jié)構(gòu)和數(shù)據(jù)來創(chuàng)建NEW_ZICHANMINGXI新表?!纠?-7】創(chuàng)建新表NEW_ZICHANMINGXI_1,其表結(jié)構(gòu)同ZICHANMINGXI表,但不含有該表的任何記錄。【例5-8】通過復(fù)制表ZICHANMINGXI的ZCID,F(xiàn)LID,BMID,ZTID,YHID和ZCMC等列的結(jié)構(gòu)和數(shù)據(jù),來創(chuàng)建新表NEW_ZICHANMINGXI_2,并將列ZCMC改名NAME。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程115.3維護(hù)表表的結(jié)構(gòu)創(chuàng)建完成以后,如果發(fā)現(xiàn)有不滿意或者不符合實(shí)際需要的地方,可以對表的結(jié)構(gòu)進(jìn)行修改:可以添加或刪除表中的列、修改表中列的名稱、數(shù)據(jù)類型和長度等,還可以對表進(jìn)行重新命名和重新組織。普通用戶只能對自己方案中的表進(jìn)行更改,而具有ALTERANYTABLE系統(tǒng)權(quán)限的用戶可以修改任何方案中的表。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程125.3維護(hù)表字段操作:添加列向一個(gè)現(xiàn)有的表中添加一個(gè)新列的語法格式是:ALTERTABLE[schema.]table_nameADD(column_definition1,column_definition2﹍);語法說明:新添加的列總是位于表的末尾。column_definition部分包括列名、列的數(shù)據(jù)類型及其默認(rèn)值。【例5-9】在ZICHANMINGXI表中添加一個(gè)新列:規(guī)格型號(hào)GGXH。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程135.3維護(hù)表字段操作:更改列如果需要調(diào)整一個(gè)表中某些列的數(shù)據(jù)類型、長度和默認(rèn)值,就需要更改這些列的屬性。更改表中現(xiàn)有列的語法格式是:ALTERTABLE[schema.]table_nameMODIFY(column_name1new_attributesl,column_name2new_attributes2﹍);【例5-10】將ZICHANMINGXI表的BMID列的數(shù)據(jù)類型改為CHAR(8),將BZ列的數(shù)據(jù)類型改為VARCHAR2(90)。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程145.3維護(hù)表字段操作:刪除列當(dāng)不再需要某些列時(shí),可以將其刪除。刪除列時(shí)Oracle將刪除表中每條記錄內(nèi)的相應(yīng)列的值,并釋放其占用的存儲(chǔ)空間。在被刪除列上建立的索引和約束也會(huì)被刪除,如果被刪除的列是一個(gè)多列約束的組成部分,那么就必須指定CASCADECONSTRAINTS選項(xiàng),這樣才會(huì)刪除相關(guān)的約束。直接刪除列的語法是:ALTERTABLE[schema.]table_nameDROP(column_name1,column_name2﹍)[CASCADECONSTRAINTS];說明:可以在括號(hào)中使用多個(gè)列名,每個(gè)列名用逗號(hào)分隔。【例5-11】下面的語句刪除ZICHANMINGXI表中的GGXH列和BZ列 2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程155.3維護(hù)表字段操作:將列標(biāo)記為UNUSED狀態(tài)為了避免在數(shù)據(jù)庫使用高峰期間由于執(zhí)行刪除列的操作而占用過多系統(tǒng)資源,可以暫時(shí)通過ALTERTABLE--SETUNUSED語句將要?jiǎng)h除的列設(shè)置為UNUSED狀態(tài)。當(dāng)表中某列被設(shè)置為UNUSED狀態(tài)后,用戶將無法對該列進(jìn)行各種DML操作,實(shí)際上Oracle并沒有釋放該列占用的存儲(chǔ)空間,該列還是存在于數(shù)據(jù)庫中。該語句的語法格式為:ALTERTABLE[schema.]table_nameSETUNUSED(column_name1,column_name2﹍)[CASCADECONSTRAINTS];

2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程165.3維護(hù)表字段操作:將列標(biāo)記為UNUSED狀態(tài)【例5-12】將ZICHANMINGXI表中的ZCYZ列和GRSJ列標(biāo)記為UNUSED狀態(tài): 【例5-13】在數(shù)據(jù)字典視圖USER_UNUSED_COL_TABS、ALL-_UNUSED_COL_TABS和DBA_UNUSED_COL_TABS中可以查看數(shù)據(jù)庫中被標(biāo)記為UNUSED狀態(tài)的列所在表的信息。【例5-14】將ZICHANMINGXI表中的被標(biāo)記為UNUSED狀態(tài)的列刪除:2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程175.3維護(hù)表重命名表當(dāng)重新命名表時(shí),Oracle會(huì)自動(dòng)把舊表上的視圖、對象權(quán)限和約束條件轉(zhuǎn)換到新表名上,但所有與舊表相關(guān)的視圖、同義詞、存儲(chǔ)過程和函數(shù)等對象會(huì)失效??梢允褂脙煞N方法來重新命名表。 1.RENAME語句使用RENAME語句來修改一個(gè)表、視圖、序列、專用同義詞名稱的語法格式為:RNAMEold_tablenameTOnew_tablename【例5-15】把ZICHANMINGXI表的名稱更改為ZICHANMINGXI_CHANGE:2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程185.3維護(hù)表重命名表 2.ALTERTABLE語句用RENAME語句只能更改自己方案中對象的名字,而不能重命名其他用戶方案中對象的名字。可以使用帶有RENAMETO子句的ALTERTABLE語句來重命名其他用戶方案中對象的名字。但用戶必須對該表擁有ALTER權(quán)限或者ALTERANYTABLE系統(tǒng)權(quán)限才能實(shí)現(xiàn)這一操作。【例5-16】把ZICHANMINGXI_CHANGE表的名稱更改為ZICHANMINGXI:2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程195.3維護(hù)表刪除表 當(dāng)不再需要某個(gè)表時(shí),可以將該表刪除,刪除表時(shí)該表中的數(shù)據(jù)也將被刪除。其語法格式如下:DROPTABLE[schema.]table_name[CASCADECONSTRAINTS];說明:如果在table_name前面沒有加schema,則表示刪除自己方案中的表。如果要?jiǎng)h除其他方案中的表,則必須加schema,并且還必須具有DROPANYTABLE系統(tǒng)權(quán)限?!纠?-17】刪除ZICHANMINGXI表?!纠?-18】刪除表ZICHANMINGXI,同時(shí)刪除所有引用該表的視圖,約束,索引和觸發(fā)器。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程205.3維護(hù)表移動(dòng)表 在創(chuàng)建表的時(shí)候如果沒有指定表所屬的表空間,Oracle將把該表存儲(chǔ)到默認(rèn)表空間中。使用ALTERTABLE…MOVE語句將表從一個(gè)表空間移動(dòng)到另一個(gè)表空間中。其語法格式為:ALTERTABLEtable_nameMOVETABLESPACEtablespace_name;【例5-19】將ZICHANMINGXI表從當(dāng)前的表空間移動(dòng)到USERS表空間中。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程215.3維護(hù)表查看表信息 創(chuàng)建表時(shí),Oracle會(huì)將表的定義存放到數(shù)據(jù)字典中,常用數(shù)據(jù)字典有:1)DBA_TABLES:描述數(shù)據(jù)庫中所有關(guān)系表。2)ALL_TABLES:描述用戶可以訪問的所有表。3)USER_TABLES:描述當(dāng)前用戶擁有的表?!纠?-20】查詢用戶ZCGL_OPER的表ZICHANMINGXI信息:2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程225.4維護(hù)約束條件數(shù)據(jù)庫的完整性是指維護(hù)數(shù)據(jù)的正確性、一致性和安全性。例如,當(dāng)用戶執(zhí)行INSERT、DELETE和UPDATE等操作時(shí),如果將無效的數(shù)據(jù)添加到數(shù)據(jù)庫的表中就破壞了數(shù)據(jù)庫的完整性。約束條件是在表中定義的,用于維護(hù)數(shù)據(jù)庫完整性的一些規(guī)則??梢栽趧?chuàng)建表時(shí)在單個(gè)表中或多個(gè)表之間定義一些約束條件來防止將錯(cuò)誤的數(shù)據(jù)插入到表中,并可以保證數(shù)據(jù)的一致性。 Oracle數(shù)據(jù)庫的完整性約束主要包括主鍵約束(PRIMARYKEY),非空約束(NOTNULL),唯一性約束(UNIQUE),檢查約束(CHECK)和外鍵約束(FOREIGNKEY)。如果某約束只作用于一列,該約束可以定義為列約束或表約束;如果某約束作用于多個(gè)列,那么該約束應(yīng)該定義為表約束。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程235.4維護(hù)約束條件約束條件的定義:非空約束NOTNULL NOTNULL即非空約束,該約束只能定義為列約束,用于限定一個(gè)字段的取值不能為空。如果在某列上定義了NOTNULL約束,插入數(shù)據(jù)時(shí),必須為該列提供數(shù)據(jù)。同一個(gè)表中可以有多個(gè)列被定義為NOTNULL約束?!纠?-21】在BUMEN表的BMID列上定義NOTNULL約束?!纠?-22】在BUMEN表的BMMC列上定義NOTNULL約束。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程245.4維護(hù)約束條件約束條件的定義:唯一性約束UNIQUE UNIQUE約束即唯一性約束,用于要求所約束的列中不能有重復(fù)值。可以為一列或者多列組合定義UNIQUE約束。Oracle會(huì)自動(dòng)為具有UNIQUE約束的列建立一個(gè)唯一索引(UniqueIndex),對同一個(gè)列,可以同時(shí)定義UNIQUE約束和NOTNULL約束。【例5-23】在BUMEN表的BMMC列上定義UNIQUE約束。

2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程255.4維護(hù)約束條件約束條件的定義:檢查約束CHECKCHECK約束即檢查約束,用于強(qiáng)制在約束中的列必須滿足指定的條件表達(dá)式。該條件表達(dá)式需要引用表中的一列或多列,其計(jì)算結(jié)果是一個(gè)布爾值。定義CHECK約束列的值需要滿足條件表達(dá)式,但可以是NULL。CHECK可以定義為列約束或者表約束。在單個(gè)列上,可以定義多個(gè)CHECK約束?!纠?-24】在表BUMEN的BMID列上定義CHECK約束“CK”。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程265.4維護(hù)約束條件約束條件的定義:主鍵約束PRIMARYKEYPRIMARYKEY約束為主鍵約束,用于唯一地標(biāo)識(shí)出表中的每行數(shù)據(jù)。PRIMARYKEY約束列的值不能重復(fù),并且也不能為NULL。定義PRIMARYKEY約束時(shí),Oracle會(huì)自動(dòng)為具有PRIMARYKEY約束的列建立一個(gè)唯一索引和一個(gè)NOTNULL約束。一個(gè)表中只能有一個(gè)PRIMARYKEY約束。【例5-25】在BUMEN表的BMID列上定義主鍵約束“BUMEN_PK”。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程275.4維護(hù)約束條件約束條件的定義:外鍵約束FOREIGNKEYFOREIGNKEY約束即外鍵約束,用于與其他表(父表)中的列(參照列)建立連接,定義主從表之間的聯(lián)系。將父表中具有PRIMARYKEY約束或UNIQUE約束的列包含在另一個(gè)表(子表)中,這些列就構(gòu)成了子表的外鍵。定義了FOREIGNKEY約束的列中只能包含相應(yīng)的、在其他表中引用的列的值,或者為NULL值。在單個(gè)列上,可以同時(shí)定義FOREIGNKEY約束和NOTNULL約束。同樣可以為一列定義FOREIGNKEY約束,也可以為多列的組合定義FOREIGNKEY約束。【例5-26】在BUMEN表中,將BMID列定義為SJBM列的外鍵約束。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程285.4維護(hù)約束條件約束的狀態(tài)1)ENABLEVALIDATE(啟用驗(yàn)證狀態(tài))在定義或增加約束時(shí)如果不指定約束狀態(tài),則ENABLEVALIDATE為約束的默認(rèn)狀態(tài)。當(dāng)將約束轉(zhuǎn)變?yōu)榇藸顟B(tài)后,Oracle會(huì)對新、舊數(shù)據(jù)進(jìn)行約束檢查。這種狀態(tài)要求表中所有的記錄都滿足約束規(guī)則。2)ENABLENOVALIDATE(啟用非驗(yàn)證狀態(tài))當(dāng)將約束轉(zhuǎn)變?yōu)榇藸顟B(tài)后,Oracle會(huì)對新數(shù)據(jù)進(jìn)行約束檢查,但已存在的舊數(shù)據(jù)可以不滿足約束規(guī)則。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程295.4維護(hù)約束條件約束的狀態(tài)3)DISABLEVALIDATE(禁用驗(yàn)證狀態(tài))當(dāng)將約束轉(zhuǎn)變?yōu)榇藸顟B(tài)后,約束被禁用,不允許對表進(jìn)行任何DML操作。但是表中已存在的數(shù)據(jù)仍然滿足約束規(guī)則。4)DISABLENOVALIDATE(禁用非驗(yàn)證狀態(tài))當(dāng)將約束轉(zhuǎn)變?yōu)榇藸顟B(tài)后,Oracle對新、舊數(shù)據(jù)都不進(jìn)行約束檢查。這種狀態(tài)下,表中所有的數(shù)據(jù)都可以不滿足約束規(guī)則。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程305.4維護(hù)約束條件約束的狀態(tài)【例5-27】對表BUMEN禁用主碼。【例5-28】通過約束名稱來改變約束狀態(tài)?!纠?-29】對BUMEN表禁用主碼并將對該主碼的外鍵引用刪除。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程315.4維護(hù)約束條件添加和刪除約束:添加約束為已經(jīng)建立的表添加新的約束可以使用ALTERTABLE…ADD語句完成,其添加約束語法格式是:ALTERTABLEtable_nameADD[CONSTRAINTconstraint_name]constraint_type(column1,column2,…)[condition]語法說明:1)CONSTRAINT關(guān)鍵字:用于指定約束名,如果沒有為約束指定名稱,Oracle會(huì)自動(dòng)為約束命名為SYS_C。2)constraint_type和condition:分別用于指定約束類型和約束條件。3)column1等:用于指定添加約束的列。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程325.4維護(hù)約束條件添加和刪除約束:添加約束【例5-30】為BUMEN表添加主鍵約束?!纠?-31】為表ZICHANMINGXI的BMID列添加外鍵約束:外鍵為BUMEN表的BMID列?!纠?-32】為表BUMEN的name列添加UNIQUE約束。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程335.4維護(hù)約束條件添加和刪除約束:刪除約束刪除約束是通過執(zhí)行ALTERTABLE…DROP語句來完成的。刪除約束的命令格式為:ALTERTABLEtable_nameDROP[CONSTRAINTconstraint_name];【例5-33】刪除BUMEN表的BMMC列上的UNIQUE約束?!纠?-34】刪除BUMEN表的約束的名稱CKK。【例5-35】刪除BUMEN表的主鍵約束。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程345.4維護(hù)約束條件查看約束信息視圖描述DBA_CONSTRAINTS查看數(shù)據(jù)庫中所有約束信息。ALL_CONSTRAINTS查看當(dāng)前用戶可以訪問的所有約束信息。USER_CONSTRAINTS查看當(dāng)前用戶的所有約束信息。DBA_CONS_COLUMNS查看數(shù)據(jù)庫中所有約束對應(yīng)列的信息。ALL_CONS_COLUMNS查看當(dāng)前用戶可以訪問的所有約束的列的信息2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程355.4維護(hù)約束條件查看約束信息【例5-36】通過查詢視圖USER_CONSTRAINTS來查看當(dāng)前用戶的BUMEN表的所有約束?!纠?-37】通過查詢視圖USER_CONS_COLUMNS來查看表BUMEN的約束都定義在哪些列上。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程365.5序列和同義詞創(chuàng)建和使用序列序列(sequence)是定義在數(shù)據(jù)字典中用于生成一個(gè)整數(shù)序列的數(shù)據(jù)庫對象,用來為表中數(shù)據(jù)類型的主鍵提供有序的唯一值。多個(gè)用戶可以共享序列中的序號(hào)。序列不占用實(shí)際的存儲(chǔ)空間,在數(shù)據(jù)字典中只存儲(chǔ)序列的定義描述。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程375.5序列和同義詞創(chuàng)建和使用序列:創(chuàng)建序列為了在自己的方案中創(chuàng)建序列,要求用戶必須具有CREATESEQUENCE系統(tǒng)權(quán)限;如果要在其它用戶中創(chuàng)建序列,則用戶必須具有CREATEANYSEQUENCE系統(tǒng)權(quán)限。創(chuàng)建序列使用CREATESEQUENCE語句完成,其語法格式是:CREATESEQUENCEsequence_name[STARTWITHn1][INCREMENTBYn2][{MAXVALUEn3|NOMAXVALUE}][{MINVALUEn4|NOMINVALUE}][{CACHEn5|NOCACHE}][{CYCLE|NOCYCLE}][ORDER];2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程385.5序列和同義詞創(chuàng)建和使用序列:創(chuàng)建序列語法說明:1)sequence_name:用于指定序列名。2)nl、n2、n3、n4、n5:表示整數(shù)。3)STARTWITH:用于指定序列中的序號(hào)從哪個(gè)數(shù)字開始,默認(rèn)值為序列號(hào)的最小值。4)INCREMENTBY:用于指定序號(hào)的增量,序列號(hào)可以遞增也可以遞減。5)MAXVALUE:用來指定序列中的最大序列號(hào),如果沒有最大序列號(hào),可用NOMAXVALUE代替。同樣,MINVALUE用于指定序列中的最小序列號(hào),其最小值必須小于或等于STARTWITH中的開始值nl。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程395.5序列和同義詞創(chuàng)建和使用序列:創(chuàng)建序列語法說明:6)CACHE:用于緩沖預(yù)分配的序列號(hào)個(gè)數(shù)n5。如果不需要對預(yù)分配的序列號(hào)個(gè)數(shù)進(jìn)行緩沖,則可以使用NOCACHE代替。7)CYCLE:用于使序列中的序號(hào)可以循環(huán)使用,默認(rèn)為NOCYCLE。8)ORDER:用于指定按順序生成序列號(hào)?!纠?-38】SCOTT用戶創(chuàng)建ZICHANMINGXI_SEQ序列。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程405.5序列和同義詞創(chuàng)建和使用序列:使用序列序列提供了NEXTVAL與CURRVAL兩個(gè)偽列,用來訪問序列中的序號(hào)。NEXTVAL偽列返回序列生成的下一個(gè)值,而CURRVAL返回序列的當(dāng)前值。在首次使用序列中的序號(hào)時(shí),必須引用一次序列的NEXTVAL偽列,用于初始化序列的值,否則會(huì)出現(xiàn)錯(cuò)誤提示。【例5-39】對序列ZICHANMINGXI_SEQ執(zhí)行SELECT語句查看其當(dāng)前序列值?!纠?-40】對于已創(chuàng)建的序列ZICHANMINGXI_SEQ執(zhí)行SELECT語句?!纠?-41】創(chuàng)建序列zcseq,然后使用序列zcseq向ZICHANMINGXI表中插入幾條記錄,最后查詢ZICHANMINGXI表。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程415.5序列和同義詞創(chuàng)建和使用序列:修改和刪除序列當(dāng)需要修改序列的時(shí)候,可以使用ALTERSEQUENCE命令完成。如果用戶要修改其他方案的序列,則該用戶必須具有ALTERANYSEQUENCE系統(tǒng)權(quán)限?!纠?-42】對ZICHANMINGXI_SEQ序列進(jìn)行更改?!纠?-43】刪除ZICHANMINGXI_SEQ序列。2023/12/21Oracle數(shù)據(jù)庫應(yīng)用與開發(fā)案例教程425.5序列和同義詞同義詞同義詞(synonym)是為表、索引和視圖等數(shù)據(jù)庫對象定義的別名,使用同義詞可以簡化SQL語句的書寫。同義詞的定義存儲(chǔ)在數(shù)據(jù)字典中,不占用任何實(shí)際的存儲(chǔ)空間。同義詞分為以下兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論