![文稿o經(jīng)典教程_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e0/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e01.gif)
![文稿o經(jīng)典教程_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e0/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e02.gif)
![文稿o經(jīng)典教程_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e0/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e03.gif)
![文稿o經(jīng)典教程_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e0/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e04.gif)
![文稿o經(jīng)典教程_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e0/54cf0f92-6fe9-4cd9-87cb-0cc601fce5e05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、走進(jìn) Oracle..Oracle 簡(jiǎn)介3Oracle 安裝4Oracle 客戶端工具9Oracle 服務(wù)16Oracle 啟動(dòng)和關(guān)閉17Oracle 用戶和權(quán)限18本章總結(jié)21本章練習(xí)22SQL 數(shù)據(jù)操作和..SQL 簡(jiǎn)介26Oracle 數(shù)據(jù)類型26創(chuàng)建表和約束27數(shù)據(jù)語(yǔ)言(DML)30操作符35高級(jí)36本章總結(jié)44本章練習(xí)45和常用函數(shù)48子.5. 49子Oracle 中的偽列51Oracle 函數(shù)54本章總結(jié)62本章練習(xí)63表空間、數(shù)據(jù)庫(kù)對(duì)象6..Oracle 數(shù)據(jù)庫(kù)對(duì)象67同義詞
2、67序列70視圖72索引74表空間75本章總結(jié)79本章練習(xí)80PL/SQL 程序設(shè)計(jì)8..PL/SQL 簡(jiǎn)介84PL/SQL 塊85PL/SQL 數(shù)據(jù)類型89PL/SQL 條件和循環(huán)91PL/SQL 中動(dòng)態(tài)執(zhí)行 SQL 語(yǔ)句101PL/SQL 的異常處理102本章總結(jié)108本章練習(xí)109Oracle 應(yīng)用于.Net 平臺(tái)1111.回顧ADO.NET1.使用ADO.NET 連接 Oracle113抽象工廠中加入 Oracle117本章總結(jié)121本章練習(xí)122數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出1.Oracle 導(dǎo)入導(dǎo)出125EXP 導(dǎo)出數(shù)據(jù)125IMP
3、 導(dǎo)入128常見問題128第 1 章走進(jìn) Oracle主要內(nèi)容üüüOracle 安裝Oracle 創(chuàng)建用戶和客戶端Oracle 服務(wù)器1. Oracle 簡(jiǎn)介在第一學(xué)期我們已經(jīng)接觸過關(guān)系型數(shù)據(jù)庫(kù) SQL Server,對(duì)數(shù)據(jù)庫(kù)、表、表的增刪改查操作等這些基本的概念已經(jīng)了解。Oracle 是基于對(duì)象的關(guān)系型數(shù)據(jù)庫(kù),Oracle 也是用表的形式對(duì)數(shù)據(jù)和管理,并且在 Oracle 的操作中添加了一些面向?qū)ο蟮乃枷搿racle 數(shù)據(jù)庫(kù)是 Oracle(中文名稱叫甲骨文)公司的,Oracle 數(shù)據(jù)庫(kù)是一個(gè)適合于大中型企業(yè)的數(shù)據(jù)庫(kù)管理系統(tǒng)。在所有的數(shù)據(jù)庫(kù)管理系統(tǒng)中(比如:
4、微軟的SQLServer,IBM 的 DB2 等),Oracle 的主要用戶涉及面非常廣,包括:、電信、移動(dòng)通信、航空、保險(xiǎn)、金融、電子商務(wù)和公司等。Oracle是的,可以在 Oracle 官方上到安裝包,另一方面 Oracle 服務(wù)是的。Oracle 公司成立以來,從最初的數(shù)據(jù)庫(kù)版本到 Oracle7、Oracle8i、Oracle9i,Oracle10g到 Oracle11g,雖然每一個(gè)版本之間的操作都存在一定的差別,但是 Oracle 對(duì)數(shù)據(jù)的操作基本上都遵循SQL 標(biāo)準(zhǔn)。因此對(duì) Oracle 開發(fā)來說版本之間的差別不大。很多人沒有學(xué)習(xí) Oracle 就開始發(fā)怵,因?yàn)槿藗冊(cè)谡`解 Orac
5、le,認(rèn)為 Oracle 太難學(xué)了,認(rèn)為 Oracle 不是一般人用的數(shù)據(jù)庫(kù),其實(shí)任何數(shù)據(jù)庫(kù)對(duì)應(yīng)用程序研發(fā)來說,都是大同小異,因?yàn)槟壳岸鄶?shù)數(shù)據(jù)庫(kù)都支持標(biāo)準(zhǔn)的SQL。在 Oracle 這本書中,我們能學(xué)習(xí)到:ØØØØØOracle 的安裝Oracle 數(shù)據(jù)管理常用子及常用函數(shù)PL/SQL 編程Oracle 基本管理由于在第一學(xué)期已經(jīng)接觸了 SQL Server,Oracle 數(shù)據(jù)庫(kù)的概念不是很難,主要是實(shí)踐,因此在本書的學(xué)習(xí)中,認(rèn)真的完成上機(jī)練習(xí)是學(xué)習(xí)好本書的關(guān)鍵。接下來我們先從 Oracle 安裝開始,接觸一些 Oracle 中基本的概念。2.
6、 Oracle 安裝Oracle 數(shù)據(jù)庫(kù)是的,我們可以從 Oracle 的()到程序安裝包,Oracle 在 Windows 下的安裝非常方便,安裝開始后,一直點(diǎn)擊安裝程序的“下一步”即可。1.Oracle10g 后,解壓到一個(gè)文件夾下,單擊“setup.exe”文件即可啟動(dòng)安裝界面。如下圖:圖1 Oracle 安裝啟動(dòng)界面Oracle 主目錄位置就是 Oracle 準(zhǔn)備安裝的位置,稱為“Oracle_Home”,一般 Oracle根據(jù)當(dāng)前計(jì)算機(jī)的硬盤大小默認(rèn)給出一個(gè)合適的位置。Oracle 安裝時(shí)可以只安裝 Oracle 軟件,然后單獨(dú)創(chuàng)建數(shù)據(jù)庫(kù),也可以在上圖中選中“創(chuàng)建啟動(dòng)數(shù)據(jù)庫(kù)”復(fù)選框,
7、在安裝 Oracle 時(shí),同時(shí)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),對(duì)初學(xué)者來說,推薦這樣安裝。填寫全局?jǐn)?shù)據(jù)庫(kù)名,以及管理員的。全局?jǐn)?shù)據(jù)庫(kù)名是數(shù)據(jù)庫(kù)在服務(wù)器網(wǎng)絡(luò)中的唯一標(biāo)識(shí)。2. 點(diǎn)擊“下一步”,就會(huì)出現(xiàn)如下圖內(nèi)容,開始對(duì) Oracle 服務(wù)器進(jìn)行環(huán)境檢查,主要查看服務(wù)器是否符合 Oracle 安裝的條件,比如操作系統(tǒng)是否支持、系統(tǒng)內(nèi)存是否符合 Oracle 安裝的最低要求等。圖2 Oracle 安裝前環(huán)境檢查3.Oracle 檢查通過后,單擊“下一步”,就會(huì)列出所有安裝 Oracle 過程中的默認(rèn)選項(xiàng)。圖3 Oracle 默認(rèn)安裝設(shè)置4.單擊“安裝”按鈕,進(jìn)入安裝界面,這一過程經(jīng)歷時(shí)間比較長(zhǎng),根據(jù)計(jì)算機(jī)的性能不同
8、有很大差別。圖4 Oracle 安裝5.上圖完成后,進(jìn)入了各種 Oracle 工具的安裝階段,包括網(wǎng)絡(luò)配置向?qū)?,iSQL*plus等(后面課程中講解)。如下圖所示:圖5 Oracle 各種工具的安裝6.接下來自動(dòng)啟動(dòng) DBCA(Database Configuration Assistant)進(jìn)入創(chuàng)建默認(rèn)數(shù)據(jù)庫(kù)階段。圖 6 DBCA 下安裝數(shù)據(jù)庫(kù)Oracle 中的數(shù)據(jù)庫(kù)主要是指存放數(shù)據(jù)的文件,這些文件在 Oracle 安裝完成后,在計(jì)算機(jī)硬盤上都能找到,包括數(shù)據(jù)文件、文件和數(shù)據(jù)庫(kù)日志文件。數(shù)據(jù)庫(kù)創(chuàng)建后會(huì)有一系列為該數(shù)據(jù)庫(kù)提供服務(wù)的內(nèi)存空間和進(jìn)程,稱為該數(shù)據(jù)庫(kù)的實(shí)例。每一個(gè)數(shù)據(jù)庫(kù)至少會(huì)有一個(gè)實(shí)例
9、為其服務(wù)。實(shí)例中的內(nèi)存結(jié)構(gòu)稱為系統(tǒng)全局區(qū)(SGA),系統(tǒng)會(huì)根據(jù)當(dāng)前計(jì)算機(jī)系統(tǒng)的性能給 SGA 分配非??捎^的內(nèi)存空間。Oracle 創(chuàng)建數(shù)據(jù)庫(kù)不能像 SQL Server 那樣用一個(gè)簡(jiǎn)單的 CREATE DATABASE 命令就能完成,在創(chuàng)建數(shù)據(jù)庫(kù)的過程中還需要配置各種參數(shù)。雖然有 DBCA 工具向?qū)?,但是仍然需要進(jìn)行比較麻煩的配置。7. 數(shù)據(jù)庫(kù)創(chuàng)建完畢后,需要設(shè)置數(shù)據(jù)庫(kù)的默認(rèn)用戶。Oracle 中為管理員預(yù)置了兩個(gè)用戶分別是SYS 和 SYSTEM。同時(shí) Oracle 為程序測(cè)試提供了一個(gè)普通用戶 scott,雖然一個(gè) Oracle 數(shù)據(jù)庫(kù)服務(wù)器中可以安裝多個(gè)數(shù)據(jù)庫(kù),但是一個(gè)數(shù)據(jù)庫(kù)需要占用非
10、常大的內(nèi)存空間,因此一般一個(gè)服務(wù)器只安裝一個(gè)數(shù)據(jù)庫(kù)。每一個(gè)數(shù)據(jù)庫(kù)可以有很多用戶,不同的用戶擁有 的數(shù)據(jù)庫(kù)對(duì)象(比如:數(shù)據(jù)庫(kù)表),一個(gè)用戶如果其他用戶的數(shù)據(jù)庫(kù)對(duì)象,必須由對(duì)方用戶授予一定的權(quán)限。不同的用戶創(chuàng)建的表, 只能被當(dāng)前用戶 。因此在 Oracle 開發(fā)中,不同的應(yīng)用程序只需使用不同的用戶即可。,設(shè)置是否鎖定。 Oracle 客戶端使用用口令管理中,可以對(duì)數(shù)據(jù)庫(kù)用戶設(shè)置戶名和登錄 Oracle 系統(tǒng)后才能對(duì)數(shù)據(jù)庫(kù)操作。圖7 DBCA 下的口令管理圖8 為 system,sys,scott 用戶設(shè)置默認(rèn)的用戶中,SYS 和SYSTEM 用戶是沒有鎖定的,安裝后可以直接使用,SCOTT用戶默認(rèn)
11、為鎖定狀態(tài),因此不能直接使用,需要把 SCOTT 用戶設(shè)定為非鎖定狀態(tài)才能正常使用。這一步完成后,Oracle 系統(tǒng)安裝。3. Oracle 客戶端工具Oracle 服務(wù)器安裝后,就可以通過客戶端工具連接Oracle 服務(wù)器了,可以到 OracleOracle的客戶端軟件,大多客戶端工具都是基于 Oracle 客戶端軟件的。接下來介紹幾種常用的 Oracle 客戶端工具。² SQL*Plus 工具該工具是 Oracle 系統(tǒng)默認(rèn)安裝下,自帶的一個(gè)客戶端工具。在 Windows 命令行中輸入“sqlplusw”命令,就能夠啟動(dòng)該工具了。圖 9 SQL*Plus 工具輸入用戶名和后,如果
12、 SQL*Plus 與數(shù)據(jù)庫(kù)服務(wù)器在同一臺(tái)計(jì)算機(jī)上,并且當(dāng)前服務(wù)器下只有一個(gè)數(shù)據(jù)庫(kù)實(shí)例,那么“主機(jī)字符串”可以不用填寫。SQL*Plus 工具雖然是 Oracle 自帶的工具,但是在現(xiàn)實(shí)開發(fā)中,基于該環(huán)境對(duì)開發(fā)不方便,因此很少使用。Oracle 數(shù)據(jù)庫(kù)中,默認(rèn)情況下,所有系統(tǒng)的數(shù)據(jù),SQL 關(guān)鍵字等都是大寫的,在操作過程中,Oracle 會(huì)自動(dòng)把這些內(nèi)容轉(zhuǎn)換為大寫,因此用戶操作時(shí)不需考慮大小寫問題,一般情況下,為了良好的程序風(fēng)格,程序中建議關(guān)鍵字用大寫,非關(guān)鍵字可以使用小寫。SQL*Plus 連接后就:圖 10 SQL*Plus 工具登錄后² SQL*Plus 命令行工具該命令行工具
13、,提供了與數(shù)據(jù)庫(kù)交互的能力和維護(hù)數(shù)據(jù)庫(kù)的能力,包括了 Oracle 自帶的SQL*Plus 工具的全部功能,在Oracle 管理中經(jīng)常使用。在命令行中輸入:“sqlplus /nolog”即可啟動(dòng)該工具。如下圖:圖 11 啟動(dòng)SQL*Plus 命令行工具輸入“sqlplus /nolog”命令后,只是啟動(dòng)了一個(gè)客戶端進(jìn)程,并沒有與服務(wù)器連接,連接到 Oracle 服務(wù)器令是:conn 用戶名/as 連接服務(wù)器連接字符串說明:1. 連接:表示該用戶連接后擁有的權(quán)限。Øsysdba: 即數(shù)據(jù)庫(kù)管理員,權(quán)限包括:打開數(shù)據(jù)庫(kù)服務(wù)器、關(guān)閉數(shù)據(jù)庫(kù)服務(wù)器、備份數(shù)據(jù)庫(kù)、恢復(fù)數(shù)據(jù)庫(kù)、日志歸檔、會(huì)話限制
14、、管理功能、創(chuàng)建數(shù)據(jù)庫(kù)。sys 用戶必須用 sysdba才能登錄,system 用戶可以用普通登錄。Øsysyoper:即數(shù)據(jù)庫(kù)操作員,權(quán)限包括:打開數(shù)據(jù)庫(kù)服務(wù)器、關(guān)閉數(shù)據(jù)庫(kù)服務(wù)器、備份數(shù)據(jù)庫(kù)、恢復(fù)數(shù)據(jù)庫(kù)、日志歸檔、會(huì)話限制。Ønormal:即普通用戶,權(quán)限只有用戶。某些數(shù)據(jù)表的數(shù)據(jù)。默認(rèn)的是 normal2.客戶端工具可以根據(jù)“服務(wù)器連接字符串”對(duì)服務(wù)器進(jìn)行連接,有了連接字符串后客戶端就可以像操作本機(jī)一樣操作數(shù)據(jù)庫(kù),因此“服務(wù)器連接字符串”的配置也叫本地網(wǎng)絡(luò)服務(wù)配置,如果 SQL*Plus 工具啟動(dòng)在服務(wù)器上,并且服務(wù)器上只有一個(gè)數(shù)據(jù)庫(kù)實(shí)例的情況下,連接字符串可以缺省,在
15、連接字符串中包括連接服務(wù)器的協(xié)議,服務(wù)器的地址,服務(wù)器的端口等設(shè)置,Oracle 服務(wù)名等,該配置文件在Oracle 安裝目錄下的: network/ADMIN/ tnsnames.ora。該文件是一個(gè)文本文件,用記事本打開后如下所示:圖 12 服務(wù)器連接字符串配置² 配置本地網(wǎng)絡(luò)服務(wù)名本地網(wǎng)絡(luò)服務(wù)名,即客戶端與服務(wù)器的連接字符串,本地網(wǎng)絡(luò)服務(wù)名是客戶端的配置,Oracle 客戶端安裝后,可以使用客戶端自帶的網(wǎng)絡(luò)配置向?qū)В∟et Configuration Assistant) 進(jìn)行配置:1. 啟動(dòng) Net Configuration Assistant。選擇“本地 Net 服務(wù)名配
16、置”選項(xiàng)。如下圖所示:圖 13 啟動(dòng) Net Configuration Assistant2.選擇“下一步”,本步驟可以對(duì)本地網(wǎng)絡(luò)服務(wù)名進(jìn)行添加,刪除,測(cè)試是否正常連接等操作,選擇“添加”選項(xiàng)。圖 14 Net Configuration Assistant3.點(diǎn)擊“下一步”,填寫服務(wù)名,該服務(wù)名就是 Oracle 安裝時(shí)(圖 1),為數(shù)據(jù)庫(kù)取的全局?jǐn)?shù)據(jù)庫(kù)名。圖 15 服務(wù)名配置4.點(diǎn)擊“下一步”,選擇服務(wù)需要的協(xié)議,默認(rèn)是 TCP 協(xié)議。推薦使用默認(rèn)的TCP協(xié)議。圖 16 選擇協(xié)議5.點(diǎn)擊“下一步”,輸入主機(jī)名,主機(jī)名可以是計(jì)算機(jī)名稱,也可以是一個(gè) IP 地址,主機(jī)如果是本機(jī),可以使用本機(jī)
17、計(jì)算機(jī)名稱、“l(fā)ocalhost”、“”、或者本機(jī)的IP 地址。圖 17輸入主機(jī)名和端口6.單擊“下一步”,選擇“是,進(jìn)試”選項(xiàng)。進(jìn)入下圖界面。圖 18測(cè)試在測(cè)試時(shí),默認(rèn)采用的用戶名和是 system/manager 進(jìn)試,如果用戶system的不是“manager”,有可能測(cè)試通不過,更改登錄后,輸入正確的用戶名和進(jìn)試即可。后再7. 測(cè)試后,單擊“下一步”,出現(xiàn)如下界面,這一步是地網(wǎng)絡(luò)服務(wù)命名,即圖 12 中的服務(wù)器連接字符串名。圖 19 為網(wǎng)絡(luò)服務(wù)名命名點(diǎn)擊“下一步”,配置就完成了,進(jìn)入 tnsnames.ora 文件中查看,就出現(xiàn)了如圖 12 中的內(nèi)容。² P
18、L/SQL Developer 工具在實(shí)際 Oracle 開發(fā)中,經(jīng)常使用一個(gè)功能強(qiáng)大的第工具:“PL/SQL Developer”工具。PL/SQL Developer 基本上可以實(shí)現(xiàn) Oracle 開發(fā)中的任何操作。它運(yùn)行在客戶端時(shí)必須先安裝 Oracle 客戶端,并且通過網(wǎng)絡(luò)配置向?qū)渲镁W(wǎng)絡(luò)服務(wù)名后才能正常與服務(wù)器連接。圖 20 PL/SQL Developer4. Oracle 服務(wù)Oracle 在 windows 中安裝完成后,會(huì)安裝很多服務(wù),下面介紹幾個(gè)主要的服務(wù)。圖 21 Oracle 服務(wù)Ø OracleService+服務(wù)名,該服務(wù)是數(shù)據(jù)庫(kù)啟動(dòng)的基礎(chǔ),只有該服務(wù)啟動(dòng)
19、了,Oracle數(shù)據(jù)庫(kù)才能正常啟動(dòng)。這是必須啟動(dòng)的服務(wù)。Ø OracleOraDb10g_home1TNSListener,該服務(wù)是服務(wù)器端為客戶端提供的服務(wù),只有該服務(wù)在服務(wù)器上正常啟動(dòng),客戶端才能連接到服務(wù)器。該服務(wù)接收客戶端發(fā)出的請(qǐng)求,然后將請(qǐng)求傳遞給數(shù)據(jù)庫(kù)服務(wù)器。一旦建立了連接,客戶端和數(shù)據(jù)庫(kù)服務(wù)器就能直接通信了。Ø OracleOraDb10g_home1iSQL*Plus,該服務(wù)提供了用瀏覽器對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)操作的方式。該服務(wù)啟動(dòng)后,就可以使用瀏覽器進(jìn)行下圖所示:登錄并進(jìn)行數(shù)據(jù)庫(kù)操作了。如圖 22 iSQL*PlusØ OracleDBConsole+服
20、務(wù)名,Oracle10g 中的一個(gè)新服務(wù)。在 Oracle9i 之前,Oracle提供了一個(gè)基于圖形界面的企業(yè)管理器(EM),從 Oracle10g 開始,Oracle提供了一個(gè)基于B/S 的企業(yè)管理器,在操作系統(tǒng)令行中輸入命令:emctl startdbconsole,就可以啟動(dòng) OracleDbConsole 服務(wù),如下圖所示:圖 23 EM 服務(wù)的啟動(dòng)服務(wù)啟動(dòng)之后,就可以在瀏覽器中輸入上圖中進(jìn)入EM 的地址,使用B/S 方式管理Oracle 服務(wù)器。5. Oracle 啟動(dòng)和關(guān)閉OracleService 啟動(dòng)動(dòng)后,就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理了,Oracle 的啟動(dòng)和關(guān)閉是最基本令,在 SQ
21、L*Plus 中,啟動(dòng) Oracle 必須是 sys 用戶,命令格式是:startup open圖 24 Oracle 服務(wù)啟動(dòng)Oracle 服務(wù)關(guān)閉用命令:shutdown immediate圖 25 Oracle 服務(wù)關(guān)閉6. Oracle 用戶和權(quán)限Oracle 中,一般輕易在一個(gè)服務(wù)器上創(chuàng)建多個(gè)數(shù)據(jù)庫(kù),在一個(gè)數(shù)據(jù)庫(kù)中,不同的項(xiàng)目由不同的用戶,每一個(gè)用戶擁有自身創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象,因此用戶的概念在 Oracle中非常重要。Oracle 的用戶可以用 CREATE USER 命令來創(chuàng)建。其語(yǔ)法是:語(yǔ)法結(jié)構(gòu):創(chuàng)建用戶CREATE USER 用戶名 IDENTIFIED BY 口令 ACCOUN
22、T LOCK|UNLOCK語(yǔ)法:LOCK|UNLOCK 創(chuàng)建用戶時(shí)是否鎖定,默認(rèn)為鎖定狀態(tài)。鎖定的用戶無法正常的登錄進(jìn)行數(shù)據(jù)庫(kù)操作。代碼演示:創(chuàng)建用戶SQL> CREATE USER jerry2 IDENTIFIED BY tom3 ACCOUNT UNLOCK;盡管用戶創(chuàng)建,但是還不能正常的登錄 Oracle 數(shù)據(jù)庫(kù)系統(tǒng),因?yàn)樵撚脩暨€沒有任何權(quán)限。如果用戶能夠正常登錄,至少需要CREATE SESSION 系統(tǒng)權(quán)限。Oracle 用戶對(duì)數(shù)據(jù)庫(kù)管理或?qū)ο蟛僮鞯臋?quán)利,分為系統(tǒng)權(quán)限和數(shù)據(jù)庫(kù)對(duì)象權(quán)限。系統(tǒng)權(quán)限比如:CREATE SESSION,CREATE TABLE 等,擁有系統(tǒng)權(quán)限的用戶
23、,擁有相應(yīng)的系統(tǒng)操作。數(shù)據(jù)庫(kù)對(duì)象權(quán)限,比如對(duì)表中的數(shù)據(jù)進(jìn)行增刪改操作等,擁有數(shù)據(jù)庫(kù)對(duì)象權(quán)限的用戶可以對(duì)所擁有的對(duì)象進(jìn)行對(duì)應(yīng)的操作。還有一個(gè)概念就是數(shù)據(jù)庫(kù)(role),數(shù)據(jù)庫(kù)就是若干個(gè)系統(tǒng)權(quán)限的集合。下面介紹幾個(gè)常用:ØCONNECT,主要應(yīng)用在臨時(shí)用戶,特別是那些不需要建表的用戶,通常只賦予他們 CONNECT role。CONNECT 是使用 Oracle 的簡(jiǎn)單權(quán)限,擁有 CONNECT的用戶,可以與服務(wù)器建立連接會(huì)話(session,客戶端對(duì)服務(wù)器連接,稱為會(huì)話)。ØRESOURCE,更可靠和正式的數(shù)據(jù)庫(kù)用戶可以授予 RESOURCE role。RESOURCE 提供
24、給用戶另外的權(quán)限以創(chuàng)建他們觸發(fā)器(trigger)、索引(index)等。的表、序列、過程(procedure)、ØDBA,DBA role 擁有所有的系統(tǒng)權(quán)限包括的空間限額和給其他用戶授予各種權(quán)限的能力。用戶SYSTEM 擁有 DBA。一般情況下,一個(gè)普通的用戶(如 SCOTT),擁有 CONNECT 和 RESOURCE 兩個(gè)角色即可進(jìn)行常規(guī)的數(shù)據(jù)庫(kù)開發(fā)工作。可以把某個(gè)權(quán)限授予某個(gè),可以把權(quán)限、授予某個(gè)用戶。系統(tǒng)權(quán)限只能由 DBA語(yǔ)法是:用戶,對(duì)象權(quán)限由擁有該對(duì)象的用戶,Oracle 在SQL*Plus 中 令以分號(hào)(;)結(jié)尾,代表命令完畢并執(zhí)行,系統(tǒng)同時(shí)會(huì)把該命令保存在緩存中,
25、緩存中只保存最近執(zhí)行過 令,如果重新執(zhí)行緩存中的命令,直接使用左斜杠符號(hào)(/)。如果命令不以分號(hào)結(jié)尾,該命令只是寫入緩存保存起來,但并不執(zhí)行。語(yǔ)法結(jié)構(gòu):GRANT|權(quán)限 TO 用戶()代碼演示:SQL> GRANT CONNECT TO jerry;。SQL> GRANT RESOURCE TO jerry;。SQL>語(yǔ)法結(jié)構(gòu):其他操作/回收權(quán)限REVOKE|權(quán)限 FROM 用戶(/修改用戶的)ALTER USER 用戶名 IDENTIFIED BY 新/修改用戶處于鎖定(非鎖定)狀態(tài)ALTER USER 用戶名 ACCOUNT LOCK|UNLOCK7. 本章總結(jié)Ø
26、;ØØØOracle 是基于對(duì)象的關(guān)系型數(shù)據(jù)庫(kù),Oracle,服務(wù)。Oracle 安裝后默認(rèn)會(huì)有兩個(gè)管理員用戶(system,sys)和一個(gè)普通用戶Scott。Sql*plus 是 Oracle 管理和數(shù)據(jù)操作的客戶端工具。客戶端服務(wù)器前,服務(wù)器要啟動(dòng)服務(wù),并且客戶端工具要安裝 Oracle 客戶端,并且在客戶端要建立本地網(wǎng)絡(luò)服務(wù)名。Oracle 服務(wù)和ØØØ啟動(dòng)后才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。用startup 命令啟動(dòng)數(shù)據(jù)庫(kù),用 shutdown 命令關(guān)閉數(shù)據(jù)庫(kù)。Oracle 的把權(quán)限或者包括了一系列系統(tǒng)權(quán)限和普通對(duì)象權(quán)限,可以把權(quán)限給用戶
27、。給,8. 本章練習(xí).5.6.描述 Oracle 安裝過程中的關(guān)鍵點(diǎn)。描述創(chuàng)建本地網(wǎng)絡(luò)服務(wù)名的步驟。描述 Oracle 主要服務(wù)的作用。Oracle 使用什么命令才能啟動(dòng)和關(guān)閉。什么是 Oracle 權(quán)限和?他們的關(guān)系是什么?創(chuàng)建一個(gè)用戶,并CONNECT 和 RESOURCE。章節(jié)知識(shí)結(jié)構(gòu)圖第 2 章SQL 數(shù)據(jù)操作和主要內(nèi)容üüüüüOracle 數(shù)據(jù)類型SQL 建表和約束SQL 對(duì)數(shù)據(jù)增刪改SQLOracle 偽列1. SQL 簡(jiǎn)介在第一學(xué)期的 SQL Server 學(xué)習(xí)中,已經(jīng)知道,SQL 是結(jié)構(gòu)化語(yǔ)言(Structure
28、dQuery Language),專門用于數(shù)據(jù)存取、數(shù)據(jù)更新及數(shù)據(jù)庫(kù)管理等操作。并且已經(jīng)學(xué)習(xí)了用SQL 語(yǔ)句對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行增刪改查的操作。在 Oracle 開發(fā)中,客戶端把 SQL 語(yǔ)句給服務(wù)器,服務(wù)器對(duì) SQL 語(yǔ)句進(jìn)行編譯、執(zhí)行,把執(zhí)行的結(jié)果返回給客戶端。Oracle SQL 語(yǔ)句由如下命令組成:Ø數(shù)據(jù)定義語(yǔ)言(DDL),包括 CREATE(創(chuàng)建)命令、ALTER(修改)命令、DROP(刪除)命令等。Ø數(shù)據(jù)語(yǔ)言(DML),包括 INSERT()命令、UPDATE(更新)命令、DELETE(刪除)命令、SELECT FOR UPDATE()等。ØØ數(shù)
29、據(jù)事務(wù)語(yǔ)言(DQL),包括基本語(yǔ)句、Order By 子句、Group By 子句等。語(yǔ)言(TCL),包括 COMMIT(提交)命令、SAVEPOINT(保存點(diǎn))命令、ROLLBACK(回滾)命令。Ø數(shù)據(jù)語(yǔ)言(DCL),GRANT()命令、REVOKE(撤銷)命令。目前主流的數(shù)據(jù)庫(kù)(比如:SQL Server、Oracle)都支持標(biāo)準(zhǔn)的 SQL 語(yǔ)句。數(shù)據(jù)定義語(yǔ)言,表的增刪改操作,數(shù)據(jù)的簡(jiǎn)單,事務(wù)的提交和回滾,權(quán)限的Oracle 與 SQL Server 在操作上基本一致。和撤銷等,2. Oracle 數(shù)據(jù)類型Oracle 數(shù)據(jù)庫(kù)的是表,表中的列使用到的常見數(shù)據(jù)類型如下:類型含義CH
30、AR(length)固定長(zhǎng)度的字符串。參數(shù) length 指定了長(zhǎng)度,如果的字符串長(zhǎng)度小于 length,用空格填充。默認(rèn)長(zhǎng)度是 1,最長(zhǎng)不超過 2000 字節(jié)。VARCHAR2(length)可變長(zhǎng)度的字符串。length 指定了該字符串的最大長(zhǎng)度。默認(rèn)長(zhǎng)度是 1,最長(zhǎng)不超過 4000 字符。NUMBER(p,s)既可以浮點(diǎn)數(shù),也可以整數(shù),p 表示數(shù)字的最大位數(shù)(如果是小數(shù)包括整數(shù)部分和小數(shù)部分和小數(shù)點(diǎn),p 默認(rèn)是 38 為),s 是指小數(shù)位數(shù)。DATE日期和時(shí)間,、4 位年、月、日、時(shí)、分、秒,時(shí)間表1 Oracle 的部分?jǐn)?shù)據(jù)類型對(duì)應(yīng)NUMBER 類型的示例:表2 Number 示例對(duì)于
31、日期類型,可以使用sysdate 內(nèi)置函數(shù)可以獲取當(dāng)前的系統(tǒng)日期和時(shí)間,返回DATE類型,用systimestamp 函數(shù)可以返回當(dāng)前日期、時(shí)間和時(shí)區(qū)。圖1 sysdate 和 sysTimestampOracle 的中,必須使用“select 列 from 表”的完整語(yǔ)法,當(dāng)單行函數(shù)的時(shí)候,from 后面使用 DUAL 表,dual 表在系統(tǒng)中只有一行一列,該表在輸出單行函數(shù)時(shí)為了selectfrom 的語(yǔ)法完整性而使用。3. 創(chuàng)建表和約束Oracle 創(chuàng)建表同 SQL Server 一樣,使用 CREATE TABLE 命令來完成。創(chuàng)建約束則使用如下命令:格式輸入的數(shù)字實(shí)際的NUMBER1
32、234.5671234.567NUMBER(6,2)123.4567123.46NUMBER(4,2)12345.67輸入的數(shù)字超過了所指定的精度,數(shù)據(jù)庫(kù)不能從公元前 4712 年 1 月 1 日到公元后 4712 年 12 月 31 日。TIMESTAMP不但日期的年月日,時(shí)分秒,以及秒后 6 位,同時(shí)包含時(shí)區(qū)。CLOB大的文本,比如非結(jié)構(gòu)化的 XML 文檔BLOB二進(jìn)制對(duì)象,如圖形、聲音等。語(yǔ)法格式:ALTER TABLE 命令A(yù)LTER TABLE 表名 ADD CONSTRAINT 約束名 約束內(nèi)容。不論創(chuàng)建表還是約束,與 SQL Server 基本相同,注意:在 Oracle 中 d
33、efault 是一個(gè)值,而 SQL Server 中 default 是一個(gè)約束,因此 Oracle 的 default 設(shè)置可以在建表的時(shí)候創(chuàng)建。案例 1:創(chuàng)建一個(gè)學(xué)生信息(INFOS)表和約束代碼演示:Oracle 創(chuàng)建表和約束CREATE TABLE INFOS (STUID VARCHAR2(7) NOT NULL,-學(xué)號(hào) 學(xué)號(hào)=S+班號(hào)+2位序號(hào)STUNAME VARCHAR2(10) NOT NULL, -姓名GENDER VARCHAR2(2) NOT NULL, AGE NUMBER(2) NOT NULL,SEAT NUMBER(2) NOT NULL,-座號(hào)ENROLLDA
34、TE DATE,-入學(xué)時(shí)間STUADDRESS VARCHAR2(50) DEFAULT '地址不詳',-住址CLASSNO VARCHAR2(4) NOT NULL-班號(hào) 班號(hào)=學(xué)期序號(hào)+班級(jí)序號(hào))/ ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID)/ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女') /ALTER TABLE INFOS ADD CONST
35、RAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50) /ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100) /ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK(CLASSNO >='1001' AND CLASSNO<='1999') OR(CLASSNO >='2001' AND CLASSNO<
36、='2999') /ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) /代碼:1 在 Oracle 代碼中,“/”執(zhí)行緩存區(qū)中的語(yǔ)句,由于緩沖區(qū)中只一條剛剛保存過語(yǔ)句,由于每條語(yǔ)句沒有用分號(hào)結(jié)尾,只是保存在緩沖區(qū),因此每條語(yǔ)句后面都有單獨(dú)一行“/”。2 創(chuàng)建一個(gè)主鍵約束。3 與 一起創(chuàng)建各種check 約束。其中是唯一約束,表示該列值是唯一的,列中的值不能重復(fù)。Oracle 中創(chuàng)建外鍵約束與 SQL Server 相同。比如:現(xiàn)有成績(jī)表定義如下:案例 2:創(chuàng)建一個(gè)成績(jī)表(SCORES)表和約束代碼演示:Or
37、acle 創(chuàng)建表和約束CREATE TABLE SCORES (ID NUMBER ,TERM VARCHAR2(2),-ID -學(xué)期 S1或S2-學(xué)號(hào)-考號(hào) E+班號(hào)+序號(hào)-筆試成績(jī)-機(jī)試成績(jī)STUID VARCHAR2(7) NOT NULL, EXAMNO VARCHAR2(7) NOT NULL,WRITTENSCORE NUMBER(4,1) NOT NULL,LABSCORE NUMBER(4,1) NOT NULL)ALTER TABLE SCORESADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM =
38、'S2')/ALTER TABLE SCORESADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) /代碼:1 SQL Server 中可以使用 identify 創(chuàng)建自動(dòng)增長(zhǎng)列,但是 Oracle 中的自動(dòng)增長(zhǎng)需要借助序列(Sequence)完成,在后面章節(jié)中講解。2 Oracle 中的外鍵約束定義。4. 數(shù)據(jù)語(yǔ)言(DML)數(shù)據(jù)語(yǔ)言(DML)用于對(duì)數(shù)據(jù)庫(kù)的表中數(shù)據(jù)進(jìn)行添加、修改、刪除和 SELECTForUPDATE(后面專門學(xué)習(xí)該紹在 Oracle 中的操作。)操作。
39、對(duì)比一期學(xué)習(xí)過的 SQL Server 操作,接下來一一介²簡(jiǎn)單數(shù)據(jù)是用SELECT 命令從數(shù)據(jù)庫(kù)的表中提取信息。SELECT 語(yǔ)句的語(yǔ)法是:語(yǔ)法結(jié)構(gòu):簡(jiǎn)單SELECT *|列名|表達(dá)式 FROM 表名 WHERE 條件 ORDER BY 列名語(yǔ)法:.5.*表示表中的所有列。列名可以選擇若干個(gè)表中的列名,各個(gè)列表中間用逗號(hào)分隔。表達(dá)式可以是列名、函數(shù)、常數(shù)等組成的表達(dá)式。WHERE 子句是的條件。的結(jié)果中排序,默認(rèn)是升序。ORDER BY要求在圖 2 數(shù)據(jù)Oracle 中可以把的結(jié)果根據(jù)結(jié)果集中的表結(jié)構(gòu)和數(shù)據(jù)形成一張新表。語(yǔ)法結(jié)構(gòu):根據(jù)結(jié)果集創(chuàng)建表CREATE TABL
40、E 表名 AS SELECT 語(yǔ)句代碼演示:根據(jù)結(jié)果集創(chuàng)建表SQL> CREATE TABLE INFOS1 AS SELECT * FROM INFOS;TABLE CREATED使用上面命令創(chuàng)建的新表中,不存在任何約束,并且把的數(shù)據(jù)一起到新表中。從出任何數(shù)如果只表結(jié)構(gòu),只需使的條件不成立(比如 where 1=2),就據(jù),從而一個(gè)表結(jié)構(gòu)。代碼演示:表結(jié)構(gòu)SQL> CREATE TABLE INFOS2 AS SELECT * FROM INFOS WHERE 1=2;TABLE CREATED²數(shù)據(jù)用INSERT 命令完成對(duì)數(shù)據(jù)的。語(yǔ)法結(jié)構(gòu):根據(jù)結(jié)果集創(chuàng)建表INSER
41、T INTO 表名(列名 1,列名 2) VALUES (值 1,值 2)語(yǔ)法:1. 列名可以省略。當(dāng)省略列名時(shí),默認(rèn)是表中的所有列名,列名順序?yàn)楸矶x中列的先后順序。2. 值的數(shù)量和順序要與列名的數(shù)量和順序一致。值的類型與列名的類型一致。代碼演示:向 INFOS 表和 SCORES 表中數(shù)據(jù)SQL> INSERT INTO INFOS VALUES ( 23456's100102', '林沖', '男', 22, 2,TO_DATE('2009-8-9 06:30:10',' YYYY-MM-DD HH24:MI:
42、SS '), '西安', '1001')/1 row insertedSQL> INSERT INTO INFOS VALUES ('s100104','阮小二','男',26,3,SYSDATE,default,'1001'); 1 row inserted SQL>COMMIT; 代碼:表名后面缺省了列名,默認(rèn)是表Infos 中的所有列名,values 中的值要與表中列一一對(duì)應(yīng),包括順序和數(shù)據(jù)類型的對(duì)應(yīng)。在 SQL*Plus 中一條語(yǔ)句可以寫在多行,那么從第二行開始,sqlp
43、lus 會(huì)為每一行前面給出行號(hào)。1在 Oracle期是的,不同的區(qū)域安裝的數(shù)據(jù)庫(kù),默認(rèn)的日期格式不同,2因此為了程序便于移植,日期的輸入要使用 TO_DATE 函數(shù)對(duì)日期格式化后輸入, 采用格式化字符串對(duì)日期進(jìn)行格式化時(shí),格式化字符串中字符不區(qū)分大小寫,常見的格式化字符如下:.5.6.yyyy 表示四位年份mm 表示兩位月份,比如 3 月表示為 03 dd 表示兩位日期hh24 表示小時(shí)從 0-23,hh12 也表示小時(shí)從 0-11。mi 表示分鐘ss 表示秒在遇到存在默認(rèn)值的列時(shí),可以使用 default 值代替。commit 是把用戶操作(添加、刪除、修改操作)提交,只有提交
44、操作后,數(shù)據(jù)才34能真正更新到表中,否則其他用戶無法到當(dāng)前用戶操作的結(jié)果。在 Oracle 中,一個(gè)INSERT 命令可以把一個(gè)結(jié)果集句是:INSERT INTO 表 SELECT 子句,如下示例:到一張表中。使用的語(yǔ)代碼演示:INSERT 向表中一個(gè)結(jié)果集SQL> INSERT INTO INFOS2 SELECT * FROM INFOS;5 rows inserted在這種語(yǔ)法下,要求結(jié)果集中每一列的數(shù)據(jù)類型必須與表中的每一列的數(shù)據(jù)類型一致,結(jié)果集中的列的數(shù)量與表中的列的數(shù)量一致。比如表 INFOS2,該表的結(jié)構(gòu)與 INFO 表一樣,那么可以把INFO 表中的所有到 INFOS2
45、表中。Oracle 的簡(jiǎn)單和 SQL Server 一樣都可以在列中使用常量,如圖:圖 3 Select 中的常量可以使用剛才的做法,把該結(jié)果集中的數(shù)據(jù)到表 INFOS 中。代碼演示:INSERT 向表中一個(gè)常量結(jié)果集SQL> INSERT INTO INFOSSELECT 's100106','盧俊義','男',23,5,TO_DATE('2009-8-9 08:00:10','YYYY-MM-DD HH24:MI:SS'), '青龍寺','1001'FROM DUAL;1
46、rows inserted SQL>COMMIT;²更新數(shù)據(jù)Oracle 在表中更新數(shù)據(jù)的語(yǔ)法是:語(yǔ)法結(jié)構(gòu):UPDATE 操作UPDATE 表名 SET 列名 1=值,列名 2=值 WHERE 條件代碼演示:UPDATE 操作SQL> UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山東萊蕪' WHERE STUNAME='阮小二'1 rows updatedSQL> commit;²刪除數(shù)據(jù)Oracle 在表中刪除數(shù)據(jù)的語(yǔ)法是:語(yǔ)法結(jié)構(gòu):DELETE 操作DELETE
47、 FROM 表名 WHERE 條件代碼演示:DELETE 操作SQL> DELETE FROM INFOS WHERE STUID='s100103' 1 ROW DELETEDSQL> COMMIT;²TRUNCATE在數(shù)據(jù)庫(kù)操作中, TRUNCATE 命令(是一個(gè) DDL 命令)可以把表中的所有數(shù)據(jù)一次性全部刪除,語(yǔ)法是:語(yǔ)法結(jié)構(gòu):TRUNCATETRUNCATE TABLE 表名TRUNCATE 和 DELETE 都能把表中的數(shù)據(jù)全部刪除,他們的區(qū)別是:1.TRUNCATE 是 DDL 命令,刪除的數(shù)據(jù)不能恢復(fù);DELETE 命令是 DML 命令,刪
48、除后的數(shù)據(jù)可以通過日志文件恢復(fù)。如果一個(gè)表中數(shù)據(jù)很多,TRUNCATE 相對(duì) DELETE 速度快。2.由于 TRUNCATE 命令比較,因此在實(shí)際開發(fā)中,TRUNCATE 命令慎用。Oracle 默認(rèn)安裝中,已經(jīng)創(chuàng)建了一個(gè) SCOTT 用戶,默認(rèn) 是:tiger,該用戶下有四張表分別是:雇員表(EMP),部門表(DEPT),工資登記表和獎(jiǎng)金表,請(qǐng)參考本章后面的附表。接下來很多操作都是在該用戶下完成的。5. 操作符Oracle 開發(fā)中,依然存在算術(shù)運(yùn)算,關(guān)系運(yùn)算,和邏輯運(yùn)算。² 算術(shù)運(yùn)算Oracle 中的算術(shù)運(yùn)算符,沒有 C#中的算術(shù)運(yùn)算符豐富,只有+、-、*、/四個(gè),其中除號(hào)(/)
49、的結(jié)果是浮點(diǎn)數(shù)。求余運(yùn)算只能借助函數(shù):MOD(x,y):返回 x 除以 y 的余數(shù)。案例 3:每名員工年終獎(jiǎng)是 2000 元,請(qǐng)顯示基本工資在 2000 元以上的員工的月工資, 年總工資。該案例的表請(qǐng)參見本章練習(xí)的附表 1、附表 2、附表 3,這三張表是 ORACLE 10g 自帶的。代碼演示:中的算術(shù)運(yùn)算SQL> SELECT ENAME,SAL,(SAL*12) FROM EMP WHERE SAL>2000;)ENAMESAL(SAL*12JONES297537700BLAKE285036200CLARK245031400SCOTT300038000KING500062000
50、FORD3000380006 rows selected² 關(guān)系運(yùn)算和邏輯運(yùn)算Oracle 中 Where 子句經(jīng)中經(jīng)常見到關(guān)系運(yùn)算和邏輯運(yùn)算,常見的關(guān)系運(yùn)算有:表3 Oracle 的關(guān)系運(yùn)算符運(yùn)算符說明運(yùn)算符說明=等于>大于<>或者!=不等于<=小于或者等于<小于>=大于或者等于邏輯運(yùn)算符有三個(gè):AND、OR、NOT關(guān)系運(yùn)算和邏輯運(yùn)算與前面 SQL Server 學(xué)習(xí)過的一致。² 字符串連接操作符(|)在 Oracle 中,字符串的連接元以上的姓名以及工作。豎線(|)表示。比如,在 EMP 表中,工資在 2000代碼演示:字符串連接SQ
51、L> SELECT (ENAME | 'is a ' | JOB) AS "Employee Details"2 FROM EMP3 WHERE SAL>2000; Employee DetailsJONESis a MANAGER BLAKEis a MANAGER CLARKis a MANAGER SCOTTis a ANALYST KINGis a PRESIDENT FORDis a ANALYST6 rows selected代碼:1 Oracle 中字符串可以用單引號(hào),也可以引號(hào),在別名中存在空格時(shí),必須引號(hào)。在表名、列名時(shí)引號(hào)。6
52、. 高級(jí)在第一期學(xué)習(xí)過SQL 的簡(jiǎn)單和連接?,F(xiàn)在學(xué)習(xí)一些新的 SQL 操作符。² 消除重復(fù)行在 Oracle中結(jié)果中,可能出現(xiàn)若干行相同的情況,那么可以使用 DISTINCT 消除重復(fù)行。具體的用法如示例:代碼演示:DISTINCT 消除重復(fù)行SQL> SELECT DISTINCT DEPTNO FROM EMP;DEPTNO302010² NULL 操作如果某條中有缺少的數(shù)據(jù)值,就是空值(NULL 值)??罩挡坏扔?0 或者空格,空值是指未賦值、未知或不可用的值。任何數(shù)據(jù)類型的列都可以包括 NULL 值,除非該列被定義為非空或者主鍵。代碼演示:EMP 中的 NUL
53、L 值SQL> SELECT ENAME,JOB,SAL,COMM FROM EMP WHERE SAL<2000;ENAMEJOBSALCOMMSMITHCLERK800ALLENSALESMAN1600300WARDSALESMAN1250500MARTINSALESMAN12501400TURNERSALESMAN15000ADAMSCLERK1100JAMESCLERK9507 rows selected在條件中 NULL 值用 IS NULL 作條件,非 NULL 值用 NOT IS NULL 做條件。案例 4:EMP 表中沒有發(fā)獎(jiǎng)金的員工。代碼演示:NULL 值SQL&
54、gt; SELECT ENAME,JOB,SAL,COMM FROM EMP2WHERE SAL<2000 AND COMM IS NULL;ENAMEJOBSALCOMMSMITHCLERK800ADAMSCLERK1100JAMESCLERK950MILLERCLERK1300² IN 操作在 Where 子句中可以使用 IN 操作符來其列值在指定的列表中的行。比如:出工作職責(zé)是SALESMAN、PRESIDENT 或者 ANALYST 的員工。條件有兩種表示方法:1. WHERE job = 'SALESMAN ' OR job = 'PRESIDENT ' OR job = 'ANALYST '2. WHERE job IN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代熱風(fēng)系統(tǒng)在醫(yī)療設(shè)備中的應(yīng)用案例
- 現(xiàn)代口腔門診的通風(fēng)與空氣質(zhì)量設(shè)計(jì)
- 烘焙坊經(jīng)營(yíng)中的供應(yīng)鏈優(yōu)化
- 現(xiàn)代科技助力教育普及與均衡發(fā)展
- 環(huán)境友好的商業(yè)產(chǎn)品設(shè)計(jì)案例分享
- 10《雨和雪》 說課稿-2024-2025學(xué)年科學(xué)六年級(jí)上冊(cè)人教鄂教版
- 2023三年級(jí)數(shù)學(xué)上冊(cè) 五 解決問題的策略練習(xí)十(2)說課稿 蘇教版
- 2024-2025學(xué)年高中歷史 專題二 近代中國(guó)資本主義的曲折發(fā)展 2.2 民國(guó)時(shí)期民族工業(yè)的曲折發(fā)展說課稿1 人民版必修2
- 《11 剪紙花邊》 說課稿-2024-2025學(xué)年科學(xué)一年級(jí)上冊(cè)湘科版
- 12在天晴了的時(shí)候(說課稿)-2024-2025學(xué)年語(yǔ)文四年級(jí)下冊(cè)統(tǒng)編版
- 近五年重慶中考物理試題及答案2023
- 2023年新高考物理廣東卷試題真題及答案詳解(精校版)
- 全科醫(yī)醫(yī)師的臨床診療思維
- 旋挖鉆機(jī)入場(chǎng)安全教育記錄
- 第二章直線和圓的方程(單元測(cè)試卷)(原卷版)
- GB/T 16818-2008中、短程光電測(cè)距規(guī)范
- (七圣)七圣娘娘簽詩(shī)
- 內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點(diǎn)及健康教育
- 新媒體文案創(chuàng)作與傳播精品課件(完整版)
- 2022年全省百萬(wàn)城鄉(xiāng)建設(shè)職工職業(yè)技能競(jìng)賽暨“華衍杯”江蘇省第三屆供水安全知識(shí)競(jìng)賽題庫(kù)
- 廣西北海LNG儲(chǔ)罐保冷施工方案
評(píng)論
0/150
提交評(píng)論