基本知識與SQLPLUS環(huán)境_第1頁
基本知識與SQLPLUS環(huán)境_第2頁
基本知識與SQLPLUS環(huán)境_第3頁
基本知識與SQLPLUS環(huán)境_第4頁
基本知識與SQLPLUS環(huán)境_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第142頁第一章Oracle基本知識與SQL*PLUS環(huán)境一.上機目的熟悉Oracle的基本知識。熟悉Oraaclee的命令令操作環(huán)環(huán)境SQQL*PPLUSS。熟悉并掌握握一些SSQL**PLUUS命令令。二.預備知知識1.Oraaclee數(shù)據(jù)庫庫管理系系統(tǒng)的簡簡介1979年年,硅谷谷的一個個小公司司推出了了Oraaclee,這是是第一個個與數(shù)據(jù)據(jù)訪問語語言SQQL結(jié)合合的關(guān)系系數(shù)據(jù)庫庫。今天天,Orraclle公司司已是世世界上數(shù)數(shù)據(jù)庫管管理系統(tǒng)統(tǒng)及相關(guān)關(guān)產(chǎn)品的的最大供供應商。發(fā)發(fā)布于119855年的OOraccle第第5版,是是第一個個真正的的客戶//服務(wù)器器數(shù)據(jù)庫庫系統(tǒng)。Oracle8以及Oracle8i是Oracle公司的最新產(chǎn)品。2.Oraaclee8服務(wù)務(wù)器Oraclle8服服務(wù)器是是一個精精致的信信息管理理環(huán)境。它它是一個個大量數(shù)數(shù)據(jù)的儲儲藏所,并并給用戶戶提供對對這些數(shù)數(shù)據(jù)的快快速訪問問。Orraclle8服服務(wù)器允允許應用用系統(tǒng)之之間共享享數(shù)據(jù)。信信息存放放在一個個地方并并由許多多應用系系統(tǒng)來使使用。OOraccle88服務(wù)器器可運行行在Suun系列列以及WWinddowssNT上。Orraclle8服服務(wù)器運運行在很很多不同同的計算算機上,支支持下列列配置::基于主機的的配置用戶直直接連到到存放數(shù)數(shù)據(jù)庫的的同一計計算機上上??蛻魴C/服服務(wù)器結(jié)結(jié)構(gòu)用用戶通過過網(wǎng)絡(luò)從從他們的的個人計計算機(客客戶機)上上訪問數(shù)數(shù)據(jù)庫,數(shù)數(shù)據(jù)庫駐駐留在一一個分離離的計算算機(服服務(wù)器)上上。分布式處理理用戶戶訪問存存放在不不止一臺臺計算機機上的數(shù)數(shù)據(jù)庫。數(shù)數(shù)據(jù)庫分分散在不不止一臺臺機器上上,用戶戶并不需需要了解解他們存存放的數(shù)數(shù)據(jù)的實實際存放放位置。Web計算算能從從基于IInteerneet的應應用程序序訪問數(shù)數(shù)據(jù)。PersoonallOrraclle從19955年處開開始,OOraccle推推出了在在Doss和MiccrossofttWiindoows環(huán)環(huán)境下的的個人計計算機產(chǎn)產(chǎn)品。運運行PeersoonallOrraclle需要要如下的的配置::386以上上的中央央處理單單元(CCPU),推推薦4886或奔奔騰。最小60MMB磁盤盤空間。處理器速度度不低于于40MMHZ,666MHHZ以上上更好。最少16MMB的擴擴充內(nèi)存存。MicroosofftWWinddowss95或或者NTT.本書主要以以PerrsonnalOraaclee為主進進行說明明。CDE工具OracleReportsOracleGraphicsOracleFormsOracleBookOracleServerSQLCDE工具OracleReportsOracleGraphicsOracleFormsOracleBookOracleServerSQL和PL/SQLOracleCardOracleCaseSQL*PLUSPro*OracleTextRetrieval其它產(chǎn)品圖1-1Oracle產(chǎn)品5.SQLL,SQQL*PPluss和PL//SQLLSQL是是一種能能夠訪問問關(guān)系數(shù)數(shù)據(jù)庫(包包括Orraclle數(shù)據(jù)據(jù)庫)的的語言。它它能夠用用在每一一個Orraclle工具具中。SQL*PPluss是一一個SQQL和PPL/SSQL都都能用的的Oraaclee產(chǎn)品,并并且也有有自己的的命令語語言。PL/SQQL是為為了編寫寫應用程程序和操操作數(shù)據(jù)據(jù)的Orraclle過程程化語言言,包含含著SQQL命令令的子集集,它適適用于每每個CDDE產(chǎn)品品。6.Oraaclee數(shù)據(jù)庫庫系統(tǒng)的的體系結(jié)結(jié)構(gòu)Oraclle數(shù)據(jù)據(jù)庫系統(tǒng)統(tǒng)是具有有管理OOraccle數(shù)數(shù)據(jù)庫功功能的計計算機軟軟件系統(tǒng)統(tǒng)。每一一個運行行的Orraclle數(shù)據(jù)據(jù)庫與一一個Orraclle實例例(innstaancee)相聯(lián)聯(lián)系。一一個Orraclle實例例是存取取和控制制一數(shù)據(jù)據(jù)庫的軟軟件機制制。每一一次在數(shù)數(shù)據(jù)庫服服務(wù)器上上啟動一一數(shù)據(jù)庫庫時,稱稱為系統(tǒng)統(tǒng)全局區(qū)區(qū)(syysteemgglobbalareea)的的一內(nèi)存存區(qū)(簡簡稱SGGA)被被分配,有有一個或或多個OOraccle進進程被起起動。該該SGAA和Orraclle進程程的結(jié)合合稱為一一個Orraclle數(shù)據(jù)據(jù)庫實例例。一個個實例的的SGAA和進程程為管理理數(shù)據(jù)庫庫數(shù)據(jù)、為為該數(shù)據(jù)據(jù)庫一個個或多個個用戶服服務(wù)而工工作。在Oraccle系系統(tǒng)中,首首先是實實例啟動動,然后后由實例例裝配(mount)一個數(shù)據(jù)庫。進程結(jié)構(gòu)進程(prroceess)是是操作系系統(tǒng)中的的一種機機制,它它可執(zhí)行行一系列列的操作作步驟。在在有些操操作系統(tǒng)統(tǒng)中使用用作業(yè)(JJOB)或或任務(wù)(TTASKK)的術(shù)術(shù)語。一一個進程程通常有有它自己己的專用用存儲區(qū)區(qū)。Orraclle進程程的體系系結(jié)構(gòu)設(shè)設(shè)計使性性能最大大。Oraclle實例例有兩種種類:單單進程實實例和多多進程實實例。SGAOracleServer數(shù)據(jù)庫應用圖1-2單進程Oracle實例單進程Orraclle(又又稱單用用戶Orraclle)是是一個數(shù)數(shù)據(jù)庫系系統(tǒng),一一個進程程執(zhí)行全全部Orraclle代碼碼。由于于Oraaclee部分和和客戶應應用程序序不能分分別以進進程執(zhí)行行,所以以O(shè)raaclee的代碼碼和用戶戶數(shù)據(jù)庫庫應用是是單個進進程執(zhí)行行,其SGAOracleServer數(shù)據(jù)庫應用圖1-2單進程Oracle實例在單進程環(huán)環(huán)境下的的Oraaclee實例,僅僅允許一一個用戶戶存取。例例如在MMS-DDOS上上運行OOraccle。用戶進程用戶進程用戶進程用戶進程SGARECOPMONSMONDBWRLGWRARCH…圖1-3多進程Oracle實例多進程Orraclle實例例(又稱稱多用戶戶Oraaclee)使用用多個進進程來執(zhí)執(zhí)行Orraclle的不不同部分分,對用戶進程用戶進程用戶進程用戶進程SGARECOPMONSMONDBWRLGWRARCH…圖1-3多進程Oracle實例在多進程系系統(tǒng)中,進進程分為為兩類::用戶進進程和OOraccle進進程。當當一用戶戶運行一一應用程程序,如如Proo*c程程序或一一個Orraclle工具具(如SSQL**Pluus),為為用戶運運行的應應用建立立一個用用戶進進程。OOraccle進進程又分分為兩類類:服務(wù)務(wù)器進程程(seerveerpproccesss)和后后臺進程程(baackggrouundproocesss),服服務(wù)器進進程用于于處理連連接到該該實例的的用戶進進程的請請求。當當應用和和Oraaclee是在同同一臺機機器上運運行,而而不再通通過網(wǎng)絡(luò)絡(luò),一般般將用戶戶進程和和它相應應的服務(wù)務(wù)器進程程組合成成單個進進程,可可降低系系統(tǒng)開銷銷。然而而,當應應用和OOraccle運運行在不不同的機機器上時時,用戶戶進程經(jīng)經(jīng)一個分分離服務(wù)務(wù)器進程程Oraaclee通信。它它執(zhí)行下下列任務(wù)務(wù):對應用所發(fā)發(fā)出的SSQL語語句進行行語法分分析和執(zhí)執(zhí)行。從磁盤(數(shù)數(shù)據(jù)文件件中)讀讀入必要要的數(shù)據(jù)據(jù)塊到SSGA的的共享數(shù)數(shù)據(jù)庫緩緩沖區(qū)(該該塊不在在緩沖區(qū)區(qū)時)。將結(jié)果返回回給應用用程序處處理。系統(tǒng)為了使使性能最最好和協(xié)協(xié)調(diào)多個個用戶,在在多進程程系統(tǒng)中中使用一一些附加加進程,稱稱為后臺臺進程。在在許多操操作系統(tǒng)統(tǒng)中,后后臺進程程是在實實例啟動動時自動動地建立立。一個個Oraaclee實例可可以有許許多后臺臺進程,但但它們不不是一直直存在。后后臺進程程的名字字為:DBWR數(shù)數(shù)據(jù)庫寫寫入程序序LGWR日志寫寫入程序序CKPT檢查查點SMON系統(tǒng)統(tǒng)監(jiān)控PMON進程監(jiān)監(jiān)控ARCH歸檔RECO恢復LCKn封鎖Dnnn調(diào)度度進程Snnn服務(wù)務(wù)器內(nèi)存結(jié)構(gòu)Oraclle在內(nèi)內(nèi)存存儲儲下列信信息:執(zhí)行的程序序代碼。連接的會話話信息(包包括當前前不活動動的)。程序執(zhí)行期期間所需需要數(shù)據(jù)據(jù)(如查查詢的當當前狀態(tài)態(tài))。Oraclle進程程間通信信和共享享的信息息(如封封鎖信息息)。存儲在外存存儲上的的緩沖信信息。Oraclle具有有下列基基本的內(nèi)內(nèi)存結(jié)構(gòu)構(gòu):軟件代碼區(qū)區(qū)系統(tǒng)全局區(qū)區(qū)(SGGA),包包括數(shù)據(jù)據(jù)庫緩沖沖存儲區(qū)區(qū)、日志志緩沖區(qū)區(qū)和共享享池程序全局區(qū)區(qū)(PGGA),包包括棧區(qū)區(qū)和數(shù)據(jù)據(jù)區(qū)。排序區(qū)(ssorttarrea)。7.SQLL*Pllus命命令SQL*PPluss有許多多命令,表表1-11只是列列舉了一一部分常常用的供供讀者參參考。表1-1常用SSQL**Pluus命令令SQL*PPluss命令縮寫意義APPENNDttexttAtexxt把字符串增增加到當當前行的的末尾CHANGGE/oold//neww/C/oldd/neew/把當前行的的舊字符符串替換換成新字字符串CHANGGE//texxt/C/texxt/把當前行中中字符串串刪除CLEARRBUUFFEERCLBUUFF從SQL緩緩沖區(qū)中中刪除所所有行DEL刪除當前行行INPUTTI插入許多行行INPUTTtexxtItexxt插入一個包包含teext字字符串的的行LISTL顯示SQLL緩沖區(qū)區(qū)的所有有行LISTnLn顯示SQLL緩沖區(qū)區(qū)中的一一行到nn行LISTmnnLmnnSQL緩沖沖區(qū)中的的從第mm行顯示示到第nn行RUNR顯示并運行行在緩沖沖區(qū)中的的當前SSQL命命令SAVEfillenaame把SQL緩緩沖區(qū)中中的內(nèi)容容保存到到以fiilennamee為名字字的文件件中,默默認路徑徑為orrawiin\bbinGETffileenamme把以fillenaame為為名字的的文件內(nèi)內(nèi)容調(diào)入入SQLL緩沖區(qū)區(qū)中STARTTfiilennamee@fillenaame運行以前保保存的命命令文件件EDfiilennamee用默認的編編輯器編編輯保存存的文件件內(nèi)容EXIT退出SQLL*PllusRUNFOORMfillenaame從SQL**Pluus中運運行一個個OraacleeFoormss應用程程序SPOOLLfiilennamee寫所有的后后面的命命令或者者輸出到到一個已已經(jīng)命名名的文件件中。假假脫機輸輸入輸出出文件的的后綴為為.LIISSPO[OOL]OFFF|OUUTOFF關(guān)關(guān)閉假脫脫機輸入入輸出文文件;OOUT改改變假脫脫機輸入入輸出,送送文件到到打印機機上DESCRRIBEEtaableenammeDESCtabblennamee顯示任何數(shù)數(shù)據(jù)庫表表的數(shù)據(jù)據(jù)結(jié)構(gòu)HELP擊活Oraaclee內(nèi)部的的幫助部部件HOSTcommmannd在SQL**Pluus中擊擊活一個個操作系系統(tǒng)命令令CONNEECTuseeridd/paasswworddCONNuseeridd/paasswwordd在當前的登登錄下,擊擊活其它它的Orraclle用戶戶PROMPPTttextt當運行一個個命令文文件時,顯顯示文本本三.上機內(nèi)內(nèi)容SQL*PPluss的啟動動當讀者登錄錄到操作作系統(tǒng)后后,你有有三種方方法啟動動SQLL*Pllus。SQLPLLUS讀者將看到到如下的的信息::SQL*PPluss:VVerssionn3..1.11PrroduuctiiononMonnOcct4419993Copyrrighht((C)19992,OraacleeCoorpoorattionn,CCaliiforrniaa,USSA.Allrrighhtsresservved..EnterrUssernnamee:輸入你的用用戶名字字并按回回車。SQL*PPluss將提示示:EnnterrPaasswwordd:輸入你的密密碼并按按回車。那么,讀者者將看到到SQLL*Pllus的的提示符符:SQL>例如:SQLPLLUSSQL*PPluss:VVerssionn3..1.11PrroduuctiiononMonnOcct4419993Copyrrighht((C)19992,OraacleeCoorpoorattionn,CCaliiforrniaa,USSA.Allrrighhtsresservved..EnterrUssernnamee:sccotttEnterrPaasswwordd:tiigerrSQL>SQLPLLUSUseernaame再提示你輸輸入密碼碼。例如:SQLPLLUSscoottEnterrPaasswwordd:tiigerrSQL*PPluss:VVerssionn3..1.11PrroduuctiiononMonnOcct4419993Copyrrighht((C)19992,OraacleeCoorpoorattionn,CCaliiforrniaa,USSA.Allrrighhtsresservved..SQL>SQLPLLUSuseernaame//passswoord例如:SQLPLLUSscoott//tiggerSQL*PPluss:VVerssionn3..1.11PrroduuctiiononMonnOcct4419993Copyrrighht((C)19992,OraacleeCoorpoorattionn,CCaliiforrniaa,USSA.Allrrighhtsresservved..SQL>退出SQLL*PllusSQL>EEXITTSQL*PPluss顯示OOraccle版版本之后后顯示操操作系統(tǒng)統(tǒng)提示符符。SQL命令令SQL命令令包括數(shù)數(shù)據(jù)定義義語言(如如Creaate、Alter等)和數(shù)據(jù)操作語言(SelectInsertUpdateDelete等),這些都可在SQL*Plus中使用。如:SQL>SSELEECTEMPPNO,,ENNAMEE,JJOB,,SAAL2 FROOMEEMPWHEERESALL<25000;SQL*PPluss命令列出緩沖區(qū)區(qū)的內(nèi)容容:SQL>LLISTTSQL*PPluss顯示當當前緩沖沖區(qū)中的的命令::1 SELLECTTEMMPNOO,EENAMME,JOBB,SSAL2 FROOMEEMPWHEERESALL<25000;編輯當前行行如果上面的的例子錯錯誤的輸輸入為::SQL>SSELEECTEPNNO,ENAAME,,JOOB,SALL2 FROOMEEMPWHEERESALL<25000;在屏幕上顯顯示:SELECCTEEPNOO,EENAMME,JOBB,SSAL*ERRORRattliine1:ORA-009044:innvallidcollumnnnaame分析錯誤可可以發(fā)現(xiàn)現(xiàn)EMPPNO錯錯為EPPNO。則用CHAANGEE命令修修改編輯輯當前行行。如:SQL>CCHANNE//EPNNO/EEMPNNO修改的行在在屏幕上上顯示::1* SEELECCTEEMPNNO,ENAAME,,JOOB,SALL再用RUNN命令運運行當前前命令。SQL>RRUNSQL*PPLUSS列出其其命令然然后運行行它。1 SELLECTTEMMPNOO,EENAMME,JOBB,SSAL2 FROOMEEMPWHEERESALL<25000;增加一行在當前行之之后插入入一新行行,使用用INPPUT命命令。例例如對上上面例子子增加第第3行到到該SQQL命令令中。形形式如下下:SQL>IINPUUT3接著可進入入新行,然然后按EENTEER鍵,SSQL**PLUUS再次次提示新新行:3 ORDDERBYSALL4按ENTEER鍵,表表示不進進入任何何行,然然后用RRUN檢檢驗和重重新運行行查詢。在一行上添添加一原原文用APPEEND命命令,將將一原文文加到緩緩沖區(qū)中中當前行行的末端端:SQL>LLISTT3* ORRDERRBYYSAALSQL>AAPPEENDDESSC3* ORRDERRBYYSAALDDESCC使用RUNN檢驗和和重新運運行查詢詢。刪除一行用LISTT命令列列出要刪刪除的行行。用DEL命命令刪除除。SQL>LLISTT3* ORRDERRBYYSAALDDESCCSQL>DDEL用系統(tǒng)編輯輯程序編編輯命令令在SQL**PLUUS中運運行操作作系統(tǒng)缺缺省的文文本編輯輯程序(EEDITT),命命令形式式為:SQL>EEDITTEDIT將將緩沖區(qū)區(qū)中的內(nèi)內(nèi)容裝入入系統(tǒng)缺缺省的文文本編輯輯器,然然后用文文本編輯輯器的命命令編輯輯文本。完完成后保保存編輯輯的文本本,然后后退出。該該文本保保存到當當前的緩緩沖區(qū)。保存SAVVE命令令SQL>SSAVEE文件件名例如:SQQL>LLISTT1 SELLECTTEMMPNOO,EENAMME,JOBB,SSAL2 FROOMEEMPWHEERESALL<25000;然后用SQQVE保保存到EEMPIINFOO文件中中:SQL>SSAVEEemmpinnfoCreattedfilleeempiinfoo運行命令文文件可用命令SSTARRT文文件名或或者@文件件名的命命令格式式。如上例:SQL>SSTARRTEEMPIINFOO或SQL>>@EMMPINNFO清緩沖區(qū)SQL>CCLEAARBBUFFFERDESCRRIBEE列出表表的結(jié)構(gòu)構(gòu)如:SQL>DDESCCEMMPNammeNull??TypeEMPNOONOTNNULLLNUMBEER(44)ENAMEEVARCHHAR22(100)JOBVARCHHAR22(100)MGRNUMBEER(44)HIREDDATEEDATESALNUMBEER(77,2))COMMNUMBEER(77,2))DEPTNNONOTNNULLLNUMBEER(22)PL/SQQL命令令SQL>DDecllareeBeginnSELECCT**FRROMEMPP;EXCEPPTIOONWHENNO__DATTA_FFOUNNDTHEENRAASIEE_APPPLIICATTIONN_ERRRORR(-1122001,’’Nodattaffounnd’))End;查詢結(jié)果將將顯示出出來。四.上機作作業(yè)練習SQLL命令::SELECCT*FROOMEMPP;。用LISTT顯示緩緩沖區(qū)內(nèi)內(nèi)容。用CHANNGE命命令修改改當前行行。用APPEEND增增加一部部分命令令。用EDITT編輯緩緩沖區(qū)內(nèi)內(nèi)容。用SAVEE命令保保存緩沖沖區(qū)內(nèi)容容到EMMPFIILE中中。用STARRT命令令運行EEMPFFILEE文件。清除緩沖區(qū)區(qū)。第二章數(shù)數(shù)據(jù)表的的創(chuàng)建一.上機目目的了解并掌握握Oraaclee中表結(jié)結(jié)構(gòu)的定定義。了解并掌握握Oraaclee中的用用Creeatee命令定定義表的的方法,以以及表的的完整性性定義。了解并掌握握Oraaclee中的用用Altter命命令和Droop命令令對表的的修改和和刪除。二.預備知知識DDL是SSQL命命令的子子集,用用來創(chuàng)建建、修改改、刪除除Oraaclee數(shù)據(jù)庫庫結(jié)構(gòu)。這這些命令令能立即即影響數(shù)數(shù)據(jù)庫和和數(shù)據(jù)字字典字段段信息。表名命名規(guī)規(guī)則所用的表名名必須滿滿足下面面的條件件:名字必須以以A-ZZ或a-zz的字母母開始;;名字可以包包括字母母、數(shù)字字和特殊殊字母(_)。字符$和#也是合法的,但是這種用法不提倡;名字大小寫寫是一樣樣的;例例如EMMP、empp和eMpp是表示示同一個個表;名字最長不不超過330個字字符;表名不能和和其它的的對象重重名;表名不能是是SQLL保留字字。表2-1表名命命名舉例例名字合法EMP855YES85EMPPNO(開始始不是字字母)FIXEDD_ASSSETTSYESFIXEDDASSSETTSNO(包含含空格)UPDATTENO(SQQL保留留字)字段類型表2-2字段類類型數(shù)據(jù)類型描述VARCHHAR22(w)變長字符長長度為ww。最長長為20000個個字符。CHAR(w)定長字符長長度為ww。默認認為1個個字符;;最長為為2555個字符符NUMBEER38位有效效數(shù)字的的浮點數(shù)數(shù)NUMBEER(ww)W位精確度度的整數(shù)數(shù),范圍圍從1至至38NUMBEER(ww,s)W是精度,或或總的數(shù)數(shù)字書,范范圍從11至388。S是比例例,或是是小數(shù)點點右邊的的數(shù)字位位。比例例的范圍圍從-884至1127DATE日期值,范范圍從公公元前1147112年11月到公公元31147112年112月LONG變長字符串串,其最最大長度度為2GG(或2231-11個字節(jié)節(jié))RAW和和LONNGRRAW面向字節(jié)數(shù)數(shù)據(jù),可可存儲字字符串、浮浮點數(shù),二二進制數(shù)數(shù)據(jù)等Creatte命令令1)、CRREATTETTABLLEttablle_nnamee(ccoluumn__nammettypee(siize)),ccoluumn__nammettypee(siize)),……);例如:CREATTETTABLLEDDEPTT(DEPTTNONUUMBEER(22),DNAMEEVARRCHAAR2((12)),LOCVAARCHHAR22(122));;2)、CRREATTETTABLLEtabble__namme[[(coolummn_nnamee,…))]AASSSELEECTstaatemmentt;例如:CREATTETTABLLEDDEPTTNO110(NNAMEE,LOOCATTIONN)ASSEELECCTDDNAMME,LLOCFRROMDEEPTWHEREEDEEPTNNO==100;4.完整性性約束Oraclle允許許用戶為為表和列列定義完完整性約約束來增增強一定定的規(guī)則則??煞譃椋罕肀砑s束和和字段約約束5.約束類類型1)、NOOTNNULLL約束NOTNNULLL約束保保證字段段值不能能為NUULL。沒沒有NOOTNNULLL約束的的字段,值值可以為為NULLL。2)、UNNIQUUE約束束指定一個字字段或者者字段的的集合為為唯一鍵鍵。在表表中沒有有兩行具具有相同同的值。如如果唯一一鍵是基基于單條條記錄的的,NUULL是是允許的的。表約束命令令格式::,[CONNSTRRAINNTcconsstraaintt_naame]]UUNIQQUE(Coolummn,Collumnn,……)字段約束命命令格式式:[CONSSTRAAINTTcoonsttraiint__namme]UNNIQUUE例如:CREATTETTABLLEDDEPTT(DEPTTNONUMMBERR,DDNAMMEVVARCCHARR2(99),LOCVVARCCHARR2(110),CONSTTRAIINTUNQQ_DEPPT_LOCCUNNIQUUE(DDNAMME,LLOC));;UNQ_DDEPTT_LOOC是一一個表約約束。3)、主鍵鍵約束(PrimaryKeyConstraint)主鍵約束強強制字段段和字段段集合的的唯一性性,并且且用一個個唯一索索引來管管理它。每每個表中中只能用用一個主主鍵,這這樣可以以通過主主鍵來標標識表中中的每條條記錄。NNULLL值不允允許在主主鍵字段段出現(xiàn)。表約束命令令格式::,[CONNSTRRAINNTcconsstraaintt_naame]]PRIIMARRYKKEY(Coolummn,Collumnn,……)字段約束命命令格式式:[CONSSTRAAINTTcoonsttraiint__namme]PRRIMAARYKEYY例如:用字字段約束束定義DDEPTTNO為為主鍵CREATTETTABLLEDDEPTT(DEPTTNONUMMBERR(2)CONNSTRRAINNTDDEPTT_PRRIMPRIIMARRYKKEY,,…);4)、外鍵鍵約束外鍵提供表表內(nèi)或表表間的完完整性規(guī)規(guī)則。外外鍵必須須依賴于于一個pprimmaryy或uniiqueekeyy。表約束命令令格式::,[CONNSTRRAINNTcconsstraaintt_naame]]FFOREEIGNNKEEY((Collumnn,CColuumn,,…))REEFERRENCCEttablle((collumnn,ccoluumn,,…))字段約束命命令格式式:[CONSSTRAAINTTcoonsttraiint__namme]FOOREIIGNKEYYtaablee(ccoluumn))例如:CREATTETTABLLEEEMP(…CONSTTRAIINTFK__DEPPTNOOFOOREIIGNKEYY(DDEPTTNO))REEFERRENCCEDDEPTT(DEEPTNNO)));5)、Chheckk約束CHECKK約束定定義了每每條記錄錄必須滿滿足的條條件語法:[CONSSTRAAINTTcoonsttraiint__namme]CHEECK(coondiitioon)Alterr命令ALTERRTAABLEE命令可可用來修修改數(shù)據(jù)據(jù)表的定定義。命令格式::ALTERRTAABLEEtaableenamme[ADD或或MODDIFYY或DROOPooptiionss]((collumnn_sppec[coolummn_cconsstraaintt])[ENNABLLEcclauuse或DISSABLLEcclauuse]]ADD關(guān)鍵鍵字可以以用來給給已存在在的數(shù)據(jù)據(jù)表增加加一個字字段或約約束。如:給EMMP增加加一個字字段ALTERRTAABLEEEMMPADD(SSPOUUSESS_NAMMECCHARR(100));;Tableeallterred。MODIFFY關(guān)鍵鍵字可以以用來修修改已存存在的數(shù)數(shù)據(jù)表定定義。如:把EMMP中EENAMME長度度改為225個字字符ALTERRTAABLEEEMMPMODIFFY(EENAMMCHHAR(225));;Tableeallterred。DROP關(guān)關(guān)鍵字可可以用來來刪除已已存在數(shù)數(shù)據(jù)表的的約束。如:把EMMP中主主鍵刪除除ALTERRTAABLEEEMMPDROPPRIIMARRYKKEY;;Tableeallterred。Drop命令用DROPPTAABLEE命令刪刪除Orraclle數(shù)據(jù)據(jù)表的定定義。命令格式::DROPTABBLEtabble__namme[[CASSCADDECCONSSTRAAINTT]例如:DROPTABBLEEMPP;CASCAADECONNSTRRAINNT選項項說明了了也把完完整性約約束一起起刪除。注意:DROPTABBLE也也把數(shù)據(jù)據(jù)表中的的數(shù)據(jù)刪刪除。數(shù)據(jù)表的VVIEWWS和SSYNOOMNYYMS保保留下來來,但它它們變成成了不合合法的。任何懸而未未決的事事務(wù)將被被提交。只有數(shù)據(jù)表表的生成成者或DDBA才才有權(quán)刪刪除它。三.上機內(nèi)內(nèi)容創(chuàng)建表EMMPCREATTETTABLLEEEMP(EMPNNONUUMBEER(44)NOTTNUULL,,ENAMEEVAARCHHAR22(100),JOBVVARCCHARR2(110),,MGRNUUMBEER(44),HIREDDATEEDDATEE,SALNNUMBBER((7,22),COMMNUMMBERR(7,,2),,DEPTNNONUUMBEER(22)NOTTNNULLL);Tableecrreatted..用SQL**PLUUS命令令DESSCRIIBE來來看生成成的EMMP表的的列明細細清單::輸入命令::DESSCRIIBEEMPPEMP生成成的數(shù)據(jù)據(jù)表結(jié)構(gòu)構(gòu)顯示如如下:NammeNull??TypeEMPNOONOTNNULLLNUMBEER(44)ENAMEEVARCHHAR22(100)JOBVARCHHAR22(100)MGRNUMBEER(44)HIREDDATEEDATESALNUMBEER(77,2))COMMNUMBEER(77,2))DEPTNNONOTNNULLLNUMBEER(22)從其他表中中抽取字字段生成成數(shù)據(jù)表表CREATTETTABLLEEEMP__PARRTAASSELECCTEEMPNNO,EENAMME,JJOB,,SALL,COOMMFROOMEEMP;;TableeCrreatted..輸入命令::DESSCRIIBEEMPP_PAARTEMP_PPartt生成的的數(shù)據(jù)表表結(jié)構(gòu)結(jié)結(jié)果顯示示如下::NammeNull??TypeEMPNOONOTNNULLLNUMBEER(44)ENAMEEVARCHHAR22(100)JOBVARCHHAR22(100)SALNUMBEER(77,2))COMMNUMBEER(77,2))DROP命命令刪除除數(shù)據(jù)表表DROPTABBLEEMPP_PAART;;Tableedrroppped..給數(shù)據(jù)表EEMP增增加一個個字段SSPOUUSESS_NAAMEALTERRTAABLEEEMMPADD(SSPOUUSESS_NAAMECHHAR((10)));輸入命令::DESSCRIIBEEMPPEMP生成成的數(shù)據(jù)據(jù)表結(jié)構(gòu)構(gòu)顯示如如下:NammeNull??TypeEMPNOONOTNNULLLNUMBEER(44)ENAMEEVARCHHAR22(100)JOBVARCHHAR22(100)MGRNUMBEER(44)HIREDDATEEDATESALNUMBEER(77,2))COMMNUMBEER(77,2))DEPTNNONOTNNULLLNUMBEER(22)SPOUSSES__NAMMECHAR((10))用ALTEER的MMODIIFY命命令修改改已存在在的字段段的定義義ALTERRTAABLEEEMMPMODIFFY(EENAMMEVVARCCHARR2(112));;TableeAllterred..輸入命令::DESSCRIIBEEMPPEMP生成成的數(shù)據(jù)據(jù)表結(jié)構(gòu)構(gòu)顯示如如下:NammeNull??TypeEMPNOONOTNNULLLNUMBEER(44)ENAMEEVARCHHAR22(122)JOBVARCHHAR22(100)MGRNUMBEER(44)HIREDDATEEDATESALNUMBEER(77,2))COMMNUMBEER(77,2))DEPTNNONOTNNULLLNUMBEER(22)SPOUSSES__NAMMECHAR((10))用ALTEER的DDROPP命令刪刪除數(shù)據(jù)據(jù)表中已已存在的的約束ALTERRTAABLEEEMMPDDROPPPRRIMAARYKEYY;TableeAllterred..7.創(chuàng)建表表CUSSTOMMERcreattettablleccusttomeer( lasst_nnamee varrchaar2(300)nnotnulll, statte_ccd varrchaar(22),saless nummberr);Tableecrreatted..8.創(chuàng)建表表STAATEcreattettabllesstatte( staate__cd varrchaar(22)nnotnulll, satte_nnamee varrchaar2((30)));Tableecrreatted..四.上機作作業(yè)創(chuàng)建如下三三個基表表:S(S#,SSNAMME,AAGE,SSEX))對對應的中中文為::[學生(學學號,姓姓名,年年齡,性性別)]]SC(S##,C##,GRRADEE)對應應的中文文為:[學習(學學號,課課程號,成成績)]]C(C#,CCNAMME,TTEACCHERR)對應的的中文為為:[課程(課課程號,課課程名,任任課教師師)]注:本書以以后要用用到這三三個基本本表。生成一個數(shù)數(shù)據(jù)表PPROJJECTTS,其其字段定定義如下下,其中中PROOJIDD是主鍵鍵并且要要求P__ENDD_DAATE不不能比PP_STTARTT_DAATE早早。字段段名稱數(shù)據(jù)類型長度PROJIIDNUMBEER4P_DESSCVARCHHAR2220P_STAART__DATTEDATEP_ENDD_DAATEDATEBUDGEET_AAMOUUNTNUMBEER7,2MAX_NNO_SSTAFFFNUMBEER2生成一個數(shù)數(shù)據(jù)表AASSIIGNMMENTTS,其其字段定定義如下下,其中中PROOJIDD是外鍵鍵引自PPROJJECTTS數(shù)據(jù)據(jù)表,EEMPNNO是數(shù)數(shù)據(jù)表EEMP的的外鍵,并并且要求求PROOJIDD和EMMPNOO不能為為NULLL。字段段名稱數(shù)據(jù)類型長度PROJIIDNUMBEER4EMPNOONUMBEER4A_STAART__DATTEDATEA_ENDD_DAATEDATEBILL__RATTENUMBEER4,2ASSIGGN_TTYPEEVARCHHAR222用DESCCRIBBE命令令查看11和2題題定義的的字段。給1題中的的PROOJECCTS數(shù)數(shù)據(jù)表增增加一個個COMMMENNTS字字段,其其類型為為LONNG。給給2題中中的ASSSIGGNMEENTSS數(shù)據(jù)表表增加一一個HOOURSS字段,其其類型為為NUMMBERR。第三章數(shù)數(shù)據(jù)插入入、修改改和刪除除一.上機目目的在數(shù)據(jù)表中中用Innserrt增加加記錄。用Updaate修修改數(shù)據(jù)據(jù)表中的的數(shù)據(jù)。用Deleete刪刪除表中中的數(shù)據(jù)據(jù)。了解事務(wù)處處理過程程及其命命令。二.預備知知識Inserrt命令令1)用來在在數(shù)據(jù)表表中增加加記錄,格格式如下下:INSERRTIINTOOtaableenamme[[(coolummn,collumnn,…….)]]VALUEES((vallue,,vaaluee,…….);;命令中[((collumnn,ccoluumn,,…..)]是可可選的。一一般情況況下,為為了編程程的方便便,最好好指定字字段列表表。該命命令每次次只能增增加一條條記錄。注注意,CCHARRACTTER和和DATTE必須須用單引引號括起起來。例如:INNSERRTIINTOODEEPT(DEEPTNNO,DDNAMME,LLOC))VALUEES(550,’’市場部部’,’’上?!?;在DEPTT中增加加一個新新部門,忽忽略部門門名稱,這這時字段段列表必必須指定定否則出出錯,可可用如下下命令::INSERRTIINTOODEEPT(DEEPTNNO,LOCC)VALUEES(550,’’上?!涣硗?,如果果部門名名稱不能能確定,可可用NUULL代代替,如如下:INSERRTIINTOODEEPT(DEEPTNNO,DDNAMME,LLOC))VALUEES(550,NNULLL,’上上?!?;增加DATTE類型型的數(shù)值值,常用用格式是是DD--MONN-YYY。默認認的世紀紀是200世紀,OORCAALE已已克服了了Y2KK(千年年蟲)問問題。如下:INSERRTIINTOOEMMP(EEMPNNO,NNAM,,JOBB,MGGR,HHIREEDATTE,SSAL,,COMMM,DDEPTTNO)VALUEES(75568,,’MAASONN’,’ANALLYSTT’,775666,TO_DAATE((‘244/066/200849:330’,,’DDD/MMM/YYYYYHH::MI’’),3000,,NULLL,220);;2)增加從從其他數(shù)數(shù)據(jù)表查查詢出的的數(shù)據(jù)命令格式::INSERRTIINTOOtaablee[((collumnn,ccoluumn,,…..)]SELECCTsseleect--lisstFROMtabble((s);;Updatte命令令在需要修改改表中數(shù)數(shù)據(jù)時,可可使用uupdaate命命令如下下:UPDATTEttablle[aaliaas]SETccoluumn[[,coolummn…..]=={eexprresssionn,ssubqquerry}[WHERREccondditiion]];命令由三部部分組成成:updatte后跟跟一個或或多個要要修改的的表,這這部分是是必不可可少的。set后跟跟一個或或多個要要修改的的表列,這這也是必必不可少少的。wheree后跟查查詢條件件,這是是選項;;如果WWHERRE子句句忽略,UUPDAATE命命令將修修改數(shù)據(jù)據(jù)表中所所有記錄錄。例如:修改改EMPP表中SSCOTTT的記記錄數(shù)據(jù)據(jù),把他他調(diào)到銷銷售部,并并且工資資提高110%,具具體命令令如下::UPDATTEEEMPSETJJOB=’SSALEESMAAN’,,HIREDDATEE=SYSSDATTE,SAL==SAAL*11.1WHEREEENNAMEE=‘SCCOTTT’;1reccordduppdatted..Delette命令Delette命令令用來從從表中刪刪除一行行或多行行記錄。命命令格式式如下::DELETTEFFROMMtaablee[WHHEREEcoondiitioon];;該命令由兩兩部分組組成:關(guān)鍵字deeletteffromm后跟跟準備要要從中刪刪除數(shù)據(jù)據(jù)的表名名,這是是必不可可少的。關(guān)鍵字whheree后跟刪刪除條件件,是可可選項;;如果不不用WHHEREE子句,數(shù)數(shù)據(jù)表中中的所有有記錄將將被刪除除。例如刪除EEMP表表中部門門號是110的記記錄:DELETTEFFROMMEMMPWWHERREDDEPTTNO=110;事務(wù)(Trranssacttionn)事務(wù)是由一一串修改改數(shù)據(jù)庫庫的操作作組成的的。Orraclle中有有兩種事事務(wù):DDML事事務(wù)和DDDL事事務(wù)。DDML事事務(wù)是一一些DMML語句句組成的的,Orraclle把事事務(wù)作為為單個實實體或邏邏輯工作作單元來來處理;;DDLL事務(wù)只只能由一一條DDDL語句句組成。事務(wù)的執(zhí)行行必須是是完整的的,也就就是說事事務(wù)處理理中一部部分提交交給數(shù)據(jù)據(jù)庫而其其他部分分不提交交這是不不允許的的。對于于事務(wù)來來說,要要么事務(wù)務(wù)中所有有處理都都提交,要要么所有有的處理理都放棄棄。事務(wù)是以可可執(zhí)行的的DMLL或DDDL命令令開始,以以下面的的情況結(jié)結(jié)束:COMMIIT/RROLLLBACCKDDL命令令(DDDL語句句是自動動提交)一些錯誤(如如死鎖)注銷(如退退出SQQL*PPluss)硬件錯誤1)、永久久性修改改為了使修改改變成永永久性,這這些修改改必須提提交給數(shù)數(shù)據(jù)庫。CCOMMMIT命命令可以以用來使使數(shù)據(jù)庫庫永久性性改變。而而ROLLLBAACK可可以撤消消或放棄棄修改。在在兩次提提交之間間對數(shù)據(jù)據(jù)庫的修修改就是是事務(wù)。2)、撤消消修改ROLLBBACKK可以放放棄不提提交的修修改。RROLLLBACCK可以以恢復上上次提交交之后修修改過的的數(shù)據(jù)。3)、系統(tǒng)統(tǒng)錯誤事務(wù)被一些些嚴重錯錯誤(例例如系統(tǒng)統(tǒng)錯誤)的的中斷時時,它將將自動回回滾。這這阻止了了由錯誤誤造成的的對數(shù)據(jù)據(jù)不完整整的修改改,而恢恢復到最最近提交交之后的的數(shù)據(jù)表表的狀態(tài)態(tài)。用這這種方式式SQLL*Pllus保保護了數(shù)數(shù)據(jù)的完完整性。自自動回滾滾通常是是系統(tǒng)錯錯誤造成成的,例例如斷電電或REESETT。而在在輸入命命令時的的錯誤,例例如拼寫寫錯誤或或沒有授授權(quán)的操操作,不不會造成成事務(wù)的的中斷或或者自動動回滾。這這是因為為錯誤是是在編譯譯時而不不是在運運行時檢檢測到的的。4)、用SSQL語語句控制制事務(wù)?。?、COOMMIIT[[WORRK];;使當前事務(wù)務(wù)永久的的修改。清除這個事事務(wù)中所所有的保保存點。結(jié)束事務(wù)。釋放事務(wù)中中的鎖操操作。關(guān)鍵字WOORK是是可選的的。一般情況下下,應在在應用程程序中用用COMMMITT(或RROLLLBACCK)顯顯式的結(jié)結(jié)束事務(wù)務(wù)。隱式(自動動)結(jié)束束事務(wù)在在下列情情況發(fā)生生:DDL命令令之前。DDL語句句之后。和一個數(shù)據(jù)據(jù)庫正常常斷開之之后。ⅱ)、SAAVEPPOINNTssaveepoiint__namme保存點能把把事務(wù)分分割成更更小的部部分。保存點允許許在任意意點阻止止工作的的進行。如果第二個個保存點點的名字字和第一一個保存存點的名名字相同同,那么么第一個個保存點點自動失失效。保存點的最最大數(shù)默默認是55;但可可以修改改。ⅲ)、ROOLLBBACKK[WWORKK]tto[[SAVVEPOOINTT]ssaveepoiint__nammeROLLBBACKK語句用用來撤消消工作。關(guān)鍵字WOORK是是可選的的。SAAVEPPOINNT也是是可選的的。如果ROLLLBAACK語語句中沒沒有TOOSAAVEPPOINNT子句句,那么么它將結(jié)結(jié)束事務(wù)務(wù);回滾滾這個事事務(wù)中所所有的操操作;清清除這個個事務(wù)中中所有的的保存點點;釋放放這個事事務(wù)的鎖鎖操作。三.上機內(nèi)內(nèi)容用Inseert在在基本表表cusstommer中中插入數(shù)數(shù)據(jù)SQL>iinseertinttoccusttomeervvaluues(‘NNichholsson’’,’CCA’,,69889.999);;1rowwcrreatted..SQL>iinseertinttoccusttomeervvaluues(‘MMarttin’’,’CCA’,,23445.445);;1rowwcrreatted..SQL>iinseertinttoccusttomeervvaluues(‘LLaurrsenn’,’’CA’’,344.344);1rowwcrreatted..SQL>iinseertinttoccusttomeervvaluues(‘BBambbi’,,’CAA’,112344.555);1rowwcrreatted..SQL>iinseertinttoccusttomeervvaluues(‘MMcGrraw’’,’NNJ’,,1233.455);1rowwcrreatted..在表STAATE中中插入指指定的字字段SQL>iinseertinttosstatte((staate__namme,sstatte_ccd)2 valluess(‘‘Masssacchussettttess’,’’MA’’);1rowwcrreatted..SQL>iinseertinttosstatte((staate__namme,sstatte_ccd)2 valluess(‘‘Callifoorniia’,,’CCA’));1rowwcrreatted..SQL>iinseertinttosstatte((staate__namme,sstatte_ccd)2 valluess(‘‘NewwJerrseyy’,’’NJ’’);1creeateed.SQL>iinseertinttosstatte((staate__namme,sstatte_ccd)2 valluess(‘‘NewwYorrk’,,’NYY’);;1creeateed.3.修改數(shù)數(shù)據(jù)把statte表中中NewwYorrk改為為Flooridda,NNY改為為FD::UPDATTEsstatteSSETstaate__namme==‘FFlorridaa’,staate__cd=‘‘FD’’whereesttatee_naame=‘‘NewwYorrk’anddsstatte_ccd==‘NNY’;;4.刪除數(shù)數(shù)據(jù)從STATTE表刪刪除sttatee_naame為為Flooridda和staate__cd為為FD的記記錄:DELETTEFFROMMSTTATEEWHHEREEsttatee_naame=‘‘Flooridda’ANDDsttatee_cdd=‘FDD’;四.上機作作業(yè)用INSEERT命令輸輸入數(shù)據(jù)據(jù)表3-1基本表表S的數(shù)數(shù)據(jù)S1WANG20MS2LIU19MS3CHEN22MS4WU19MS5LOU21FS8DONG18F表3-2基表CC的數(shù)據(jù)據(jù)C2MATHSSMAC4PHYSIICSSHIC3CHEMIISTRRYZHOUC1DBLIC5OSWEN表33-3基本表表SC的的數(shù)據(jù)(空空格為未未選修)C#S##S1S2S3S4S5S8C1808590757090C270NULL8560NULLC38595NULL8090C490NULL70C57065NULL對S、C、SSC表進進行操作作:1)、把CC2課程程的非空空成績提提高100%。2)、在SSC表中中刪除課課程名為為PHYYSICCS的成績績的元組組。3)、在SS和SCC表中刪刪除學號號為S88的所有有數(shù)據(jù)。在PROJJECTTS數(shù)據(jù)據(jù)庫表中中增加下下列記錄錄:PROJIID12P_DESSCWRITEEC0030COUURSEEPROOFFREEADNOTTESP_STAART__DATTE02-JAAN-88801-JAAN-889P_ENDD_DAATE07-JAAN-88810-JAAN-889BUDGEET_AAMOUUNT500600MAX_NNO_SSTAFFF11COMMEENTSSBRCRREATTIVEEYOURCHOOICEE在ASSIIGNMMENTTS數(shù)據(jù)據(jù)庫表中中增加下下列記錄錄:PROJIID112EMPNOO736979027844A_STAART__DATTE01-JAAN-88804-JAAN-88801-JAAN-889A_ENDD_DAATE03-JAAN-88807-JAAN-88810-JAAN-889BILL__RATTE50.00055.00045.500ASSIGGN_TTYPEEWRWRPFHOURSS152030把ASSIIGMEENTSS表中AASSIIGNMMENTTTYYPE的的WR改改為WTT,其他他的值不不變。在PROJJECTTS和和ASSSIGNNMENNTS插插入更多多的記錄錄。刪除自己隨隨意插入入的記錄錄。第四章數(shù)數(shù)據(jù)查詢詢一.上機目目的掌握Sellectt語句的的運用。掌握一些函函數(shù)的應應用。掌握子查詢詢的運用用。連接和分組組的應用用。二.預備知知識1.Sellectt語句Selecct命令令用于從從Oraaclee數(shù)據(jù)庫庫中檢索索數(shù)據(jù)。讀讀者利用用sellectt命令告告訴數(shù)據(jù)據(jù)庫要檢檢索什么么樣的信信息。SSeleect是是讀者看看到的最最常用的的SQLL語句,select命令(如下)有六個基本部分構(gòu)成:SELECCT[[DISSTINNCT]]{**,COOLUMMN[[ALIIAS]],………}FROMtabbleWHEREEcoondiitioon(ss)ORDERRBYY{ccoluumn,,expper}}[AASC||DESSC]GROUPPBYY{{collumnn,exxperr}HAVINNGhhaviing__conndtiionss;Selecct后跟跟用戶需需要檢索索的信息息(如下下一部分分將要提提到的表表中表列列的名字字)。這這是seelecct命令令必不可可少的部部分。From后后跟檢索索對象(如如存放數(shù)數(shù)據(jù)的一一個或多多個表的的名稱),from部分也是必不可少的。Wheree后跟檢檢索條件件(如限限制檢索索內(nèi)容的的條件),where部分是可選的。Orderrbyy后跟跟分類準準則(如如取自空空值數(shù)據(jù)據(jù)如何給給出的第第一部分分的表列列名稱表表),oordeerbby部部分是可可選的。Grouppbyy后跟分分組的字字段或準準則。Havinng后跟跟分組的的查詢條條件。下面我們首首先使用用sellectt語句操操作名為為useer_ttablles的的數(shù)據(jù)字字典視圖圖:SQL>sseleect*fromuseer_ttablleswhereetaablee_naame=‘‘cusstommer’’;TABLEE_NAAMETABLEESPAACE__NAMMECLUSTTER__NAMMEIOT_NNAMEEPCTT_FRREEPCCT_UUSEDDINI_TTRANNSMAAX_TTRANNSIINITTIALL_EXXTENNTNEXXT_EEXTEENTMIN_EEXTEENTSSMAXX_EXXTENNTSPPCT__INCCREAASEFREEELIISTSSFREELLISTT_GRROUPPSLOOGBNNUM__ROWWSBLOOCKSSEMMPTYY_BLLOCKKSAVG_SSPACCECHAAIN__CNTTAVGG_ROOW_LLENAVG_SSPACCE_FFREEELISST_BBLOCCKSNNUM__FREEELIIST__BLOOCKSSDEGREEEINNSTAANCEESCAACHEETABBLE__LOSSAMPPLE__SIZZELAST__ANAALPPARIIOT__TYPPETSNEESBUFFFERR_ROWW_MOOVEGLOOUSEDDURAATIOONSSKIPPCORRMOONCUSTOOMERRSYSTEEM401 2555 102240 1022401 1211 550 1 1YESSNN1 1NENAABLEED NONNNNOODEEFAUULTDISSABLLEDNONODIISABBLEDDNOO2.選擇指指定的列列我們可以在在sellectt關(guān)鍵字字后跟一一個或多多個表列列。星號號指示OOraccle顯顯示表中中的所有有字段。我我們使用用同樣的的sellectt語句,但但指定了了需要查查看的一一個表的的某些字字段:SQL>sseleecttabble__nammeffrommusser__tabblessTABLEE_NAAMECUSTOOMERRSTATEErowssellectted3.條件查查詢到目前為止止,我們們看到了了sellectt命令可可用來查查看表中中所有表表列(sseleect*)或或部分表表列(sseleectcollumnn1,ccoluumn33)。如如果讀者者只想看看特定的的數(shù)據(jù)行行,怎么么辦呢??這就需需要用wwherrer子子句來解解決了。例例如:我我們想要要查看sstatte_ccd值為為MA的所所有客戶戶,可以以用命令令:selecctllastt_naame,,staate__cd,,sallesfroomccusttomeerwwherresstatte_ccd==‘MMA’;;結(jié)果如下::LAST__NAMMESTSSALEESTeploowMMA234445..671)帶annd/oor的Wheere子子句wheree子句指指示Orraclle查找找表中數(shù)數(shù)據(jù),并并只返回回滿足條條件的行行。在上上面的例例子中,要要求Orraclle僅返返回sttatee_cdd等于MAA的數(shù)據(jù)據(jù)行。這這是通過過wheerestaate__cd=‘‘MA’’;來實實現(xiàn)的。有時用戶要要求返回回同時滿滿足多個個條件的的行。例例如:讀讀者可能能對sttatee_cd為CCA且ssalees超過過60000的行行感興趣趣。語句句sellectt*froomccusttomeerwwherresstatte_ccd==‘CCA’anddsaaless>60000;得得到下列列輸出::LAST__NAMMESSTSSALEESAbbeyyCA669699.966NichoolsoonCAA69989..99上面的例子子中,我我們需要要返回滿滿足所有有條件的的行。如如果用戶戶要求檢檢索滿足足其中兩兩個條件件之一的的行應該該怎么辦辦呢?可可用語句句sellectt*froomccusttomeerwwherresstatte_ccd==‘CCA’orsalles>>60000;。結(jié)結(jié)果如下下:LAST__NAMMESSTSSALEESTeploowMAA2334455.677AbbeyyCA669699.966NichoolsoonCAA69989..99MartiinCCA223455.455LaurssenCCA344.344BambiiCA112344.555注意,盡管管Tellpoww的staate__cd不不等于CCA,但但由于其其salles值值超過660000,因此此也顯示示在輸出出列表中中。Annd和和or如讀讀者所知知是邏輯輯操作符符,決定定查詢語語句中wwherre條條件之間間的關(guān)系系。邏輯輯條件的的概念及及其在OOraccle產(chǎn)產(chǎn)品中的的用途及及使用方方法要用用一整本本書才可可講清楚楚。此處處精力主主要放在在實用技技術(shù)上。表表4-11解釋了了當annd和or出現(xiàn)現(xiàn)在同一一個whheree子句中中時,OOraccle是是怎樣處處理的。讀者應細心心分析涉涉及多個個andd和or的邏邏輯(稱稱為復合合條件,compoundconditions),否則將會引起混亂。例如:檢查語句selectlast_namefromcustomerwherestate_cd=’MA’andstate_cd=‘CA’;。其中兩個條件由關(guān)鍵字and連接,只有當兩個條件為真(true)時,該復合條件才能為真。表4-1邏輯操操作符oor和andd操作符作用Or當所連接的的兩個條條件之一一為真時時返回TTRUEEAnd當所連接的的兩個條條件都為為真時返返回TRRUE語句sellecttlaast__nammeffrommcuustoomerrwhhereesttatee_cdd=’MAA’aandstaate__cd=‘‘CA’’;中,對對staate__cd值值為MAA的數(shù)據(jù)據(jù)行,第第一個條條件為TTRUEE,而第第二個條條件為FFALSSE(因因為CAA不等于于MA)。該該邏輯條條件說明明要顯示示staate__cd既既為MAA又為CCA的數(shù)數(shù)據(jù)行,這這種情況況是不可可能出現(xiàn)現(xiàn)的,因因此,該該復合條條件永遠遠為假,結(jié)結(jié)果是什什么也顯顯示不出出來。2)帶NOOT的wheere子子句Oraclle支持持否定條條件的搜搜索。例例如:讀讀者可能能想看看看staate__cd不不為MAA的所有有客戶,語語句seelecct**frromcusstommerwheerestaate__cd!=’MAA’;((在SQQL*PPluss中符號號!=的的意思是是“不等于于”),輸出出結(jié)果為為:LAST__NAMMESSTSSALEESAbbeyyCA669699.966NichoolsoonCAA69989..99MartiinCCA223455.455LaurssenCCA344.344BambiiCA112344.555McGraawNJJ1233.4553)帶檢索索范圍的的wheere子子句Oraclle也支支持限定定范圍的的檢索。例例如:讀讀者可能能需要查查找saaless值從11到1000000之間的的所有客客戶,可可執(zhí)行語語句seelecct**frromcuustoomerrwhhereesaalessbeetweeen1aand100000;;。執(zhí)行行結(jié)果如如下:LAST__NAMMESSTSSALEESAbbeyyCA669699.966NichoolsoonCAA69989..99MartiinCCA223455.455LaurssenCCA344.344BambiiCA112344.555McGraawNJJ1233.4554)帶檢索索表的wwherre子句句Oraclle支持持在列表表內(nèi)查找找項的概概念。例例如:可可用語句句sellectt*froomcusstommerwheerestaate__cdin(‘NNJ’,,’CAA’);;檢索sttatee_cdd為NJJ或CAA的所有有客戶,檢檢索結(jié)果果為:LAST__NAMMESSTSSALEESAbbeyyCA669699.966NichoolsoonCAA69989..99MartiinCCA223455.455LaurssenCCA344.344BambiiCA112344.555McGraawNJJ1233.4555)帶匹配配檢索的的wheere子句Oraclle支持持采用llikee命令的的匹配檢檢索。例例如,用用戶告訴訴Oraaclee檢索所所有以MM開頭的的lasst_nnamee,顯示示相應的的數(shù)據(jù)行行。可用用語句sseleect*ffrommcuustoomerrwhhereelaast__nammellikee‘MM%’;;輸出情情況如下下:LAST__NAMMESSTSSALEESMartiinCCA223455.455McGraawNJJ1233.455也可以輸入入語句sseleect*ffrommcuustoomerrwhhereelaast__nammellikee‘%%tinn%’;;來查找找lasst_nnamee中含有有“tinn”的行。執(zhí)執(zhí)行結(jié)果果如下::LAST__NAMMESSTSSALEESMartiinCCA223455.4556)wheere子子句中的的常用操操作符除了上面講講到的這這許多例例子外,Oracle還提供了許多功能強大的邏輯操作符限制行的檢索。表4-2是可在where子句中使用的部分操作符列表。表4-2常用比比較操作作符操作符作用樣例=相等Selecct**frromstaatewheerestaate__cd==’MAA’;!=不相等Selecct**frromstaatewheerestaate__cd!!=’MMA’;;^=同!=Selecct**frromstaatewheerestaate__cd^^=’MMA’;;<>同!=Selecct**frromstaatewheerestaate__cd<<>’MMA’;;<小于Selecct**frromcusstommerwheeresalles<<1000;>大于Selecct**frromcusstommerwheeresalles>>1000;<=小于或等于于Selecct**frromcusstommerwheeresalles<<=10000;;>=大于或等于于Selecct**frromcusstommerwheeresalles>>=10000;;In等于括號內(nèi)內(nèi)任一成成員Selecct**frromcusstommerwheerestaate__cdin(‘MMA’,,’NJJ’);;notiin不等于括號號內(nèi)任一一成員Selecct**frromcusstommerwheerestaate__cdnottinn(‘‘MA’’,’NNJ’));betweeenAaandB大于等于AA與小于于等于BBSelecct**frromcusstommerwheeresallesbettweeen11annd550;notbbetwweennAanddB不大于等于于A與小小于等于于BSelecct**frromcusstommerwheeresallesnottbeetweeen1aand50;;like‘%ttin%%’包括給定子子串(即’tiin’))Selecct**frromcusstommerwheerelasst_nnameeliike‘%ttin%%’4.Ordderby我們再來看看看cuustoomerr表。這這次,我我們希望望查詢結(jié)結(jié)果以llastt_naame的的字母降降序排列列,命令令Sellectt*froomccusttomeeroordeerbbyllastt_naamedessc;結(jié)結(jié)果如下下:LAST__NAMMESSTSSALEEST

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論