2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、表的創(chuàng)建和維護,Oracle SQL和PL/SQL編程,目標,使用CREATE TABLE命令創(chuàng)建新表使用子查詢創(chuàng)建新表向現(xiàn)有表添加列修改現(xiàn)有表中的一列大小從現(xiàn)有表中刪除一列將一列標記為未使用,在以后刪除它重命名表截斷表刪除表,表的創(chuàng)建和維護,用來創(chuàng)建和修改數(shù)據(jù)庫表的命令被稱為“數(shù)據(jù)定義語言”(Data Definition Language,DDL)命令。這些命令實際上是專門用來創(chuàng)建或修改數(shù)據(jù)庫對象的SQL命令。,表設

2、計 3-1,首先表的名稱并確定結(jié)構(gòu);確定哪些列將包含在這個表中,確定任何字符或數(shù)字列所需要的寬度在Oracle中命名表和列時的規(guī)則:表和列的名稱最多可以達到30個字符長,而且必須以一個字母開始,這個限制只適合于表或列的名稱,而不適合用于一列中的數(shù)據(jù)量。表和列名稱中允許數(shù)字,下劃線(_)和數(shù)字符號(#),但是不能在表和列名稱中包含任何空格。用戶擁有的每一個表應該具有一個唯一的表名稱,而且每一個表中的列名稱也應該是唯一的不能使用O

3、racle “保留字”,例如:SELECT,DISTINCT,CHAR和NUMBER等。,表設計 3-2,確定了表的內(nèi)容,可以創(chuàng)建列了,必須完成為每一列選擇一個名稱確定每一列將存儲的類型。確定(在某些情況下)列的最大寬度,表設計 3-3,在選擇列名稱之前,先看一下數(shù)據(jù)類型以及他們的默認值,創(chuàng)建表,關(guān)鍵字“CREATE TABLE”指示Oralce創(chuàng)建一個表??梢园蛇x的schema(架構(gòu)),表示誰將“擁有”要創(chuàng)建的這個表,例如

4、:如果創(chuàng)建這個表的用戶也就是這個將要擁有這個表的人,那么可以忽略架構(gòu),將默認采用當前的用戶名。另一方面,如果使用用戶名為DRAKE為某個人創(chuàng)建了ACCTMANAGER表,那么架構(gòu)和表名稱將屬于DRAKE的架構(gòu),而不是屬于你的架構(gòu)。數(shù)據(jù)庫對象的所有者有權(quán)在對象上執(zhí)行這些操作。對于一個表來說,另一個數(shù)據(jù)庫是用戶能夠查詢或處理表中包含的數(shù)據(jù)的唯一方式就是使用表所有者或數(shù)據(jù)庫管理提供的權(quán)限。當然表名稱是用來標識正在創(chuàng)建的表的名稱。要想為其他

5、人的架構(gòu)創(chuàng)建一個表(也就是其他人擁有的表),你必須具有對那個用戶的架構(gòu)使用CREATE TABLE命令的權(quán)限。,CREATE TABLE[schema] tablename(columnname datatype[DEFAULT value],columnname datatype[DEFAULT value],…);,定義列,一個表最多可以包含1000列。,CREATE TABLE acctmanager(amid VARC

6、HAR2(4),amname VARCHAR2(20),amedate DATE DEFAULT SYSDATE,region CHAR(2));,創(chuàng)建表的時候允許向列分配一個默認值。默認值是用戶沒有在列中輸入內(nèi)容情況,Oracle自動存儲的值。表名雖然是以小寫字母輸入,但ORACLE會在處理命令時自動轉(zhuǎn)為大寫。將表名與列名取小寫字母為了與Oracle關(guān)鍵字區(qū)別。由于創(chuàng)建表的用戶就是這個表的擁有者,所以省略架構(gòu)名。amed

7、ate分配了一個默認值SYSDATE,表明如果用戶輸入新的銷售經(jīng)理信息,而沒有包括這個人的聘用時間時,則oracle服務器會插入當前日期。注意:如果定義amedate為空,則會生成一個錯誤。執(zhí)行了命令之后,只是創(chuàng)建了表結(jié)構(gòu),并沒有數(shù)據(jù)。能夠執(zhí)行CREATE TABLE命令必須有這個權(quán)限,如果沒有要求管理員授予。,查看表結(jié)構(gòu):DESCRIBE,,DESCRIBE tablename用來顯示表的結(jié)構(gòu)注意:DESCRIBE是sql*p

8、lus的命令而不是SQL命令。命令的簡寫DESC,結(jié)果中列出了定義的列和數(shù)據(jù)類型,還顯示了這一列是否為空,也就是是否允許NULL值,注意:amid如果定義為了主鍵,則會顯示NOT NULL,在講約束的時候會講到。,通過子查詢創(chuàng)建表,創(chuàng)建一個包含現(xiàn)有表的數(shù)據(jù)的表,可以使用CREATE TABLE命令并包括一個包含子查詢的AS子句。,CREATE TABLE tablename[(columnname,…)]AS (subquery);

9、,CREATE TABLE secustomerordersAS (SELECT customer#,state,ISBN,Category,quantity,cost,retailFROM customers NATURAL JOIN orders NATURAL JOINOrderitems NATURAL JOIN booksWHERE state IN('FL','GA','AL

10、'));,修改現(xiàn)有表,對表結(jié)構(gòu)進行更改:添加一列,刪除一列,更改列的大小通過ALTER TABLE命令來來實現(xiàn)ORACLE的特性:可以修改表而不必關(guān)閉數(shù)據(jù)庫,即使用戶正在訪問這個表,仍然可以修改這個表而不必中斷服務。,ALTER TABLE tablenameADD|MODIFY|DROP COLUMN|coloumnname[definition];,ALTER TABLE…ADD命令,示例:acctmanager表中添

11、加電話分機號碼,ALTER TABLE tablenameADD(columnname datatype,[DEFAULT]…);,ALTER TABLE acctmanagerADD(ext NUMBER(4));,ALTER TBALE…MODIFY命令,對列進行的更改包括:更改一列的大?。ㄔ黾踊驕p?。└臄?shù)據(jù)類型更改或添加一列的默認值,ALTER TABLE tablenameMODIFY(columnname dat

12、atype,[DEFAULT]…);,ALTER TBALE…MODIFY命令,修改這個表的時候要注意三個規(guī)則:1.一列必須與它已經(jīng)包含的數(shù)據(jù)字段一樣寬。(例如:假設已經(jīng)將一個列定義為15個字符寬的VARCHAR2數(shù)據(jù)類型,但是,這個特定列中的最大項目只包含12個字符,因此你只能將這一列的大小減小到12個字符寬。)示例:customers表lastname列最大項字符是8,減小到6要報錯,ALTER TABLE customers

13、MODIFY (lastname VARCHAR(6));,ALTER TBALE…MODIFY命令,2.如果一個NUMBER列已經(jīng)包含了數(shù)據(jù),那么你不能降低這一列的精確度或小數(shù)位數(shù)。,ALTER TABLE booksMODIFY (cost NUMBER(4,2));,ALTER TBALE…MODIFY命令,3.更改一列的默認值不會更改表中已經(jīng)存在的數(shù)據(jù)值。,ALTER TABLE acctmanagerMODIFY (ext

14、 DEFAULT 1200);,同時更改多列ALTER TABLE acctmanagerMODIFY (ext DEFAULT 1200, amname varchar2(25));,ALTER TABLE…DROP COLUMN命令,使用該命令可以從一個表中刪除現(xiàn)有列,注意:因為該子句將刪除列及其內(nèi)容,所以使用要格外小心,ALTER TABLE tablenameDROP COLUMN cloumnname;,ALTER TA

15、BLE…DROP COLUMN命令,使用DROP COLUMN子句時,記住以下幾點:與帶有ADD或MODIFY的子句的ALTER TABLE命令不同,DROP COLUMN子句只能引用一個列。如果從表中刪除一列,那么刪除將是永久的,如果不小心從表中錯誤地刪除了列,那么你不能“取消”這種損壞,唯一的選擇是將這一列重新添加到表中,然后手工重新輸入以前包含的所有數(shù)據(jù)。你不能刪除表中剩余的最后一列,如果一個表只包含一列并且你嘗試刪除這一列

16、,那么這個命令將會失敗,Oracle9i將返回一個出錯消息。,ALTER TABLE…DROP COLUMN命令,,繼續(xù)刪除,ALTER TABLE acctmanagerDROP COLUMN ext;,ALTER TABLE acctmanagerDROP COLUMN REGION;,ALTER TABLE acctmanagerDROP COLUMN AMEDATE;,ALTER TABLE acctmanagerDRO

17、P COLUMN AMNAME;,ALTER TABLE acctmanagerDROP COLUMN AMID;,ALTER TABLE…SET UNUSED/DROP UNUSED COLUMNS命令,當Oracle服務器從一個非常大的表中刪除一列時,這將降低用戶的查詢或其他SQL命令的處理速度,為了避免這種問題,可以在ALTER TABLE命令中包括SET UNUSED子句,將這一標記記為以后再刪除.如果將一列標記為刪除,那么

18、這一列就是標記為不可用的,它不會顯示在表結(jié)構(gòu)中。因為這一列是不可用的,所以它也不會出現(xiàn)在任何查詢的結(jié)果中,也不能在這一列上執(zhí)行除了ALTER TABLE…DROP UNUSED命令之外的其他任何操作。換句話說,將一列設置為“unused”(不使用)之后.這一列及其所有的內(nèi)容都將無法使用,以后也不能恢復它。這是推遲從存儲設備中物理清除數(shù)據(jù)——通常推遲到服務器正在處理的查詢很少時,例如在營業(yè)時間之后。ALTER TABLE命令使用DRO

19、P UNUSED子句來完成已經(jīng)標記為“不使用”的任何列的刪除過程。,ALTER TABLE…SET UNUSED/DROP UNUSED COLUMNS命令,,ALTER TABLE tablenameSET UNUSED(columnname);或者ALTER TABLE tablenameSET UNUSED COLUMN columnname;,ALTER TABLE tablenameDROP UNUSED COL

20、UMNS;,刪除已經(jīng)設置為“不使用”的任何列,而且可以使用這些列中包含的數(shù)據(jù)以前所占用的任何存儲空間,ALTER TABLE…SET UNUSED/DROP UNUSED COLUMNS命令,示例:,ALTER TABLE acctmanagerSET UNUSED(region);,ALTER TABLE acctmanagerDROP UNUSED COLUMNS;,重命名表,,RENAME oldtablename TO ne

21、wtablename;,Oracle允許使用RENAME…TO命令更改你所擁有的任何表的名稱,在一個組織工作中,不要更改其他用戶訪問的表的名稱,除非你事先通知了他們新的表的名稱,RENAME acctmanager TO acctman;,截斷表,在截斷一個表時,表中包含的所有行都將被刪除,但表本身將會保留,換句話說,列依然存在,只是其中沒有存儲值。實際上與刪除一個表中的所有行是相同的,但是,如果只是刪除一個表中的所有行,那么這些行多占

22、用的存儲空間仍然是分配給這個表的。要想刪除存儲在一個表中的行并釋放這些行所占有的存儲空間,可以使用TRUNCATE TABLE命令。,TRUNCATE TABLE tablename;,刪除表,,DROP TABLE tablename;,刪除時一定要非常小心,刪除一個表之后,表及它所包含的所有數(shù)據(jù)都將丟失,這個表所創(chuàng)建的任何索引也將刪除,索引后面講解。,DROP TABLE acctman;,總結(jié),可以使用CREATE…TABLE命令

23、創(chuàng)建一個表。必須根據(jù)列名稱,數(shù)據(jù)類型,某些數(shù)據(jù)類型的寬度定義表中將要包含的每一列。一個表最多可以包含1000列。表中的每一個列名稱都必須是唯一的。表和列的名稱最多可以包含30個字符,名稱必須以一個字母開始,不能包含任何空格。要想根據(jù)現(xiàn)有的表中包含的結(jié)構(gòu)和數(shù)據(jù)創(chuàng)建一個表,使用CREATE TABLE…AS命令,以便使用一個子查詢從現(xiàn)有的表中提取必要的數(shù)據(jù)。你可以使用ALTER TABLE命令來更改一個表的結(jié)構(gòu),可以使用ALTER

24、 TABLE添加、調(diào)整甚至刪除列。使用帶有DROP COLUMN子句的ALTER TABLE命令時,只能指定刪除一列。SET UNUSED子句可以用來標記一列,這樣以后就可以釋放它的存儲空間了可以使用RENAME…TO命令來重命名一個表。通過TRUNCATE TABLE命令可以刪除一個表中的所有行。要想完全刪除一個表的結(jié)構(gòu)以及其內(nèi)容,可以使用DROP TABLE命令。,2024/3/21,Inspur group,,,謝謝大家

溫馨提示

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

評論

0/150

提交評論