




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章數據表的創(chuàng)建和管理學習目標熟悉Oracle數據庫的常用數據類型掌握數據表的創(chuàng)建、修改和刪除命令熟悉數據完整性約束的概念、類型掌握數據完整性約束的定義和管理掌握數據表中數據的插入、更新和刪除命令掌握使用SQLDeveloper工具管理數據表的方法掌握使用SQLDeveloper工具完成數據導入的方法本章節(jié)次
數據類型5.1
數據表的創(chuàng)建和管理5.2
數據完整性約束5.3
5.4
數據操作5.5使用SQLDeveloper工具管理數據表5.6
創(chuàng)建案例數據庫表
數據類型5.1關系數據庫通過表(關系)來表示實體及其聯系。表是由行和列組成的二維表,每個表包含一組固定的列字段,而列字段由數據類型(DATATYPE)和長度(LENGTH)組成,以描述該表所跟蹤的實體的屬性。不同的數據類型決定了Oracle在存儲它們的時候使用的方式、大小,以及在使用它們的時候選擇什么運算符、函數等。
數據類型5.1Oracle支持多種數據類型,主要有數值類型、日期/時間類型和字符串類型。(1)數值數據類型:包括整數類型和小數類型。(2)日期/時間類型:包括DATE和TIMESTAMP。(3)字符串類型:包括CHAR、VARCHAR2、NVARCHAR2、NCHAR和LONG5種。
數據類型5.1數值數據類型主要用來存儲數字。Oracle提供了多種數值類型,不同的數值類型提供了不同的取值范圍??梢源鎯Φ闹捣秶酱?,其所需要的存儲空間就越大。Oracle的數值類型主要通過NUMBER來實現。NUMBER類型可以存儲正數、負數、零、定點數和精度為30的浮點數。使用的語法格式如下:NUMBER(p[,s])取值范圍為1~30,5.1.1數值數據類型
數據類型5.1NUMBER(p[,s])是可變長的數值列,允許0、正值及負值,p指所有有效數字的位數,取值范圍為1~30。s指小數點以后的位數,正值s為小數位數,負值s表示四舍五入到小數點左部多少位,其取值范圍-84~127。例如,number(5,3),這個字段的最大值時99.999,如果數值超過了位數限制就按照四舍五入的原則截取多余的位數。如在這個字段輸入54.2923,則真正保存的數值是54.292。輸入54.2347,則保存的數值是54.235。如果不需要小數部分,則使用整數來保存數據,可以定義為number(m,0)或者number(m)。如number(3,0)或number(3)表示的是一樣的,表示保存三位長度的整數。5.1.1數值數據類型
數據類型5.1Oracle中表示日期/時間的數據類型,主要包括DATE和TIMESTAMP。具體的內容和區(qū)別如表5.1所示。5.1.2日期/時間類型類型名稱說明DATE用來存儲日期和時間,取值范圍是公元前4712年到公元9999年12月31日TIMESTAMP用來存儲日期和時間,與DATE類型的區(qū)別就是顯示日期和時間時更準確,DATE類型精確到秒,而TIMESTAMP的數據類型可以精確到小數秒,TIMESTAMP存放日期和時間還能顯示上午、下午和時區(qū)
數據類型5.1在Oracle中,可以使用SYSDATE來查詢數據庫的當前時間。查詢語句如下:SELECTSYSDATEFROMDUAL;查詢結果如圖5.1所示??梢姅祿炷J的時間格式為“dd-mm-yyyy”。5.1.2日期/時間類型
數據類型5.1如果用戶想要按照指定的格式輸入時間,需要修改時間的默認格式,如修改輸入格式為“yyyy-mm-dd”,修改的SQL語句如下:ALTERSESSIONSETnls_date_format=’yyyy-mm-dd’;該語句僅修改本次登錄會話(SESSION)的情況,不能修改別的會話。如果你登出了,這些信息就丟失了。當你重新登錄以后,又是一個新的會話,即又恢復到系統(tǒng)默認的設置。5.1.2日期/時間類型
數據類型5.1【例5.1】日期類型數據實例。創(chuàng)建數據表tmp1,定義數據類型為DATE的字段d,向表中插入值。--首先創(chuàng)建表tmp1:CREATETABLEtmp1(dDATE);--向表中插入當前日期:INSERTINTOtmp1VALUES(SYSDATE);--向表中插入數據:INSERTINTOtmp1VALUES(‘8-5月-2019’);查看表中數據的結果如圖5.2所示。5.1.2日期/時間類型
數據類型5.1--修改日期的默認格式:ALTERSESSIONSETnls_date_format=’yyyy-mm-dd’;--向表中插入’yyyy-mm-dd’格式的數據:INSERTINTOtmp1VALUES(‘2019-08-01’);--向表中插入’yyyymmdd’格式的數據:INSERTINTOtmp1VALUES(‘20190802’);--向表中插入日期和時間并指定格式:INSERTINTOtmp1VALUES(TO_DATE(‘2019-05-0112:30:45’,’yyyy-mm-ddHH24:mi:ss’));查看表中數據的結果如圖5.3所示。5.1.2日期/時間類型
數據類型5.1【例5.2】創(chuàng)建數據表tmp2,定義數據類型為TIMESTAMP的字段ts,向表中插入值’2019-05-0112:30:45’。創(chuàng)建數據表tmp2:CREATETABLEtmp2(tsTIMESTAMP);向表中插入日期和時間并指定格式:INSERTINTOtmp1VALUES(TO_TIMESTAMP(‘2019-05-0112:30:45’,’yyyy-mm-ddHH24:mi:ss’));查看插入數據的結果如圖5.4所示。5.1.2日期/時間類型
數據類型5.1如果只需要記錄日期,則可以使用DATE類型。如果需要記錄日期和時間,可以使用TIMESTAMP類型。特別是需要顯示上午、下午或者時區(qū)時,必須使用TIMESTAMP類型。在上面的例子中,TO_DATE()、TO_TIMESTAMP()是類型轉換函數,按照指定的格式進行類型轉換。5.1.2日期/時間類型
數據類型5.1表5.2列出了Oracle中不同字符串類型的取值范圍等信息。5.1.3字符串類型數據類型說明取值范圍CHAR(n)定長的字符型數據0~2000NCHAR(n)存儲Unicode的定長字符型數據,它的最大長度取決于國家字符集0~1000VARCHAR2(n)可變長的字符型數據0~4000NVARCHAR2(n)存儲Unicode的變長字符型數據0~1000LONG存儲變長的字符串0~2G
數據類型5.1【例5.3】創(chuàng)建表tmp3,定義字段ch和vch,數據類型分別定義為CHAR(4)和VARCHAR2(4),向兩個字段插入數據“ab”。--創(chuàng)建表tmp3:CREATETABLEtmp3(chCHAR(4),vchVARCHAR2(4));--插入數據:INSERTINTOtmp3VALUES(‘ab’,’ab’);--查詢兩個字段值的長度:SELECTLENGTH(CH),LENGTH(VCH)FROMtmp3;可見定長字符串在存儲時長度是固定的,而變長字符串的存儲長度根據實際插入的數據長度而定。5.1.3字符串類型在Oracle中,創(chuàng)建表的命令為CREATETABLE,語法格式如下:CREATETABLE<表名>(字段名1,數據類型[列級表約束],字段名2,數據類型[列級表約束],……[表級約束]);5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2在表中創(chuàng)建列時,必須為其指定數據類型,列的數據類型決定了數據的取值、范圍和存儲格式。如果需要創(chuàng)建多個列,列和列之間要用逗號隔開。為創(chuàng)建的表命名時,需要遵循的規(guī)則如下:(1)表名首字符應該為字母(2)不能使用保留字(3)表名長度不超過30字符(4)同一用戶下表名不能重復(6)可以使用下劃線、數字、字母,但不能使用空格和單引號(7)表名不區(qū)分大小寫,系統(tǒng)自動轉換為大寫5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2【例5.4】創(chuàng)建學生表student,結構如表5.3所示。5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2列名數據類型說明Snumchar(10)學號Snamechar(20)姓名Ssexchar(4)性別Sbirthdate出生日期創(chuàng)建student表的SQL語句如下:CREATETABLEstudent(Snumchar(10),Snamechar(20),Ssexchar(4),Sbirthdate);5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2列名數據類型說明Snumchar(10)學號Snamechar(20)姓名Ssexchar(4)性別Sbirthdate出生日期表創(chuàng)建后,可以使用DESC命令查看數據表的結構,SQL語句執(zhí)行結果如圖5.7所示。5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2另外,SQLDeveloper工具也提供了執(zhí)行SQL命令的窗口。打開SQLDeveloper工具,連接數據庫,點擊工具欄上的“”按鈕,即可打開查詢編輯器,如圖5.8所示。5.2.1創(chuàng)建數據表
數據表的創(chuàng)建和管理5.2修改數據表,指的是修改數據庫中已經存在的數據表的結構。Oracle使用ALTERTABLE命令修改表。常用的修改表的操作有:修改表名、修改字段數據類型或字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、增減或刪除表的約束等。本節(jié)將介紹表的基本的修改操作,關于約束的部分,將在5.3節(jié)中介紹。5.2.2修改數據表
數據表的創(chuàng)建和管理5.2ALTERTABLE命令的語法格式如下:ALTERTABLE<表名>[RENAME{TO<新表名>|COLUMN<舊字段>TO<新字段>}][ADD(<新列名><數據類型>[列級表約束],...n)]/*增加新列*/[ADD(CONSTRAINT表級約束,...n)]/*增加新的表級約束*/[MODIFY(<列名>[<數據類型>][列級表約束],...n)]/*修改已有列屬性*/[<DROP子句>]5.2.2修改數據表
數據表的創(chuàng)建和管理5.2說明:(1)RENAMETO:用于數據表或字段的重新命名??梢詫⑴f表名改為新表名。當使用COLUMN關鍵字時,指修改字段名。(2)ADD子句:用于向表中增加一個新列或新的表級約束。新的列定義和創(chuàng)建表時定義列的格式一樣,一次可以添加多個列,中間用逗號分開。(3)MODIFY子句:用于修改表中某列的屬性,如數據類型、默認值等。在修改數據類型時需要注意,如果表中該列所存數據的類型與將要修改的列類型沖突,則會發(fā)生錯誤。如原來CHAR類型的列要修改為NUMBER類型,而原來列中的字符數據無法修改,此時會發(fā)生錯誤。5.2.2修改數據表
數據表的創(chuàng)建和管理5.2(4)DROP子句:該子句用于從表中刪除指定的字段或約束。語法格式如下:DROP{ COLUMN<列名>/*刪除指定的列*/ ∣PRIMARY[KEY]/*刪除表的主鍵*/ ∣UNIQUE(<列名>,…n)/*刪除指定列上的UNIQUE約束*/ ∣CONSTRAINT<約束名>/*刪除表的完整性約束*/ ∣[CASCADE]/*刪除其他所有的完整性約束,這些約束依賴于被刪除的完整性約束*/}5.2.2修改數據表
數據表的創(chuàng)建和管理5.2注意:如果要刪除的UNQIUE約束和PRIMARYKEY約束所在的列被其他表的外鍵相關聯時,如果沒有刪除外鍵,則不能刪除引用完整性約束中的UNQIUE約束和PRIMARYKEY約束。5.2.2修改數據表
數據表的創(chuàng)建和管理5.2【例5.5】假設存在數據表tmp_old,將數據表tmp修改為tmp_new。SQL語句如下:ALTERTABLEtmp_oldRENAMETOtmp_new;執(zhí)行后,表名發(fā)生變更,系統(tǒng)提示:TableTMP_OLD已變更。5.2.2修改數據表
數據表的創(chuàng)建和管理5.2【例5.6】使用ALTERTABLE語句修改數據庫中的表student。(1)在表student中增加兩列:Sdept(系別)、Snote(備注)。SQL語句如下:ALTERTABLEstudentADD(Sdeptvarchar(100), Snotevarchar2(200));5.2.2修改數據表
數據表的創(chuàng)建和管理5.2【例5.6】使用ALTERTABLE語句修改數據庫中的表student。(2)在表student中修改名為Snote的列數據類型長度為1000。SQL語句如下:ALTERTABLEstudentMODIFY(Snotevarchar2(1000));(3)將表student中的Snote列改名為note。SQL語句如下:ALTERTABLEstudentRENAMECOLUMNSnoteTOnote;5.2.2修改數據表
數據表的創(chuàng)建和管理5.2【例5.6】使用ALTERTABLE語句修改數據庫中的表student。(4)在表student中刪除名為Sdept和note的列。SQL語句如下:ALTERTABLEstudentDROPCOLUMNSdept;ALTERTABLEstudentDROPCOLUMNnote;注意:一次只能刪除一列。5.2.2修改數據表
數據表的創(chuàng)建和管理5.2刪除數據表就是將數據庫中已經存在的表從數據庫中刪除。在刪除表的同時,表的定義和表中所有的數據均會被刪除。因此,在進行表的刪除操作前,最好對表中的數據做個備份,以免造成無法挽回的后果。Oracle使用DROPTABLE命令修改表,其語法格式如下:DROPTABLE<表名>;5.2.3刪除數據表
數據表的創(chuàng)建和管理5.2【例5.7】使用DROPTABLE命令刪除數據庫中的表student。SQL語句如下:DROPTABLEstudent;結果如下:系統(tǒng)提示:TableSTUDENT已刪除。5.2.3刪除數據表
數據表的創(chuàng)建和管理5.2DROPTABLE可以一次刪除一個或多個沒有被其他表關聯的數據表。在數據表之間存在外鍵關聯的情況下,如果直接刪除父表,結果會顯示失敗。原因是直接刪除,將破壞表的參照完整性。如果必須要刪除,可以先刪除與之關聯的子表,再刪除父表?;蛘呦冉獬怄I約束條件,再刪除父表。5.2.3刪除數據表
數據表的創(chuàng)建和管理5.2在關系表中,通常對列的取值有不同的約束和限制。符合這些約束的數據是有意義的數據。反之,不符合這些約束的數據往往是錯誤的、不合法的數據。Oracle使用完整性約束來防止不合法的數據進入到數據表中。完整性約束可以在創(chuàng)建表的時候定義,也可以創(chuàng)建表后添加。對于已經定義的約束可以進行刪除操作。完整性規(guī)則定義在表上,存儲在數據字典中。如果通過完整性約束增強的數據的約束和限制改變了,管理員只需要修改完整性約束。與數據庫相關的所有應用都會自動與修改后的約束保持一致。這種設置有力地簡化了對數據和應用程序的管理。
數據完整性約束5.3數據的完整性就是指數據庫中的數據在邏輯上的一致性和準確性。關系數據庫的完整性約束可以分為三類:域完整性、實體完整性和參照完整性。(1)域完整性(2)實體完整性(3)參照完整性5.3.1數據完整性類型
數據完整性約束5.3(1)域完整性域完整性又稱為列完整性,指定一個數據集對某一個列是否有效、確定是否允許空值。域完整性通常是通過有效性檢查來實現的,還可以通過限制數據類型、格式或者可能的取值范圍來實現。5.3.1數據完整性類型
數據完整性約束5.3(2)實體完整性實體完整性也可以稱為行完整性,要求表中的每一行有一個唯一的標識符,這個標識符就是主關鍵字。通過索引、唯一性約束(UNIQUE)、主鍵約束(PRIMARYKEY)可實現數據的實體完整性。5.3.1數據完整性類型
數據完整性約束5.3(3)參照完整性參照完整性又稱為引用完整性,它保證主表與從表(或稱為父表與子表、被參照表與參照表)中的數據的一致性。在Oracle中,參照完整性的實現是通過定義外鍵(FOREIGNKEY)與主鍵(PRIMARYKEY)之間的對應關系實現的。如果在被參照表中的一行被某外關鍵字引用,那么這一行既不能被刪除,也不能修改主關鍵字。參照完整性確保鍵值在所有表中的一致性。5.3.1數據完整性類型
數據完整性約束5.3主鍵是指在表中能唯一標識表的每個數據行的一個或多個表列。外鍵是指如果一個表中的一個或若干個字段的組合是另一個表的主鍵,則稱該字段或字段組合為該表的外鍵。5.3.1數據完整性類型
數據完整性約束5.3例如,如圖5.9所示,對于學生選課數據庫中成績表SC中的每條記錄的學號Snum、課程號Cnum必須是在學生表student和課程表course表中已存在的記錄才有意義。因此。將student和course表作為主表,SC表作為從表。將SC中的Snum和Cnum定義為外鍵,從而建立主表和從表之間的聯系實現參照完整性。5.3.1數據完整性類型
數據完整性約束5.3一旦定義了兩個表之間的參照完整性,則需要滿足:(1)從表不能引用不存在的鍵值。(2)如果主表中的鍵值更改了,那么在整個數據庫中,對從表中的鍵值的所有引用都要進行一致性的更改。(3)如果主表中沒有關聯的記錄,則不能將記錄添加到從表。(4)如果要刪除主表中的某一記錄,應先刪除從表中與該記錄匹配的相關記錄。5.3.1數據完整性類型
數據完整性約束5.3完整性約束是通過限制列數據、行數據和表之間數據來保證數據完整性的有效方法。約束是保證數據完整性的標準方法。每一種數據完整性類型,如域完整性、實體完整性和參照完整性,都可以由不同的約束類型來保障。約束確保有效的數據輸入到列中和確保維護表與表之間的關系。5.3.1數據完整性類型
數據完整性約束5.3Oracle中常用的約束包括非空約束(NOTNULL)、默認值約束(DEFAULT)、主鍵約束(PRIMARYKEY)、唯一性約束(UNIQUE)、檢查約束(CHECK)和外鍵約束(FOREIGNKEY)??梢允褂脙煞N方式定義約束:列級定義,即將約束定義為列定義的一部分,這種形式稱為inline說明,也就是之前提到的列級約束;表級定義,即將約束作為表級的一部分進行定義,這種形成稱為out_of_line說明。5.3.1數據完整性類型
數據完整性約束5.3約束類型及說明如表5.4所示。5.3.1數據完整性類型
數據完整性約束5.3約束類型關鍵字定義方式完整性類型非空約束NOTNULL列級域完整性默認值約束DEFAULT列級域完整性主鍵約束PRIMARYKEY列級、表級實體完整性唯一性約束UNIQUE列級、表級實體完整性檢查約束CHECK列級、表級域完整性外鍵約束FOREIGNKEY表級參照完整性在Oracle中,完整性約束有四種狀態(tài)。(1)禁止的非校驗狀態(tài)。表示該約束是不起作用的,即使該約束定義依然存儲在數據字典中。(2)禁止的校驗狀態(tài)。表示對約束列的任何修改都是禁止的。這時,該約束上的索引都被刪除,約束也被禁止。但是,這時仍然可以向表中有效地添加數據,即使這些數據與約束有沖突也沒有關系。(3)允許的非校驗狀態(tài)或強制狀態(tài)。該狀態(tài)可以向表中添加數據,但是與約束有沖突的數據不能添加。如果表中已存在的數據與約束沖突,這些數據依然可以存在。(4)允許的校驗狀態(tài)。表示約束處于正常的狀態(tài)。這時表中所有的數據,無論是已有的還是新添加的,都必須滿足約束條件。5.3.1數據完整性類型
數據完整性約束5.3非空約束(NOTNULL)禁止一列包含空值。雖然使用NULL不能定義完整性約束,但是可以指定一列允許包含空值。必須在列級使用NOTNULL和NULL約束,如果既不指定NOTNULL,也不指定NULL,則缺省值是NULL。對于使用了非空約束的字段,如果用戶在添加數據時沒有指定值,數據庫系統(tǒng)會報錯。5.3.2使用非空約束
數據完整性約束5.31.創(chuàng)建非空約束非空約束的語法規(guī)則如下:字段名數據類型[NOTNULL|NULL]5.3.2使用非空約束
數據完整性約束5.31.創(chuàng)建非空約束【例5.8】定義數據表tmp_null,指定學生姓名不能為空。SQL語句如下:CREATETABLEtmp_null(idNUMBER(11),nameVARCHAR(25)NOTNULL,sexCHAR(4),classVARCHAR(50));5.3.2使用非空約束
數據完整性約束5.32.使用ALTERTABLE修改表時添加非空約束在創(chuàng)建表時如果沒有添加非空約束,可以通過修改表添加非空約束?!纠?.9】修改數據表tmp_null,指定班級列不能為空。SQL語句如下:ALTERTABLEtmp_nullMODIFYclassNOTNULL;語句執(zhí)行后,class列不能插入空值。5.3.2使用非空約束
數據完整性約束5.33.使用ALTERTABLE移除非空約束對于不需要的非空約束,可以將其移除?!纠?.10】修改數據表tmp_null,移除班級列上的非空約束。SQL語句如下:ALTERTABLEtmp_nullMODIFYclassNULL;語句執(zhí)行后,class列可以插入空值。當為class列添加非空約束后,不能向class列插入空值,此約束對定義約束之前插入的數據不限制。當為class列移除非空約束后,此列又可以插入空值。也就是說,約束的限制僅在定義后移除前有效。其他約束亦是如此。5.3.2使用非空約束
數據完整性約束5.3默認值約束(DEFAULT)指定某列的默認值。如學生表中男性同學較多,性別可以設置默認為“男”。當插入一條新的記錄時沒有為這個字段賦值時,系統(tǒng)會自動為這個字段賦值為“男”。默認值約束的語法規(guī)則如下:字段名數據類型DEFAULT默認值5.3.3使用默認值約束
數據完整性約束5.31.創(chuàng)建默認值約束【例5.11】定義數據表tmp_default,指定學生的默認性別為“男”。SQL語句如下:CREATETABLEtmp_default(idNUMBER(11),nameVARCHAR(25),sexCHAR(4)DEFAULT'男',classVARCHAR(50));5.3.3使用默認值約束
數據完整性約束5.32.使用ALTERTABLE修改表時添加默認值約束在創(chuàng)建表時如果沒有添加默認值約束,可以通過修改表添加默認值約束?!纠?.12】修改數據表tmp_default,指定班級列class的默認值為“計算01”。SQL語句如下:ALTERTABLEtmp_defaultMODIFYclassdefault'計算01';語句執(zhí)行后,class列的默認值為“計算01”。5.3.3使用默認值約束
數據完整性約束5.33.使用ALTERTABLE移除默認值約束對于不需要的默認值約束,可以將其移除。【例5.13】修改數據表tmp_default,移除班級列上的默認值約束。SQL語句如下:ALTERTABLEtmp_defaultMODIFYclassdefaultNULL;或ALTERTABLEtmp_defaultMODIFYclassdefault'';5.3.3使用默認值約束
數據完整性約束5.3主鍵約束(PRIMARYKEY)要求主鍵列的數據唯一,并且不允許為空。主鍵,又稱主碼,是表中一列或多列的組合。主鍵能夠唯一的標識表中的一條記錄,可以結合外鍵來定義不同數據表之間的關系,并且可以加快數據庫查詢的速度。主鍵是多列的組合時,稱為復合主鍵。主鍵可以定義在表級,也可以定義在列級。但復合主鍵必須定義在表級。一個表中只能創(chuàng)建一個主鍵。5.3.4使用主鍵約束
數據完整性約束5.3Oracle會為主鍵建立索引。當刪除主鍵時,由主鍵產生的索引會一并被刪除。如果在建立主鍵前,該列已經有唯一性約束,則系統(tǒng)自動創(chuàng)建唯一性索引,主鍵也會共用此索引。這時刪除主鍵,該索引仍然會存在。5.3.4使用主鍵約束
數據完整性約束5.3【例5.14】定義數據表tmp_primarykey,將id列建立為主鍵。SQL語句如下:列級主鍵約束:CREATETABLEtmp_pk(idNUMBER(11)PRIMARYKEY,nameVARCHAR(25),sexCHAR(4),classVARCHAR(50));5.3.4使用主鍵約束
數據完整性約束5.3【例5.14】定義數據表tmp_primarykey,將id列建立為主鍵。SQL語句如下:表級主鍵約束:CREATETABLEtmp_pk(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),PRIMARYKEY(id));5.3.4使用主鍵約束
數據完整性約束5.3或CREATETABLEtmp_pk(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),CONSTRAINTtmp_pkPRIMARYKEY(id));語句執(zhí)行后,會在id上建立主鍵,id列不允許出現空值和重復值。有CONSTRAINT關鍵詞時,會為主鍵約束自定義一個約束名稱,便于約束的維護。如果沒有CONSTRAINT關鍵詞,系統(tǒng)會為其定義一個主鍵約束名字,只是這個名字不太容易識別和記憶。需要注意,自定義的約束名稱在同一個表空間中不允許重名。5.3.4使用主鍵約束
數據完整性約束5.32.復合主鍵復合主鍵包含多個字段,只能建立表級主鍵約束。語法格式如下:[CONSTRAINT<約束名>]PRIMARYKEY(字段名1,字段名1,...字段名n)5.3.4使用主鍵約束
數據完整性約束5.32.復合主鍵【例5.15】定義數據表tmp_pk_1,假設表上沒有主鍵id,為了唯一確定一個學生,可以把name和class聯合起來作為主鍵。SQL語句如下:CREATETABLEtmp_pk_1(nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),PRIMARYKEY(name,class));5.3.4使用主鍵約束
數據完整性約束5.32.復合主鍵【例5.15】定義數據表tmp_pk_1,假設表上沒有主鍵id,為了唯一確定一個學生,可以把name和class聯合起來作為主鍵。SQL語句如下:CREATETABLEtmp_pk_1(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),CONSTRAINTtmp_pk_1PRIMARYKEY(name,class)5.3.4使用主鍵約束
數據完整性約束5.33.使用ALTERTABLE語句為表添加主鍵約束在創(chuàng)建表時如果沒有添加主鍵約束,可以通過修改表添加主鍵約束。【例5.16】為數據表tmp_null的id列添加主鍵約束。SQL語句如下:ALTERTABLEtmp_nullADDCONSTRAINTtmp_null_pkPRIMARYKEY(id);5.3.4使用主鍵約束
數據完整性約束5.34.使用ALTERTABLE語句移除主鍵約束對于不需要的主鍵約束,可以將其移除?!纠?.17】移除數據表tmp_null中的主鍵約束tmp_null_pk。SQL語句如下:ALTERTABLEtmp_nullDROPCONSTRAINTtmp_null_pk;上述語句執(zhí)行完成后,即可移除主鍵約束tmp_null_pk。5.3.4使用主鍵約束
數據完整性約束5.3唯一性約束(UNIQUE)要求該列取值唯一,允許為空,但只能出現一個空值。添加了唯一性約束的單列稱為唯一鍵,也可以定義復合唯一鍵。復合唯一鍵是指兩個或者兩個以上的列共同確定唯一的值。復合唯一鍵的唯一性約束必須定義在表級。如果不是復合唯一鍵,那么唯一性約束即可以定義在列級,也可以定義在表級。5.3.5使用唯一性約束
數據完整性約束5.31.創(chuàng)建唯一鍵約束唯一鍵由一個字段組成,可以建立列級唯一鍵約束,也可以建立表級唯一鍵約束。5.3.5使用唯一性約束
數據完整性約束5.31.創(chuàng)建唯一鍵約束語法格式如下:列級唯一鍵約束:字段名數據類型UNIQUE表級主鍵約束:UNIQUE(字段名)或[CONSTRAINT<約束名>]UNIQUE(字段名)5.3.5使用唯一性約束
數據完整性約束5.31.創(chuàng)建唯一鍵約束【例5.18】定義數據表tmp_uq,為name列建立唯一鍵約束。SQL語句如下:列級唯一鍵約束:CREATETABLEtmp_uq(idNUMBER(11),nameVARCHAR(25)UNIQUE,sexCHAR(4),classVARCHAR(50));5.3.5使用唯一性約束
數據完整性約束5.31.創(chuàng)建唯一鍵約束【例5.18】定義數據表tmp_uq,為name列建立唯一鍵約束。SQL語句如下:表級唯一鍵約束:CREATETABLEtmp_uq(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),UNIQUE(name));5.3.5使用唯一性約束
數據完整性約束5.3或:CREATETABLEtmp_uq(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),CONSTRAINTtmp_uqUNIQUE(name));2.使用ALTERTABLE語句為表添加唯一鍵約束假設在創(chuàng)建表時沒有添加唯一鍵約束,可以通過修改表添加唯一鍵約束。【例5.19】為數據表tmp_null的name列添加唯一鍵約束。SQL語句如下:ALTERTABLEtmp_nullADDCONSTRAINTtmp_null_uqUNIQUE(name);5.3.5使用唯一性約束
數據完整性約束5.33.使用ALTERTABLE語句移除唯一鍵約束對于不需要的唯一鍵約束,可以將其移除。【例5.20】移除數據表tmp_null中的唯一鍵約束tmp_null_nq。SQL語句如下:ALTERTABLEtmp_nullDROPCONSTRAINTtmp_null_nq;上述語句執(zhí)行完成后,即可移除唯一鍵約束tmp_null_nq。5.3.5使用唯一性約束
數據完整性約束5.3檢查約束(CHECK)規(guī)定限定的列值是否滿足限定條件,從而確保數值的正確性。例如,性別字段中可以規(guī)定只能輸入“男”或“女”。限定在單一列上的檢查約束可以在列級定義,也可以在表級定義。涉及到多個列的檢查約束只能在表級定義。5.3.6使用檢查約束
數據完整性約束5.31.創(chuàng)建檢查約束檢查約束的語法規(guī)則如下:列級檢查約束:字段名數據類型CHECK(檢查條件)表級檢查約束:CHECK(檢查條件)或[CONSTRAINT<約束名>]CHECK(檢查條件)5.3.6使用檢查約束
數據完整性約束5.31.創(chuàng)建檢查約束【例5.21】定義數據表tmp_check,指定學生的性別只能輸入“男”或“女”。SQL語句如下:列級檢查約束:CREATETABLEtmp_ck(idNUMBER(11),nameVARCHAR(25),sexCHAR(4)CHECK(sexin('男','女'),classVARCHAR(50));5.3.6使用檢查約束
數據完整性約束5.31.創(chuàng)建檢查約束【例5.21】定義數據表tmp_check,指定學生的性別只能輸入“男”或“女”?;駽REATETABLEtmp_ck(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),CHECK(sexin('男','女')));5.3.6使用檢查約束
數據完整性約束5.3或CREATETABLEtmp_ck(idNUMBER(11),nameVARCHAR(25),sexCHAR(4),classVARCHAR(50),CONSTRAINTtmp_ck_ckCHECK(sexin('男','女')));2.使用ALTERTABLE語句為表添加檢查約束假設在創(chuàng)建表時沒有添加檢查約束,可以通過修改表添加檢查約束?!纠?.22】為數據表tmp_null的sex列添加檢查約束。SQL語句如下:ALTERTABLEtmp_nullADDCONSTRAINTtmp_null_ckCHECK(sexin('男','女'));5.3.6使用檢查約束
數據完整性約束5.33.使用ALTERTABLE語句移除檢查約束對于不需要的檢查約束,可以將其移除?!纠?.23】移除數據表tmp_null中的檢查約束tmp_null_ck。SQL語句如下:ALTERTABLEtmp_nullDROPCONSTRAINTtmp_null_ck;上述語句執(zhí)行完成后,即可移除檢查約束tmp_null_ck。5.3.6使用檢查約束
數據完整性約束5.3外鍵用來建立兩個表之間的數據關聯,它可以是一列或多列。一個表可以有一個或多個外鍵。外鍵對應的是參照完整性,其作用是保持表間數據的一致性。外鍵是表中的一個字段,它可以不是本表的主鍵,但必須對應另外一個表的主鍵。對于兩個具有關聯關系的表而言,相關聯字段中主鍵所在的那個表稱為主表,外鍵所在的表稱為從表。一個表(從表)的外鍵列可以為空值,若不為空值,則必須是另一個表(主表)中的某個值。5.3.7使用外鍵約束
數據完整性約束5.31.創(chuàng)建外鍵創(chuàng)建外鍵的語法規(guī)則如下:[CONSTRAINT<外鍵名>]FOREIGNKEY(字段名1[,字段名2,...])REFERENCES<主表名>(主鍵名1,[,主鍵名2,...])[ONDELETE{CASCADE|SETNULL}]5.3.7使用外鍵約束
數據完整性約束5.31.創(chuàng)建外鍵其中,“外鍵名”為定義的外鍵約束的名稱,一個表中不能有相同名稱的外鍵?!白侄蚊北硎拘枰砑油怄I約束的字段列?!爸鞅砻奔幢粡谋硗怄I所依賴的表的名稱。“主鍵列”表示主表中定義的主鍵列,或者列組合。[ONDELETE{CASCADE|SETNULL}]指當主表中的列值被刪除時,從表對應列值的操作??梢赃x擇級聯刪除(CASCADE),或者設置為空值(SETNULL)。如果沒有選定該項,表示主表中的列值有關聯數據存在時,不允許進行刪除操作。5.3.7使用外鍵約束
數據完整性約束5.3【例5.24】定義數據表tmp_foreign和tmp_pk,建立兩個表之間的關聯關系。兩個表的結構表5.5和表5.6所示:5.3.7使用外鍵約束
數據完整性約束5.3字段名稱數據類型備注idNUMBER(10)員工編號nameVARCHAR2(20)員工姓名depIDNUMBER(10)部門編號字段名稱數據類型備注idNUMBER(10)部門編號nameVARCHAR2(20)部門名稱【例5.24】定義數據表tmp_foreign和tmp_pk,建立兩個表之間的關聯關系。創(chuàng)建表及關聯的SQL語句如下:建立主表,并創(chuàng)建主鍵:CREATETABLEtmp_pk(idNUMBER(10)PRIMARYKEY,nameVARCHAR2(20));5.3.7使用外鍵約束
數據完整性約束5.3【例5.24】定義數據表tmp_foreign和tmp_pk,建立兩個表之間的關聯關系。建立從表,并創(chuàng)建外鍵:CREATETABLEtmp_foreign(idNUMBER(10)PRIMARYKEY,nameVARCHAR2(20),depIDNUMBER(10),FOREIGNKEY(depID)REFERENCEStmp_pk(id));5.3.7使用外鍵約束
數據完整性約束5.3【例5.24】定義數據表tmp_foreign和tmp_pk,建立兩個表之間的關聯關系。建立從表,并創(chuàng)建外鍵:或CREATETABLEtmp_foreign(idNUMBER(10)PRIMARYKEY,nameVARCHAR2(20),depIDNUMBER(10),CONSTRAINTtmp_fkFOREIGNKEY(depID)REFERENCEStmp_pk(id));5.3.7使用外鍵約束
數據完整性約束5.32.使用ALTERTABLE語句為表添加外鍵約束假設在創(chuàng)建表時沒有添加外鍵約束,可以通過修改表添加外鍵約束。5.3.7使用外鍵約束
數據完整性約束5.32.使用ALTERTABLE語句為表添加外鍵約束【例5.25】假設存在tmp_foreign_1,在創(chuàng)建時沒有添加外鍵約束,為數據表tmp_foreign_1的depID列添加外鍵約束,指定從表級聯刪除選項。SQL語句如下:CREATETABLEtmp_foreign_1(idNUMBER(10)PRIMARYKEY,nameVARCHAR2(20),depIDNUMBER(10));5.3.7使用外鍵約束
數據完整性約束5.3ALTERTABLEtmp_foreign_1ADDCONSTRAINTtmp_fk_1FOREIGNKEY(depID)REFERENCEStmp_pk(id)ONDELETECASCADE;3.使用ALTERTABLE語句移除檢查約束對于不需要的外鍵約束,可以將其移除。【例5.26】移除數據表tmp_foreign_1中的外鍵約束tmp_fk_1。SQL語句如下:ALTERTABLEtmp_foreign_1DROPCONSTRAINTtmp_fk_1;上述語句執(zhí)行完成后,即可移除外鍵約束tmp_fk_1。5.3.7使用外鍵約束
數據完整性約束5.3在數據庫應用中,當屬性列不適合作主鍵時,可以定義自增約束字段,由系統(tǒng)自動生成主鍵值。可以通過為表主鍵添加GENERATEDBYDEFAULTASIDENTITY關鍵字來實現。默認的,在Oracle中該列的值的初始值是1,每新增一條記錄,字段值自動加1。一個表只能有一個字段使用自增約束,且該字段必須為主鍵的一部分。5.3.8設置表的屬性值自動增加
數據完整性約束5.3設置自增約束的語法規(guī)則如下:字段名數據類型GENERATEDBYDEFAULTASIDENTITY5.3.8設置表的屬性值自動增加
數據完整性約束5.3【例5.27】定義數據表tmp_id,指定學生編號自動遞增。SQL語句如下:CREATETABLEtmp_id(idNUMBER(11)GENERATEDBYDEFAULTASIDENTITY,nameVARCHAR(25),sexCHAR(4),classVARCHAR(50));5.3.8設置表的屬性值自動增加
數據完整性約束5.3上述語句執(zhí)行后,創(chuàng)建數據表tmp_id,其id列字段的值在進行數據添加時不需要用戶提供數據,由系統(tǒng)維護。Id列初始值從1開始,每添加一條新記錄,該值自動加1。如執(zhí)行三條同樣的插入語句:INSERTINTOtmp_id(name)VALUES('aa');查看表中的數據如下圖5.6所示。5.3.8設置表的屬性值自動增加
數據完整性約束5.3本書以學生選課數據庫為案例進行講解。數據庫中包括三個表,表結構及表中的約束如表5.7-5.9所示。
5.4
創(chuàng)建案例數據庫表列名數據類型可否為空默認值說明SnumCHAR(10)×
學號,主鍵SnameVARCHAR2(20)×
姓名SsexCHAR(4)ד男”性別SbirthDATE√
出生日期SdeptVARCHAR2(100)√
系別SnoteVARCHAR2(1000)√
備注表5.7學生表Student創(chuàng)建語句如下:CREATETABLEstudent(SnumCHAR(10)PRIMARYKEY,SnameVARCHAR2(20)NOTNULL,SsexCHAR(4)DEFAULT'男',SbirthDATE,SdeptVARCHAR2(100),SnoteVARCHAR2(1000));
5.4
創(chuàng)建案例數據庫表本書以學生選課數據庫為案例進行講解。數據庫中包括三個表,表結構及表中的約束如表5.7-5.9所示。
5.4
創(chuàng)建案例數據庫表表5.7課程表Course列名數據類型可否為空默認值數據范圍說明CnumCHAR(8)×
課程號,主鍵CnameVARCHR2(50)×
課程名CtermNUMBER(1)√
開課學期ChourNUMBER(2)×488~80學時CscoreNUMBER(1)×31~10學分創(chuàng)建語句如下:CREATETABLEcourse(CnumCHAR(8)PRIMARYKEY,CnameVARCHAR2(50)NOTNULL,CtermNUMBER(1),ChourNUMBER(2)DEFAULT48,CscoreNUMBER(1)DEFAULT3,CONSTRAINTCourse_hour_ckCHECK(Chour>=8andChour<=80),CONSTRAINTCourse_score_ckCHECK(Cscore>=1andCscore<=10));
5.4
創(chuàng)建案例數據庫表本書以學生選課數據庫為案例進行講解。數據庫中包括三個表,表結構及表中的約束如表5.7-5.9所示。
5.4
創(chuàng)建案例數據庫表表5.7選課表SC列名數據類型可否為空數據范圍說明SnumCHAR(10)×
學號,主鍵,外鍵CnumCHAR(8)×
課程號,主鍵外鍵GradeNUMBER(3)√0~100成績創(chuàng)建語句如下:CREATETABLESC(SnumCHAR(10),CnumCHAR(8),GradeNUMBER(3),CONSTRAINTSC_PKPRIMARYKEY(Snum,Cnum),CONSTRAINTSC_FK1FOREIGNKEY(Snum)REFERENCESstudent(Snum),CONSTRAINTSC_FK2FOREIGNKEY(Cnum)REFERENCEScourse(Cnum),CONSTRAINTSC_Grade_ckCHECK(Grade>=0andGrade<=100));
5.4
創(chuàng)建案例數據庫表
數據操作5.5新建的數據庫表是空表,提供了存儲和操作數據的結構。針對表中數據的操作主要包括插入、更新、刪除、查詢等。其中插入(INSERT)、更新(UPDATE)和刪除(DELETE)操作會使數據庫中的數據發(fā)生變化,因此這三種操作在SQL語言中被稱為數據操作語言(DML)。5.5.1插入數據
數據操作5.5Oracle使用INSERT語句向數據庫表中插入新的數據記錄。常用的插入方式有:插入完整的記錄、插入記錄的一部分、插入多條記錄以及插入另一個查詢的結果。另外,還可以為數據表批量導入數據。5.5.1插入數據
數據操作5.51.INSERT語句的語法插入命令INSERT語句的語法格式如下:INSERTINTO<表名>[(<列名1>,<列名2>,...n)]VALUES(<列值1>,<列值2>,...n)該語句的功能是向指定表中插入一行記錄。列名列表“(<列名1>,<列名2>,...n)”提供了插入數據對應的列,VALUES后的列值列表“(<列值1>,<列值2>,...n)”提供了要插入到表中的數據值。5.5.1插入數據
數據操作5.5說明:(1)插入數據時,列名列表可以不與數據表的結構一致。只要保證列值列表中的數據與列名列表中的列名、數據類型一一對應即可。列名列表可以不包含數據表中的所有列,但是缺失的列必須是可以為空或有默認值約束的列。當沒有為這些列提供數值時,系統(tǒng)會自動為其填充空值或默認值。(2)列名列表可以省略。如果不指定表名后面的列名列表,則VALUES子句中要給出每一列的值,并且其提供的值要與原表中字段的順序和數據類型完全一致,而且不能缺少字段。5.5.1插入數據
數據操作5.5說明:(3)VALUES中描述的值可以是一個常量、變量或一個表達式。字符串類型的數值必須用單引號引起來。字符串轉換函數TO_DATE可以把字符串形式的日期型數據轉換成Oracle規(guī)定的合法的日期型數據。5.5.1插入數據
數據操作5.52.插入完整的記錄向表中插入完整的記錄,指在插入數據時為每個列都指定數據值??梢杂袃煞N方式:一種是指定所有字段名,另一種是不指定字段名。5.5.1插入數據
數據操作5.52.插入完整的記錄【例5.29】向student表中插入新記錄,指定所有列值。SQL語句如下:INSERTINTOstudent(Snum,Sname,Ssex,Sbirth,Sdept,Snote)VALUES('1506101','王玫','女','02-1月-1997','計算機系','入學新生');INSERTINTOstudent(Snum,Sname,Sbirth,Ssex,Snote,Sdept)VALUES('1506102','李東','13-3月-1998','男','入學新生','計算機系');INSERTINTOstudentVALUES('1506103','孫翔','男',TO_DATE('19971120','YYYYMMDD'),'計算機系','入學新生');5.5.1插入數據
數據操作5.52.插入完整的記錄本例中,前兩條語句給出了完整的列名列表和值列表。第一條語句給出的列名列表和表結構一致。第二條語句給出的列名列表和表的結構不一致。要保證列名列表和列值列表中的數據一一對應。第三條語句省略了列名列表。這時候要保證列值列表與表結構完全一致。如果表結構修改了,如對列進行增加、刪除或者位置改變的操作,在進行插入時數值列表的順序也要相應修改。如果指定列名列表,則不會受到表結構的影響。5.5.1插入數據
數據操作5.52.插入完整的記錄期型數據在輸入時需要注意數據庫當前的默認格式,需要輸入正確的日期格式才能正確插入數據。也可以使用字符串轉換函數TO_DATE()來將字符串表示的數據按照對應的格式轉換成日期型數據。需要注意,使用命令方式對表數據進行插入、更新和刪除后,還需要使用COMMIT命令進行提交,這樣才會把數據的改變真正保存到數據庫中。為方便介紹,本書后面的SQL語句均省略COMMIT命令,運行時請自行添加。5.5.1插入數據
數據操作5.53.插入記錄的一部分在很多插入操作中,只提供了部分字段的數據值,其他字段的數據值可以采用NULL或默認值填充。對于未提供數據值的列必須是可以為空或者有自增值、默認值約束的列?!纠?.30】在student表中,插入記錄的一部分。SQL語句如下:INSERTINTOstudent(Snum,Sname)VALUES('1506104','馬蘭');5.5.1插入數據
數據操作5.54.插入多條記錄使用多個INSERT語句可以向數據表中插入多條記錄。【例5.31】向student表中插入2條記錄。SQL語句如下:BEGININSERTINTOstudent(Snum,Sname,Ssex)VALUES('1506105','馬丁','男');INSERTINTOstudent(Snum,Sname,Ssex)VALUES('1506106','郭陽','女');END;5.5.1插入數據
數據操作5.5【例5.32】在一條INSERT語句中插入2條新記錄。SQL語句如下:INSERTINTOstudent(Snum,Sname,Ssex)SELECT'1506108','劉飛飛','女'FROMDUALUNIONALLSELECT'1506109','王子辰','男'FROMDUAL;系統(tǒng)提示:2行已插入。5.5.1插入數據
數據操作5.5注意:一個同時插入多行記錄的INSERT語句可以等同于多個單行插入的INSERT語句。但是多行的INSERT語句在處理過程中,效率更高。因為Oracle執(zhí)行單條INSERT語句插入多行數據比使用多個單行INSERT語句速度快。所以,在插入多條記錄時,最好選擇使用單條INSERT語句的方式插入。5.5.1插入數據
數據操作5.55.插入另一個查詢的結果INSERT語句可以將其他表中已存在的數據以SELECT查詢結果的形式插入到表中,從而快速地從一個或多個表中向另一個表中插入多行。5.5.1插入數據
數據操作5.55.插入另一個查詢的結果其基本語法格式如下:INSERTINTO表名1(列名1,列名2,...n)SELECT數值1,數值2,...nFROM表2WHERE查詢條件其中,SELECT語句后的“數值1,數值2,...n”需要與“(列名1,列名2,...n)”的列的數據類型一一對應。SELECT語句可以是任意合理的查詢語句。SELECT語句功能強大,將在下一章展開。5.5.1插入數據
數據操作5.5【例5.33】創(chuàng)建一個新表new_student,將student中的部分數據插入到新表中。SQL語句如下:CREATETABLEnew_student(numCHAR(10)NOTNULL,nameVARCHAR2(20)NOTNULL,sexCHAR(4));5.5.1插入數據插入語句如下:INSERTINTOnew_student(num,name,sex)SELECTSnum,Sname,SsexFROMstudent;
數據操作5.5對于表中已有的數據進行修改稱為更新操作,采用UPDATE命令進行。其語法結構如下:UPDATE表名SET字段名1=數值1,字段名2=數值2,...nWHERE條件表達式5.5.2更新數據
數據操作5.5其中,“字段名1=數值1,字段名2=數值2,...n”表示為指定的字段賦予新的數值。更新多個列時,“列=值”之間要有逗號隔開。最后一列不需要逗號。WHERE條件表達式代表更新記錄需要滿足的條件,即只有符合條件的數據才會被修改。保證UPDATE語句以WHERE子句結束。如果忽略了WHERE子句,Oracle將更新所有的行。5.5.2更新數據
數據操作5.5【例5.34】在student表中,將“劉飛飛”同學的系別改為“計算機系”,備注給為“入學新生”。SQL語句如下:UPDATEstudentSETSdept='計算機系',Snote='入學新生'WHERESname='劉飛飛';系統(tǒng)提示:1行已更新。如果有多行符合WHERE條件的數據,這些數據都將被修改。5.5.2更新數據
數據操作5.5從數據表中刪除數據使用DELETE語句,DELETE語句允許使用WHERE子句指定刪除條件。其語法格式如下:DELETEFROM表名[WHERE條件表達式]在“表名”指定的表中,刪除符合WHERE子句條件的所有記錄。如果沒有WHERE子句,DELETE語句將刪除表中的所有記錄。5.5.3刪除數據
數據操作5.5【例5.35】在student表中,刪除學號為“1506108”和“1506109”的學生記錄。SQL語句如下:DELETEFromstudentWHERESnum='1506108'ORSnum='1506109';系統(tǒng)提示:2行已刪除。【例5.36】刪除student表中所有記錄。SQL語句如下:DELETEFromstudent;系統(tǒng)提示:6行已刪除。5.5.3刪除數據
數據操作5.5如果想刪除表中所有的記錄,還可以使用TRANCATETABLE語句。如上面的例子可以采用語句“TRANCATETABLEstudent;”實現。TRANCATETABLE命令直接刪除原來的表并重新創(chuàng)建一個表,因此執(zhí)行速度比DELETE快。5.5.3刪除數據1.使用SQLDeveloper工具創(chuàng)建數據表在SQLDeveloper中,可以快速完成數據表的創(chuàng)建,步驟如下:(1)打開SQLDeveloper工具,啟動“myorcl”連接,右鍵點擊“表”,在出現的菜單中選擇“新建表”命令,打開“創(chuàng)建表”對話框,如圖5.12所示。將表中各列的定義逐一設置,如名稱、數據類型、大小、非空、默認值、注釋、主鍵等。點擊右上角的“”,可以添加一列,點擊“”按鈕,可以刪除已有列。5.6.1數據表的管理使用SQLDeveloper工具管理數據表5.61.使用SQLDeveloper工具創(chuàng)建數據表在SQLDeveloper中,可以快速完成數據表的創(chuàng)建,步驟如下:(1)打開SQLDeveloper工具,啟動“myorcl”連接,右鍵點擊“表”,在出現的菜單中選擇“新建表”命令,打開“創(chuàng)建表”對話框,如圖5.12所示。將表中各列的定義逐一設置,如名稱、數據類型、大小、非空、默認值、注釋、主鍵等。點擊右上角的“”,可以添加一列,點擊“”按鈕,可以刪除已有列。5.6.1數據表的管理使用SQLDeveloper工具管理數據表5.61.使用SQLDeveloper工具創(chuàng)建數據表在SQLDeveloper中,可以快速完成數據表的創(chuàng)建,步驟如下:(2)要設置表的約束等高級屬性,需要選中“高級”復選框,出現如圖5.13所示的對話框。在此對話框中可以進行高級屬性的設置。5.6.1數據表的管理使用SQLDeveloper工具管理數據表5.62.使用SQLDeveloper工具修改數據表在主界面的“表”節(jié)點中,找到需要查看的數據表,選中,在主窗口中,顯示此表的相關信息,如圖5.13所示,包括列、數據、約束條件、授權、統(tǒng)計信息、觸發(fā)器、閃回、相關性、詳細信息、分區(qū)、索引、SQL等選項卡。5.6.1數據表的管理使用SQLDeveloper工具管理數據表5.62.使用SQLDeveloper工具修改數據表選中需要修改的表,右鍵單擊,在出現的菜單中選擇“編輯”命令,出現如圖5.14所示的“編輯表”對話框。在“編輯表”對話框中,可以重新對表的結構進行設置。5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數據結構(Java語言描述)(第2版)課件 6.4 選擇類排序
- 2025年新高考語文二輪專題復習訓練任務群 主題練案8 魯迅文章研究:信息類閱讀+散文閱讀+語言文字運用
- 2025年西班牙語DELEYW級閱讀訓練試卷
- 2025年探傷工(工程師)考試試卷:案例分析
- 2025年事業(yè)單位招聘考試綜合類公共基礎知識真題模擬試卷(2025年春季科技常識)
- 2025年通信工程師考試通信工程標準化推廣與試卷
- 2025年托??荚囬喿x真題模擬模擬試卷:5G技術在智慧城市領域的
- 2025年無損檢測員(高級)職業(yè)技能鑒定試卷:無損檢測在航空航天關鍵部件的檢測技術
- 2025年西式面點師(初級)考試試卷:烘焙基礎理論問答
- 2025年室內裝飾設計師(初級)室內設計心理需求試題
- 瑜伽生活方式中心生活館項目建議書
- 固體礦產鉆探工真題模擬匯編(共634題)
- 第34屆全國中學生物理競賽決賽試題及答案
- 智慧消防項目申報書
- 高級職稱評定工作總結(3篇)
- 干部人事檔案管理業(yè)務知識培訓課件
- 軟件項目開發(fā)需求規(guī)格說明書(標準模板)
- GB/T 9797-2022金屬及其他無機覆蓋層鎳、鎳+鉻、銅+鎳和銅+鎳+鉻電鍍層
- GB/T 32288-2015電力變壓器用電工鋼鐵心
- FZ/T 01008-2008涂層織物耐熱空氣老化性的測定
- 精神科病歷書寫精神科病歷書寫及范例
評論
0/150
提交評論