oracle,sql語言入門基礎(chǔ)講解_第1頁
已閱讀1頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ORACLE 9i,第1章 關(guān)系數(shù)據(jù)庫與SQL語言環(huán)境,1.1 關(guān)系數(shù)據(jù)庫的基本概念1.2 SQL*Plus環(huán)境1.3 Oracle的應(yīng)用開發(fā)工具TOAD1.4 操作準(zhǔn)備1.5 階段訓(xùn)練1.6 練習(xí),ORACLE 9i,1.1 關(guān)系數(shù)據(jù)庫的基本概念,1.1.1 數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng) 數(shù)據(jù)庫是在計算機(jī)上組織、存儲和共享數(shù)據(jù)的方法,數(shù)據(jù)庫系統(tǒng)是由普通的文件系統(tǒng)發(fā)展而來的。數(shù)據(jù)庫系統(tǒng)具有較高的數(shù)據(jù)獨(dú)立性,即不依賴

2、于特定的數(shù)據(jù)庫應(yīng)用程序;數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)冗余小,可以節(jié)省數(shù)據(jù)的存儲空間;另外數(shù)據(jù)庫系統(tǒng)還很容易實現(xiàn)多個用戶的數(shù)據(jù)共享。,ORACLE 9i,數(shù)據(jù)庫系統(tǒng)成熟的標(biāo)志就是數(shù)據(jù)庫管理系統(tǒng)的出現(xiàn)。數(shù)據(jù)庫管理系統(tǒng)(DataBase Managerment System,簡稱DBMS)是對數(shù)據(jù)庫的一種完整和統(tǒng)一的管理和控制機(jī)制。數(shù)據(jù)庫管理系統(tǒng)不僅讓我們能夠?qū)崿F(xiàn)對數(shù)據(jù)的快速檢索和維護(hù),還為數(shù)據(jù)的安全性、完整性、并發(fā)控制和數(shù)據(jù)恢復(fù)提供了保證。數(shù)據(jù)庫管理系

3、統(tǒng)的核心是一個用來存儲大量數(shù)據(jù)的數(shù)據(jù)庫。,ORACLE 9i,一個真正的數(shù)據(jù)庫系統(tǒng)由硬件和軟件兩個方面構(gòu)成。比如我們要使用Oracle數(shù)據(jù)庫,需要安裝Oracle公司提供的數(shù)據(jù)庫服務(wù)器軟件和一臺用于安裝數(shù)據(jù)庫管理系統(tǒng)的高性能的計算機(jī)服務(wù)器。數(shù)據(jù)庫系統(tǒng)的發(fā)展經(jīng)歷了層次模型、網(wǎng)狀模型及關(guān)系模型幾個階段。當(dāng)今應(yīng)用最普遍的是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。目前,市場上流行的幾種大型數(shù)據(jù)庫,如Oracle、DB2、Sybase、MS SQL Serv

4、er等都是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。Oracle數(shù)據(jù)庫是一種面向?qū)ο蟮年P(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),是基于標(biāo)準(zhǔn)SQL語言的數(shù)據(jù)庫產(chǎn)品。,ORACLE 9i,數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)了信息的存儲和管理,還需要開發(fā)面向特定應(yīng)用的數(shù)據(jù)庫應(yīng)用系統(tǒng),以完成更復(fù)雜的信息處理任務(wù)。典型的數(shù)據(jù)庫應(yīng)用有C/S(客戶/服務(wù)器)和B/S(瀏覽器/服務(wù)器)兩種模式。C/S模式由客戶端和服務(wù)器端構(gòu)成,客戶端是一個運(yùn)行在客戶機(jī)上的數(shù)據(jù)庫應(yīng)用程序,服務(wù)器端是一

5、個后臺的數(shù)據(jù)庫服務(wù)器,客戶端通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫服務(wù)器。B/S模式是基于Internet的一個應(yīng)用模式,需要一個WEB服務(wù)器??蛻舳朔植荚贗nternet上,使用通用的網(wǎng)頁瀏覽器,不需要對客戶端進(jìn)行專門的開發(fā)。應(yīng)用程序駐留在WEB服務(wù)器或以存儲過程的形式存放在數(shù)據(jù)庫服務(wù)器上,服務(wù)器端是一個后臺數(shù)據(jù)庫服務(wù)器。,ORACLE 9i,例如一個有代表性的信息檢索網(wǎng)站,通常都是一個典型的基于大型數(shù)據(jù)庫的WEB應(yīng)用。很多這樣的網(wǎng)站都采用Oracle的

6、數(shù)據(jù)庫服務(wù)器,以獲得優(yōu)越的性能。圖1-1給出了典型的WEB數(shù)據(jù)庫應(yīng)用系統(tǒng)的結(jié)構(gòu)示意圖。,ORACLE 9i,,圖1-1 WEB數(shù)據(jù)庫應(yīng)用示意圖,ORACLE 9i,1.1.2 實體關(guān)系模型在數(shù)據(jù)庫的設(shè)計階段,需要創(chuàng)建邏輯模型。關(guān)系數(shù)據(jù)庫的邏輯模型叫做實體—關(guān)系模型。實體模型化最常用的工具是實體關(guān)系圖,簡稱E–R(Entity–Relationship)圖,它是一種簡單的圖形技術(shù),用來定義數(shù)據(jù)庫中需要的表、字段和關(guān)系。它用于數(shù)據(jù)

7、庫設(shè)計的第一步,與我們使用的具體的數(shù)據(jù)庫管理系統(tǒng)無關(guān)。ER圖有如下優(yōu)點(diǎn):,ORACLE 9i,?    有效地搜集和表示組織的信息需求。?    提供一個容易理解的系統(tǒng)描述圖。?    易于開發(fā)和提煉。?    明確定義了信息需求的范圍。?    將業(yè)務(wù)需求信息與業(yè)

8、務(wù)執(zhí)行活動分開。根據(jù)業(yè)務(wù)說明或描述創(chuàng)建實體關(guān)系圖。,ORACLE 9i,,,現(xiàn)實世界,,信息世界,,機(jī)器 世界,,概念模型,數(shù)據(jù)模型,ORACLE 9i,概念模型-- ER模型基本概念,是現(xiàn)實世界到機(jī)器世界的一個中間層次,概念模型中最常用的是ER模型,介紹ER模型(實體聯(lián)系)中的主要概念。實體(Entity):客觀存在并可以相互區(qū)分的事物叫實體。(例如:一個個學(xué)生、一輛輛轎車)屬性(Attribute):實體一般具有若干特征,

9、稱之為實體的屬性。例如:學(xué)生具有學(xué)號、姓名等屬性。域(Domain):一個屬性可能取值的范圍稱為這個屬性的域。,ORACLE 9i,ER模型基本概念,碼(Key):能夠唯一標(biāo)識實體的屬性或最小屬性組稱為碼(關(guān)鍵字),可能存在多個候選碼,設(shè)計者必須指明一個做主碼。例如:見圖實體型(Entity type):具有相同屬性的實體具有共同的特征和性質(zhì),用實體名及其屬性集合來抽象、刻畫同類實體,稱為實體型。,ORACLE 9i,ER模型基本概

10、念,實體集(Entity set):同型實體的集合聯(lián)系:現(xiàn)實世界的事物之間是有聯(lián)系的,這種聯(lián)系在信息世界中反映為:實體(型)內(nèi)部的聯(lián)系和實體(型)之間的聯(lián)系。兩個實體型之間的聯(lián)系一對一聯(lián)系(1:1)例如:部門、經(jīng)理一對多聯(lián)系(1:n)例如:部門、雇員多對多聯(lián)系(m:n)例如:學(xué)生、課程,ORACLE 9i,ER模型基本概念,部門,經(jīng)理,設(shè)有,,,部門,雇員,擁有,,,學(xué)生,課程,選修,,,1,1,1,n,m,n,,ORACLE

11、 9i,規(guī)范化的意義在于可以從實體中刪除冗余信息,通過修改數(shù)據(jù)模型達(dá)到可以惟一地表示實體的每一種情況為止。規(guī)范化是降低或消除數(shù)據(jù)庫中冗余數(shù)據(jù)的過程。盡管在大多數(shù)的情況下冗余數(shù)據(jù)不能被完全清除,但冗余數(shù)據(jù)降得越低,就越容易維護(hù)數(shù)據(jù)的完整性,并且可以避免非規(guī)范化的數(shù)據(jù)庫中數(shù)據(jù)的更新異常。數(shù)據(jù)庫的規(guī)范化通過范式來驗證,但是一味地考慮滿足范式,也會對數(shù)據(jù)庫性能產(chǎn)生影響,并給實際的實施帶來困難。所以實際的情況是采取折衷的方法。規(guī)范化設(shè)

12、計的規(guī)則有三個,分別稱作第一范式、第二范式和第三范式:,ORACLE 9i,第一范式(1NF):實體的所有屬性必須是單值的并且不允許重復(fù)。   第二范式(2NF):實體的所有屬性必須依賴于實體的惟一標(biāo)識。   第三范式(3NF):一個非惟一標(biāo)識屬性不允許依賴于另一個非惟一標(biāo)識屬性。在數(shù)據(jù)庫的設(shè)計中,一般都采用第三范式,以保證數(shù)據(jù)的冗余最小,提高數(shù)據(jù)的完整性。,ORACLE 9i,圖1-4

13、是實際設(shè)計的兩張表和表間關(guān)系的示意圖。教師表由教師ID、姓名和系部ID等列構(gòu)成;系部表由系部ID、系部名稱和地點(diǎn)等列構(gòu)成。其中,教師ID和系部ID分別是這兩張表的主鍵。教師表的系部ID和系部表的系部ID之間建立了外鍵聯(lián)系,即教師表的系部ID必須是系部表的某個系部ID。,ORACLE 9i,圖1-4 表的結(jié)構(gòu)和表間關(guān)系示意,ORACLE 9i,1.1.5 開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)的步驟下面列出了常見的數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)步驟:?

14、    系統(tǒng)需求分析。?    設(shè)計數(shù)據(jù)庫表。?    規(guī)劃表中的字段。?    確定表與表之間的關(guān)系。?    優(yōu)化表和表中字段的設(shè)計。?    輸入數(shù)據(jù),檢測表的設(shè)計,如果需要改進(jìn)可以再次優(yōu)化表的設(shè)計。,ORACLE 9i,?

15、    創(chuàng)建查詢、存儲過程、觸發(fā)器以及其他的數(shù)據(jù)庫對象。?    使用數(shù)據(jù)庫分析工具來分析和改進(jìn)數(shù)據(jù)庫的性能。?    設(shè)置數(shù)據(jù)庫安全性。,ORACLE 9i,1.2 SQL*Plus環(huán)境,1.2.1 SQL*Plus的登錄和環(huán)境設(shè)置1.登錄SCOTT賬戶在登錄和使用SQL*Plus的同時,要以數(shù)據(jù)庫用戶的身份連接到某個數(shù)

16、據(jù)庫實例。在Oracle數(shù)據(jù)庫創(chuàng)建過程中,選擇通用目的安裝,會創(chuàng)建一個用于測試和練習(xí)目的的賬戶——SCOTT。其中保存了一些數(shù)據(jù)庫表的實例,主要的兩個表是雇員表EMP和部門表DEPT通過登錄SCOTT賬戶就可以訪問這些表。SCOTT賬戶的默認(rèn)口令是TIGER。,ORACLE 9i,我們假定Oracle數(shù)據(jù)庫已經(jīng)安裝在局域網(wǎng)中的一臺基于Windows操作系統(tǒng)的服務(wù)器上,服務(wù)器的名稱為ORACLE,數(shù)據(jù)庫實例的名稱為MYDB。管理客戶

17、端和開發(fā)工具安裝在其他基于Windows操作系統(tǒng)的客戶機(jī)上,并且該機(jī)器通過網(wǎng)絡(luò)能夠訪問到Oracle數(shù)據(jù)庫服務(wù)器。這時,我們就可以使用管理客戶端中的SQL*Plus工具來進(jìn)行登錄了。登錄前一般要由管理員使用Oracle的網(wǎng)絡(luò)配置工具創(chuàng)建一個網(wǎng)絡(luò)服務(wù)名,作為客戶端連接名。為了方便記憶,連接名可以與數(shù)據(jù)庫實例名相重。我們假定創(chuàng)建的網(wǎng)絡(luò)連接服務(wù)名為MYDB,則登錄過程如下。,ORACLE 9i,【訓(xùn)練1】 使用SQL*Plus工作表,以SC

18、OTT賬戶登錄數(shù)據(jù)庫。步驟1:啟動SQL*Plus。在開始菜單中,找到Oracle菜單目錄的“Application Development” 子菜單,找到其下的“SQL*Plus WorkSheet”命令。步驟2:為其在桌面上創(chuàng)建一個快捷方式并啟動,出現(xiàn)如圖1-5所示的登錄界面。,ORACLE 9i,,圖1-5 SQL*Plus的登錄對話框,ORACLE 9i,步驟3:在登錄對話框中選擇直接連接到數(shù)據(jù)庫,并輸入其他必要的

19、參數(shù)。 用戶名為SCOTT??诹顬門IGER。服務(wù)為MYDB,其中MYDB為由系統(tǒng)管理員創(chuàng)建的網(wǎng)絡(luò)服務(wù)名。連接身份選為Normal。點(diǎn)擊“確定”按鈕即可進(jìn)行數(shù)據(jù)庫連接了。在輸出區(qū)輸出結(jié)果為:已連接。,ORACLE 9i,連接成功后,出現(xiàn)如圖1-6所示的SQL*Plus工作表的工作窗口,在輸出區(qū)的信息“已連接”表示數(shù)據(jù)庫連接成功。如果顯示登錄失敗信息,則需要重新檢查輸入的連接參數(shù)是否正確。,ORA

20、CLE 9i,,圖1-6 SQL*PLUS工作表,ORACLE 9i,窗口界面可劃分成如下幾個區(qū)域:菜單區(qū)、按鈕區(qū)、輸入?yún)^(qū)和輸出區(qū)。通過拖動輸入?yún)^(qū)和輸出區(qū)中間的分隔線可以調(diào)整兩個區(qū)的大小。輸入?yún)^(qū)為一文本編輯區(qū),可以在其中進(jìn)行命令的輸入和編輯,可以使用通用的文本編輯命令,如“選擇”、“剪切”、“復(fù)制”和“粘貼”等進(jìn)行操作。在輸入?yún)^(qū)中可以輸入SQL命令或PL/SQL程序。輸出區(qū)為一只讀文本區(qū),顯示命令的輸出結(jié)果。SQL*Plus可以

21、同時運(yùn)行多個副本,連接相同或不同的賬戶,同時進(jìn)行不同的操作。,ORACLE 9i,Oracle數(shù)據(jù)庫的很多對象,都是屬于某個模式(Schema)的,模式對應(yīng)于某個賬戶,如SCOTT模式對應(yīng)SCOTT賬戶。往往我們對模式和賬戶不做區(qū)分。數(shù)據(jù)庫的表是模式對象中的一種,是最常見和最基本的數(shù)據(jù)庫模式對象。一般情況下,如果沒有特殊的授權(quán),用戶只能訪問和操作屬于自己的模式對象。比如以SCOTT賬戶登錄,就只能訪問屬于SCOTT模式的表。所以通過以不

22、同的用戶身份連接,可以訪問屬于不同用戶模式的表。,ORACLE 9i,如果需要重新連接另外一個賬戶,可以點(diǎn)擊“連接”按鈕,則重新出現(xiàn)連接對話框,在該對話框中輸入新的賬戶名、口令和其他參數(shù)進(jìn)行連接即可。任何時刻,如果需要運(yùn)行輸入?yún)^(qū)中的命令,可以點(diǎn)擊“執(zhí)行”按鈕。用戶可以在輸入?yún)^(qū)中輸入和編輯任何命令,在編輯完成后通過點(diǎn)擊“執(zhí)行”按鈕(或按F5快捷鍵)來執(zhí)行輸入?yún)^(qū)中的命令腳本。,ORACLE 9i,還有一種以命令方式進(jìn)行重新連接的方法更為便捷

23、,重新進(jìn)行連接的命令是CONNECT。以下是該方法的訓(xùn)練?!居?xùn)練2】 輸入和執(zhí)行CONNECT命令重新連接數(shù)據(jù)庫。步驟1:在輸入?yún)^(qū)域清除原有命令,輸入新命令。CONNECT SCOTT/TIGER@MYDB 步驟2:點(diǎn)擊“執(zhí)行”按鈕(或按F5快捷鍵)執(zhí)行該命令。顯示結(jié)果為:已連接。,ORACLE 9i,說明:SCOTT為賬戶名,?TIGER為口令,賬戶名和口令之間用“/”分隔。“@”后面

24、的字符串稱為網(wǎng)絡(luò)服務(wù)名或稱為連接字符串。注意:以上方法的口令是顯式的,容易被其他人竊取。要關(guān)閉或退出SQL*Plus,可以在輸入?yún)^(qū)域直接輸入“EXIT”或“QUIT”命令并執(zhí)行,或執(zhí)行“文件”菜單下的“退出”命令。,ORACLE 9i,2.環(huán)境設(shè)置命令在SQL*Plus環(huán)境下,可以使用一系列的設(shè)置命令來對環(huán)境進(jìn)行設(shè)置。如果不進(jìn)行設(shè)置,系統(tǒng)會使用默認(rèn)值。通過SHOW ALL命令可以查看SQL*Plus的環(huán)境參數(shù)。設(shè)置命令

25、的格式為SET 參數(shù) [ON|OFF|值]通常需要對輸出的顯示環(huán)境進(jìn)行設(shè)置,這樣可以達(dá)到更理想的輸出效果。顯示輸出結(jié)果是分頁的,默認(rèn)的頁面大小是14行×80列。以下的訓(xùn)練是設(shè)置輸出頁面的大小,用戶可以比較設(shè)置前后的輸出效果。,ORACLE 9i,【訓(xùn)練3】 設(shè)置輸出頁面的大小。步驟1:輸入并執(zhí)行以下命令,觀察顯示結(jié)果:SELECT * FROM emp;步驟2:在輸入?yún)^(qū)輸入并執(zhí)行以下命令:

26、SET PAGESIZE 100 SET LINESIZE 120 或SET PAGESIZE 100 LINESIZE 120 步驟3:重新輸入并執(zhí)行以下命令,觀察顯示結(jié)果:SELECT * FROM emp;,ORACLE 9i,說明:命令SET PAGESIZE 100將頁高設(shè)置為100行,命令SET LINESIZE 120將頁寬設(shè)置為120個字符。通過頁面的重新設(shè)置,消除了顯示的折行現(xiàn)象。SEL

27、ECT語句用來對數(shù)據(jù)庫的表進(jìn)行查詢,這將在后面介紹。如果用戶忘記了自己是以什么用戶身份連接的,可以用以下的命令顯示當(dāng)前用戶。【訓(xùn)練4】 顯示當(dāng)前用戶。輸入并執(zhí)行命令:SHOW USER執(zhí)行結(jié)果是:USER為"SCOTT",ORACLE 9i,說明:顯示的當(dāng)前用戶為SCOTT,即用戶是以SCOTT賬戶登錄的。注意:使用SELECT USER FROM dual命令也可以取得用

28、戶名。通過進(jìn)行適當(dāng)?shù)脑O(shè)置,可以把操作內(nèi)容或結(jié)果記錄到文本文件中?!居?xùn)練5】 使用SPOOL命令記錄操作內(nèi)容。步驟1:執(zhí)行命令:SPOOL C:\TEST步驟2:執(zhí)行命令:SELECT * FROM emp;,ORACLE 9i,步驟3:執(zhí)行命令:SELECT * FROM dept;步驟4:執(zhí)行命令:SPOOL OFF步驟5:用記事本打開C:\TEST.LST并查看內(nèi)容:

29、OEM_sqlplus_input_finishedSELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATESALOMMDEPTNO------- ---------- --------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------

30、-- -----------,ORACLE 9i,7369 SMITH CLERK 7902 17-12月-80 1560 207499 ALLEN SALESMAN 7698 20-2月 -81 1936 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1830

31、 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1830 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850

32、 30,ORACLE 9i,7782 CLARK MANAGER 7839 09-6月 -81 2850 10 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月 -81

33、 1997 0 30 7876 ADAMS CLERK 7788 23-5月 -87 1948 20 7900 JAMES CLERK 7698 03-12月-81 1852 30,ORACLE 9i,7788 SCOTT ANALYST

34、 7566 19-4月 -87 3000 20 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1903 10已選擇14行。,

35、ORACLE 9i,OEM_sqlplus_input_finishedSELECT * FROM dept; DEPTNO DNAME LOC ---------- -------------- ------------- ------------- ----- 10 ACCOUNTING NEW YORK 20 RESEARCH D

36、ALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 已選擇4行。,ORACLE 9i,說明:以上步驟將輸入的命令和輸出的結(jié)果記錄到C盤根目錄下的TEST.LST文件中,內(nèi)容如上所示。SPOOL OFF命令用來關(guān)閉記錄過程??梢允褂眠@種方法對操作進(jìn)行磁盤記錄。還有如下環(huán)境設(shè)置命令,在這里不做詳細(xì)介紹:?

37、0;   Set heading on/off:打開/關(guān)閉查詢結(jié)果表頭的顯示,默認(rèn)為ON。?    Set feedback on/off:打開/關(guān)閉查詢結(jié)果中返回行數(shù)的顯示,默認(rèn)為ON。 ?    Set echo on/off:打開/關(guān)閉命令的回顯,默認(rèn)為ON。 ?    Set time on/off:打

38、開/關(guān)閉時間顯示,默認(rèn)為OFF。,ORACLE 9i,我們可以將一系列的SET命令存入BEGIN.SQL,并放在SQL*Plus啟動文件的同一個目錄下,這樣就可以在啟動時自動地進(jìn)行設(shè)置了。SQL*Plus啟動文件的目錄在Oracle主目錄的BIN目錄下。【練習(xí)1】關(guān)閉表頭和返回結(jié)果行數(shù)的顯示,然后再打開。,ORACLE 9i,1.2.2 認(rèn)識表的結(jié)構(gòu)SCOTT賬戶擁有若干個表,其中主要有一個EMP表,該表存儲公司雇員的信息

39、,還有一個DEPT表,用于存儲公司的部門信息。表是用來存儲二維信息的,由行和列組成。行一般稱為表的記錄,列稱為表的字段。要了解一個表的結(jié)構(gòu),就要知道表由哪些字段組成,各字段是什么數(shù)據(jù)類型,有什么屬性。要看表的內(nèi)容,就要通過查詢顯示表的記錄。ORACLE常用的表字段數(shù)據(jù)類型有:   ?  CHAR:固定長度的字符串,沒有存儲字符的位置,用空格填充。 ?  VARCHAR2:可變長度的字符串,自動去掉前后

40、的空格。,ORACLE 9i,?   NUMBER(M, N):數(shù)字型,M是位數(shù)總長度, N是小數(shù)的長度。?    DATE:日期類型,包括日期和時間在內(nèi)。?    BOOLEAN:布爾型,即邏輯型??梢允褂肈ESCRIBE命令(DESCRIBE可簡寫成DESC)來檢查表的結(jié)構(gòu)信息。,ORACLE 9i,1.雇員表EMP的結(jié)構(gòu)

41、以下訓(xùn)練顯示emp表的結(jié)構(gòu)。【訓(xùn)練1】 顯示EMP表的結(jié)構(gòu)。輸入并執(zhí)行以下命令(emp為要顯示結(jié)構(gòu)的表名):DESCRIBE emp輸出區(qū)的顯示結(jié)果如下:名稱 是否為空? 類型,ORACLE 9i,EMPNO NOT NULL NUMBER(4) ENAME

42、 VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE

43、DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2),ORACLE 9i,說明:以上字段用到了3種數(shù)據(jù)類型:數(shù)值

44、型、字符型和日期型,都是常用的數(shù)據(jù)類型。列表顯示了字段名、字段是否可以為空、字段的數(shù)據(jù)類型和寬度。在是否為空域中的“NOT NULL”代表該字段的內(nèi)容不能為空,即在插入新記錄時必須填寫;沒有代表可以為空。括號中是字段的寬度。日期型數(shù)據(jù)是固定寬度,無需指明。該表共有8個字段,或者說有8個列,各字段的名稱和含義解釋如下: EMPNO是雇員編號,數(shù)值型,長度為4個字節(jié),不能為空。 ENAME是雇員姓名,字符型,長度為10個字

45、節(jié),可以為空?!OB是雇員職務(wù),字符型,長度為9個字節(jié),可以為空。,ORACLE 9i,MGR是雇員經(jīng)理的編號,數(shù)值型,長度為4個字節(jié),可以為空。HIREDATE是雇員雇傭日期,日期型,可以為空。SAL是雇員工資,數(shù)值型,長度為7個字節(jié),小數(shù)位有2位,可以為空。COMM是雇員津貼,數(shù)值型,長度為7個字節(jié),小數(shù)位有2位,可以為空。DEPTNO是雇員所在的部門編號,數(shù)值型,長度為2個字節(jié)的整數(shù),可以為空。,O

46、RACLE 9i,2.部門表DEPT的結(jié)構(gòu)以下訓(xùn)練顯示DEPT表的結(jié)構(gòu)。【訓(xùn)練2】 顯示部門表DEPT的結(jié)構(gòu)。輸入以下的命令:DESCRIBE dept結(jié)果為:名稱 是否為空? 類型,ORACLE 9i,--------------------------------------------- ---------------- ----------

47、---------------- DEPTNO NOT NULLNUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13)說明:以上字段用到了2種數(shù)據(jù)類型:數(shù)值型和字符型。DEPT表共有3個字

48、段:DEPTNO代表部門編號,數(shù)值型,寬度為2個字節(jié),不能為空。DNAME代表部門名稱,字符型,長度為14個字節(jié),可以為空。LOC代表所在城市,字符型,長度為13個字節(jié),可以為空。,ORACLE 9i,1.2.3 顯示表的內(nèi)容已知表的數(shù)據(jù)結(jié)構(gòu),還要通過查詢命令來顯示表的內(nèi)容,這樣就可以了解表的全貌。顯示表的內(nèi)容用查詢語句進(jìn)行。1.雇員表EMP的內(nèi)容【訓(xùn)練1】 顯示EMP表的全部記錄。步驟1:

49、輸入并執(zhí)行以下命令:SELECT * FROM emp;在輸出區(qū)將顯示表的內(nèi)容。 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO-------------- -------------- -------------------- -------------------------------- ------------ -----------

50、---- ---------------,ORACLE 9i,7369 SMITH CLERK 7902 17-12月-80 800 207499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 307521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 J

51、ONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAK MANAGER 7839 01-5月 -81 2850 30 7782 CLARK MANAGER 7839 09-6月 -81 2450 107788 SC

52、OTT ANALYST 7566 19-4月 -87 3000 20,ORACLE 9i,7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7876 ADAMS CLERK 7788 23-5月 -87 1100 20

53、 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10已選擇14行。,ORACLE 9i,說明:觀察表的內(nèi)容,在顯示結(jié)果中,虛線以上部分(第一行)稱為表頭,是

54、EMP表的字段名列表。該表共有8個字段,顯示為8列。虛線以下部分是該表的記錄,共有14行,代表14個雇員的信息。如雇員7788的名字是SCOTT,職務(wù)為ANALYST,......。這個表在下面的練習(xí)中要反復(fù)使用,必須熟記字段名和表的內(nèi)容。2.部門表DEPT的內(nèi)容【訓(xùn)練2】 顯示DEPT表的全部記錄。輸入并執(zhí)行以下查詢命令:SELECT * FROM dept;,ORACLE 9i,執(zhí)行結(jié)果為:

55、 DEPTNO DNAME LOC ----------------- --------------------- --------------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIO

56、NS BOSTON說明:該表中共有3個字段:部門編號DEPTNO、部門名稱DNAME和所在城市LOC。該表共有4個記錄,顯示出4個部門的信息,如部門10的名稱是ACCOUNTING,所在城市是NEW YORK。這個表在下面的練習(xí)中要反復(fù)使用,必須熟記字段名和表的內(nèi)容。,ORACLE 9i,【練習(xí)1】根據(jù)EMP表和DEPT表的顯示結(jié)果,說出雇員ADAMS的雇員編號、職務(wù)、經(jīng)理名字、雇傭日期、工資、津貼和部門編號以及該雇

57、員所在的部門名稱和所在城市?!揪毩?xí)2】說出職務(wù)為CLERK的工資最高的雇員是哪一位?職務(wù)為CLERK、部門在NEW YORK的雇員是哪一位?1.2.4 SQL*Plus環(huán)境的使用在SQL*Plus環(huán)境下,命令可以在一行或多行輸入,命令是不分大小寫的。SQL命令一般要以“;”結(jié)尾??梢栽谳斎雰?nèi)容中書寫注釋,或?qū)⒃袃?nèi)容變成注釋。注釋的內(nèi)容在執(zhí)行時將被忽略。,ORACLE 9i,注釋的方法是:* 在一行的開頭處

58、書寫REM,將一行注釋掉。* 在一行中插入“--”,將其后的內(nèi)容注釋掉。* 使用/*...... */,可以用來注釋任何一段內(nèi)容?!居?xùn)練1】 使用注釋。在輸入?yún)^(qū)輸入以下內(nèi)容,按F5執(zhí)行。REM 本句是注釋語句--SELECT * FROM emp;該句也被注釋執(zhí)行后沒有產(chǎn)生任何輸出。,ORACLE 9i,說明:REM和“--”產(chǎn)生注釋作用,語句不執(zhí)行,所以沒有輸出。注釋后的內(nèi)容將變成紅色顯示。

59、如果需要的話,可以分別將輸入?yún)^(qū)或輸出區(qū)的內(nèi)容以文本文件的形式存盤,供以后查看或重新使用?!居?xùn)練2】 保存輸入?yún)^(qū)的內(nèi)容。步驟1:在輸入?yún)^(qū)重新輸入命令:SELECT * FROM emp;SELECT * FROM dept;步驟2:選擇“文件”菜單下的“將輸入另存為”命令,彈出文件存盤對話框。選擇正確的磁盤位置,為存盤的文件起一個名字。如果輸入?yún)^(qū)中的內(nèi)容是SQL命令或命令序列,則使用擴(kuò)展名.SQL;否

60、則可以省略或以.TXT做擴(kuò)展名。在本例中,選SELECT.SQL做文件名。,ORACLE 9i,步驟3:按“保存”按鈕,將輸入?yún)^(qū)的內(nèi)容存入磁盤文件。步驟4:用記事本查看保存的內(nèi)容(略)。說明:用同樣的方法可以保存輸出區(qū)的內(nèi)容?!揪毩?xí)1】請試著將輸出區(qū)的內(nèi)容存入文件RESULT.TXT。輸出區(qū)中每一條命令的執(zhí)行結(jié)果都將出現(xiàn)在其中,通過滾動條來顯示屏幕之外的內(nèi)容。當(dāng)輸出區(qū)的內(nèi)容很多,顯示混亂時,可以清除區(qū)域中的內(nèi)容。

61、,ORACLE 9i,【訓(xùn)練3】 清除輸出區(qū)域的顯示內(nèi)容。將光標(biāo)置入輸出區(qū),執(zhí)行“編輯”菜單的“全部清除”命令。結(jié)果輸入?yún)^(qū)的內(nèi)容被清除。說明:以上菜單命令將清除輸出區(qū)的全部顯示內(nèi)容。使用同樣的方法可以清除輸入?yún)^(qū)的全部內(nèi)容。如果某些命令已經(jīng)存盤,特別是比較長和復(fù)雜的命令或命令序列,可以重新調(diào)入輸入?yún)^(qū)或直接執(zhí)行。,ORACLE 9i,【訓(xùn)練4】 調(diào)入磁盤文件執(zhí)行。步驟1:執(zhí)行“文件”菜單的“打開”命令,彈出打開文

62、件對話框。步驟2:選擇剛剛存盤的SELECT.SQL文件,按“打開”按鈕,將存盤的文件裝入輸入?yún)^(qū)。步驟3:按F5執(zhí)行該命令。結(jié)果從略。執(zhí)行“工作單”菜單下的“運(yùn)行本地腳本”命令,可以直接運(yùn)行存盤文件中的SQL命令,請做如下練習(xí)。,ORACLE 9i,【練習(xí)2】直接執(zhí)行SELECT.SQL文件中的語句。每次用戶執(zhí)行過的命令將存儲在內(nèi)存的“命令歷史記錄區(qū)”中,直到退出SQL*Plus環(huán)境。用戶可以使用“工作單”

63、菜單下的“命令歷史記錄”、“上一條”或“下一條”命令(或按Ctrl+H/Ctrl+P/Ctrl+N快捷鍵)調(diào)出執(zhí)行過的命令腳本?!揪毩?xí)3】通過快捷鍵CTRL+P和CTRL+N調(diào)出前一條和后一條命令到輸入?yún)^(qū)。,ORACLE 9i,1.3 Oracle的應(yīng)用開發(fā)工具TOAD,Oracle有很多開發(fā)工具可以選用,TOAD 是Quest Software公司的具有圖形界面的輕量級開發(fā)工具,是Oracle應(yīng)用開發(fā)者工具(Tools for

64、Oracle Application Developer)的縮寫。它比SQL*Plus有更多的功能,除了可以自動格式化和執(zhí)行SQL語句以及支持PL/SQL程序的編程和調(diào)試之外,它的數(shù)據(jù)庫對象瀏覽功能能夠讓我們直觀地看到數(shù)據(jù)庫的模式對象,并進(jìn)行直觀的操作。TOAD提供60天的免費(fèi)使用版本,在功能上比商業(yè)版有所限制,使用到期后需要重新下載和安裝。,ORACLE 9i,TOAD的下載網(wǎng)址是http://www.toadsoft.com。

65、TOAD可以用菜單或圖標(biāo)按鈕的方式進(jìn)行操作。在啟動后的界面中,它可以建立多個數(shù)據(jù)庫連接,打開多個SQL工作窗口,用于執(zhí)行SQL語句和PL/SQL程序;TOAD還提供了單獨(dú)的存儲過程編輯調(diào)試窗口,用來編輯、調(diào)試和執(zhí)行存儲過程、函數(shù)和包;還可以打開多個對象瀏覽窗口,用來觀察用戶的模式對象信息,如表、視圖、約束條件和存儲過程等。以上TOAD的主要功能就能夠滿足本課程的需要。TOAD還有許多功能,這里就不一一介紹了。圖1-7是TOAD的啟

66、動登錄界面,在輸入正確的連接字符串、賬戶名和口令后,點(diǎn)擊“OK”按鈕就可以登錄了。,ORACLE 9i,圖1-7 TOAD的登錄對話窗口,,ORACLE 9i,【訓(xùn)練1】 登錄TOAD,執(zhí)行簡單查詢。步驟1:啟動TOAD,在啟動對話框中輸入以下登錄信息:用戶名:SCOTT口令:TIGER 服務(wù):MYDB其中,MYDB為以前創(chuàng)建好的數(shù)據(jù)庫連接字符串。按確定按鈕登錄,登錄后出現(xiàn)主窗口(如圖1-8所示)

67、。TOAD是個多用戶窗口界面,可以根據(jù)需要在工作區(qū)中打開多個子窗口,同時進(jìn)行操作。,ORACLE 9i,圖1-8 TOAD的主界面,,ORACLE 9i,步驟2:每次按打開SQL工作窗口按鈕都可以打開一個SQL窗口,可測試不同的SQL語句。在第一個窗口中輸入以下查詢語句,并按執(zhí)行按鈕:SELECT * FROM emp;在結(jié)果區(qū)以表格形式顯示查詢結(jié)果,結(jié)果如圖1-9所示。步驟3:打開第二個SQL工作窗口,在其中

68、輸入另外的查詢語句并執(zhí)行:SELECT * FROM dept;結(jié)果從略。,ORACLE 9i,圖1-9 SQL子窗口,,ORACLE 9i,1.4 操作準(zhǔn)備,為了完成后續(xù)的練習(xí),需要為每一個練習(xí)者準(zhǔn)備一個賬戶,將數(shù)據(jù)復(fù)制到該賬戶下。先由教師或管理員創(chuàng)建一個公用賬戶STUDENT,并授予該賬戶創(chuàng)建用戶、創(chuàng)建表等必要權(quán)限,通過該賬戶創(chuàng)建新用戶并傳遞權(quán)限給新賬戶。其次,教師或管理員負(fù)責(zé)登錄SCOTT賬戶,將EMP和DEPT等表

69、的訪問權(quán)限(SELECT)授予所有用戶(PUBLIC)。以下是創(chuàng)建新用戶的腳本,使用前應(yīng)由教師或管理員準(zhǔn)備好賬戶STUDENT,該賬戶的口令為STDUENT。下面以創(chuàng)建USER1賬戶為例,完成準(zhǔn)備工作。,ORACLE 9i,【訓(xùn)練1】 創(chuàng)建新用戶USER1,并登錄和復(fù)制數(shù)據(jù)。步驟1:登錄STUDENT賬戶。CONNECT STUDENT/STUDENT@MYDB執(zhí)行結(jié)果:已連接。步驟2:創(chuàng)建新用戶U

70、SER1,口令為ABC123,口令需要以字母開頭。CREATE USER USER1 IDENTIFIED BY ABC123執(zhí)行結(jié)果:用戶已創(chuàng)建。其中,用戶名為USER1,口令為ABC123。,ORACLE 9i,步驟3:授予連接數(shù)據(jù)庫權(quán)限、創(chuàng)建表權(quán)限、創(chuàng)建存儲過程和表空間使用權(quán)限。GRANT CONNECT TO USER1;GRANT CREATE TABLE TO USER1;GRANT

溫馨提示

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

評論

0/150

提交評論