培訓(xùn)14code課程代碼sql plus_第1頁
培訓(xùn)14code課程代碼sql plus_第2頁
培訓(xùn)14code課程代碼sql plus_第3頁
培訓(xùn)14code課程代碼sql plus_第4頁
培訓(xùn)14code課程代碼sql plus_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

關(guān)系數(shù)據(jù)庫的基本概念與原理關(guān)系數(shù)據(jù)庫的基本概念與原理數(shù)據(jù)庫應(yīng)具備的特征DBMS功能數(shù)據(jù)模型的三要素

數(shù)據(jù)庫系統(tǒng)模式SQL語言組成關(guān)系數(shù)據(jù)理論數(shù)據(jù)庫應(yīng)具備的特征(1)數(shù)據(jù)庫是相互關(guān)聯(lián)的數(shù)據(jù)的集合(2)用綜合的方法組織數(shù)據(jù)順序、索引、聚簇Cluster具有較小的數(shù)據(jù)冗余,可供多個(gè)用戶共享具有較高的數(shù)據(jù)獨(dú)立性具有安全控制機(jī)制,能夠保證數(shù)據(jù)的安全、可靠允許并發(fā)地使用數(shù)據(jù)庫,能有效、及時(shí)地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性DBMS功能數(shù)據(jù)庫定義功能定義數(shù)據(jù)庫結(jié)構(gòu)和存儲結(jié)構(gòu);定義數(shù)據(jù)庫中數(shù)據(jù)之間的聯(lián)系;定義數(shù)據(jù)完整性約束條件和保證完整性的觸發(fā)機(jī)制等.數(shù)據(jù)庫操縱功能完成對數(shù)據(jù)庫中數(shù)據(jù)的操作:插入、刪除、修改;重新組織數(shù)據(jù)庫的存儲結(jié)構(gòu);完成對數(shù)據(jù)庫的備份/恢復(fù)等.數(shù)據(jù)庫查詢功能以各種方式提供靈活的查詢功能,以便方便使用數(shù)據(jù).數(shù)據(jù)庫控制功能完成對數(shù)據(jù)庫的安全性控制/完整性控制/并發(fā)控制數(shù)據(jù)庫通信功能在分布式數(shù)據(jù)庫或提供網(wǎng)絡(luò)操作功能的數(shù)據(jù)庫中還必須提供通信功能。

常見DBMSOracleInformixDB2MySQLSQLServer數(shù)據(jù)模型模型對客觀事物、現(xiàn)象、過程或系統(tǒng)的簡化描述所有的數(shù)據(jù)庫系統(tǒng)都為它所要描述的世界建立了模型:數(shù)據(jù)建模:描述了組織數(shù)據(jù)的框架結(jié)構(gòu)。數(shù)據(jù)建模最后發(fā)展成為數(shù)據(jù)的存儲方式(數(shù)據(jù)字典中的定義)業(yè)務(wù)功能建模:用戶的最終需求。業(yè)務(wù)功能建模最后發(fā)展成為應(yīng)用程序數(shù)據(jù)模型的三要素1.?dāng)?shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)的靜態(tài)特征,包括對數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù) 建聯(lián)系的描述。通常按照數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型:層次結(jié)構(gòu)——層次模型網(wǎng)狀結(jié)構(gòu)——網(wǎng)狀模型關(guān)系結(jié)構(gòu)——關(guān)系模型

2.?dāng)?shù)據(jù)操作描述數(shù)據(jù)的動態(tài)特征:一組定義在數(shù)據(jù)上的操作(包括操作的含義、操作符、運(yùn)算規(guī)則及其語言等)主要操作:檢索與更新(插入、刪除、修改)3.

數(shù)據(jù)的約束條件完整性規(guī)則的集合,數(shù)據(jù)庫中的數(shù)據(jù)必須滿足這組規(guī)則。約束條件的主要目的是使數(shù)據(jù)庫與它所描述的現(xiàn)實(shí)系統(tǒng)相符合。設(shè)計(jì)時(shí):時(shí)數(shù)據(jù)模型正確、真實(shí)、有效地反映現(xiàn)實(shí)運(yùn)行時(shí):保證數(shù)據(jù)庫中的數(shù)據(jù)值真實(shí)地體現(xiàn)現(xiàn)實(shí)世界的狀態(tài)常見數(shù)據(jù)模型概念(數(shù)據(jù))模型(ConceptualDataModel)概念模型必須轉(zhuǎn)換成邏輯模型,才能在DBMS中實(shí)現(xiàn);最常用的概念模型是E-R模型邏輯(數(shù)據(jù))模型(LogicalDataModel)物理(數(shù)據(jù))模型(PhysicalDataModel)概念模型實(shí)體-關(guān)系(Entity-Relationship)概念模型實(shí)體、實(shí)體型、實(shí)體集屬性(Attribute)關(guān)系(Relationship)實(shí)體-關(guān)系圖邏輯數(shù)據(jù)模型層次模型(HierarchicalModel)網(wǎng)狀模型(NetworkModel)關(guān)系模型(RelationalModel)數(shù)據(jù)庫系統(tǒng)模式的概念當(dāng)設(shè)計(jì)數(shù)據(jù)庫時(shí),對數(shù)據(jù)庫的結(jié)構(gòu)感興趣;模式(Schema):數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述當(dāng)應(yīng)用數(shù)據(jù)庫時(shí),關(guān)心的是:數(shù)據(jù)庫中存在的數(shù)據(jù)——實(shí)例(Instance)。數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)內(nèi)模式(InternalSchema)模式(Schema)外模式(ExternalSchema)內(nèi)模式(InternalSchema)就是存儲模式是數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)的內(nèi)部表示,即對數(shù)據(jù)的物 理結(jié)構(gòu)/存儲方式的描述,是低級描述,一般由DBMS提供的語言或工具完成;要修改存儲數(shù)據(jù)庫的結(jié)構(gòu),那么僅僅需要把這些修改反映在存儲模式中;通常我們不關(guān)心內(nèi)模式的具體技術(shù)實(shí)現(xiàn),而是從一般組織的觀點(diǎn)(即概念模式)或用戶的觀點(diǎn)(外模式)來討論數(shù)據(jù)庫的描述。但我們必須意識到基本的內(nèi)模式和存儲數(shù)據(jù)庫的存在。模式(Schema)就是邏輯模式是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶的公共數(shù)據(jù)視圖;DBMS提供數(shù)據(jù)定義語言DDL來描述邏輯模式,嚴(yán)格定義數(shù)據(jù)的名稱、特征、相互關(guān)系、約束等。外模式(ExternalSchema)就是用戶模式(視圖)是模式的子集或變形,是與某一應(yīng)用有關(guān)的數(shù)據(jù) 的邏輯表示;不同用戶需求不同,看待數(shù)據(jù)的方式也可以不同 ,對數(shù)據(jù)保密的要求也可以不同,使用的程序設(shè)計(jì)語言也可以不同,因此不同用戶的外模式的描述可以是不同的。注:一個(gè)數(shù)據(jù)庫只有一個(gè)模式,一個(gè)內(nèi)模式,但可以有多個(gè)外模式。SQL語言組成1.

常量:文本常量(字符串)、整型常量、數(shù)值常量2.

數(shù)據(jù)類型3.

空值:NULL4.運(yùn)算符5.函數(shù)SQL提供了非常豐富的內(nèi)部函數(shù)——聚集函數(shù)6.謂詞7.

表達(dá)式8.

條件運(yùn)算符算術(shù)運(yùn)算符:+,-,*,/字符串運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符:NOT,AND,OR集合運(yùn)算符謂詞IN/NOTIN在其中/不在其中LIKE匹配ISNULL/ISNOTNULLEXISTS/NOTEXISTS存在/不存在量詞ANY任意一個(gè)存在量詞ALL全程量詞數(shù)據(jù)定義數(shù)據(jù)庫的定義基本表定義視圖定義索引定義規(guī)則定義存儲過程定義關(guān)系數(shù)據(jù)理論關(guān)鍵字范式關(guān)鍵字現(xiàn)實(shí)世界的每一實(shí)體集合,都有一關(guān)鍵字,即唯一確定各個(gè)實(shí)體的一組屬性。同樣,關(guān)系上最重要的約束是關(guān)系的關(guān)鍵字約束,即關(guān)鍵字/碼唯一確定關(guān)系的元組。主碼與外碼(主關(guān)鍵字與外關(guān)鍵字)提供了一個(gè)表示關(guān)系間聯(lián)系的手段。范式在關(guān)系數(shù)據(jù)模式設(shè)計(jì)中,為了避免由依賴引起的數(shù)據(jù)的冗余和更新異常問題,必須進(jìn)行關(guān)系數(shù)據(jù)模式的規(guī)范化。自1971年,E.F.Codd提出關(guān)系規(guī)范化理論以來,人們對規(guī)范化問題進(jìn)行了長期的研究,并已經(jīng)有了很大進(jìn)展。范式(NormalForm)的概念最早是由E.F.Codd提出的,1971~1972年,先后提出了1NF,2NF,3NF(根據(jù)關(guān)系模式滿足的不同性質(zhì)和規(guī)范化的程度劃分)。1974年,又和Boyce共同提出了BCNF(Boyce-CoddNormalForm)。1976年,F(xiàn)agin提出了4NF,后又有人提出5NF。最重要的是3NF和BCNF。這是進(jìn)行規(guī)范化的主要目標(biāo)。第一范式(1NF):關(guān)系的所有分量都必須是不可分的最小數(shù)據(jù)項(xiàng)。每個(gè)關(guān)系模式都應(yīng)滿足的最低要求。第二范式(2NF)定義:首先是1NF,且每一非主屬性完全函數(shù)依賴于關(guān)鍵字,就是2NF。所有單屬性關(guān)鍵字表都是2NF關(guān)系。復(fù)合關(guān)鍵字,且存在非主屬性對關(guān)鍵字的部分依賴,則否。例:庫存(倉庫號,設(shè)備號,數(shù)量,地點(diǎn))

1NF,但非2NF。非主屬性數(shù)量完全依賴于關(guān)鍵字。非主屬性地點(diǎn)部分依賴于關(guān)鍵字。即有倉庫號→地點(diǎn)。 (倉庫號,設(shè)備號)→地點(diǎn)。解決方案:庫存(倉庫號,設(shè)備號,數(shù)量)倉庫(倉庫號,地點(diǎn))第三范式(3NF)首先滿足2NF,并且所有非主屬性都不傳遞依賴于關(guān)鍵字,則是3NF。若存在非主屬性對關(guān)鍵字的傳遞依賴,則不是3NF例子:學(xué)生記錄(學(xué)號,姓名,系,系主任)不是3NF學(xué)生檔案(學(xué)號,姓名,系名)系(系名,系主任)BCNF范式一個(gè)滿足BCNF的關(guān)系模式一定是非主屬性對關(guān)鍵字完全函數(shù)依賴;例:⑴.管理(倉庫號,設(shè)備號,職工號)3NF,非BCNF。語義:①.一個(gè)倉庫可有多個(gè)職工;②.一名職工僅在一個(gè)倉庫工作;③.在每個(gè)倉庫,一種設(shè)備僅由一名職工保管(但每名職工可以保管多種設(shè)備)。根據(jù)語義有依賴:職工號→倉庫號;(倉庫號,設(shè)備號)→職工號;問題:·新職工分到一倉庫,尚未負(fù)責(zé)設(shè)備,則不能插入。

·插入異常:同一設(shè)備,兩個(gè)職工,無法防止這樣插入,與③違背。Oracle介紹內(nèi)容Oracle版本Oracle結(jié)構(gòu)Oracle進(jìn)程組成Oracle的版本數(shù)據(jù)庫版本企業(yè)版本標(biāo)準(zhǔn)版本個(gè)人版本Oracle應(yīng)用服務(wù)器版本企業(yè)版本標(biāo)準(zhǔn)版本Oracle9i的特點(diǎn)集群技術(shù)聯(lián)機(jī)分析處理,數(shù)據(jù)挖掘和分析技術(shù)智能管理分布式集群原理圖示數(shù)據(jù)倉庫結(jié)構(gòu)體系圖示分布式圖示Oracle工作的兩種模式C/S模式B/S模式Oracle數(shù)據(jù)管理邏輯結(jié)構(gòu)Oracle的數(shù)據(jù)存儲結(jié)構(gòu)Oracle的文件類型數(shù)據(jù)文件 DBF日志文件 LOG控制文件 CTLOracle的內(nèi)存結(jié)構(gòu)SGA系統(tǒng)全局區(qū)PGA程序全局區(qū),為單個(gè)用戶分配的專用內(nèi)存區(qū)域,不能共享Oracle的數(shù)據(jù)進(jìn)程結(jié)構(gòu)客戶進(jìn)程Sql/plus企業(yè)管理器服務(wù)器進(jìn)程系統(tǒng)監(jiān)控進(jìn)程(SMON) 系統(tǒng)啟動時(shí)執(zhí)行恢復(fù)工作進(jìn)程監(jiān)視進(jìn)程(PMON) 用于恢復(fù)失敗的用戶進(jìn)程數(shù)據(jù)庫寫入進(jìn)程(DBWR) 日志寫入進(jìn)程(LGWR)歸檔進(jìn)程(ARCH) 當(dāng)服務(wù)器以歸檔方式運(yùn)行時(shí)調(diào)用該進(jìn)程完成日志歸檔檢查點(diǎn)進(jìn)程(CKPT) 標(biāo)示檢查點(diǎn),用于減少數(shù)據(jù)庫恢復(fù)的時(shí)間恢復(fù)進(jìn)程(RECO) 用于分布式數(shù)據(jù)庫中的失敗處理鎖進(jìn)程(LCKn) 在并行服務(wù)器模式下確保數(shù)據(jù)的一致性快照進(jìn)程(SNPn) 進(jìn)行快照刷新調(diào)度進(jìn)程(Dnnn) 負(fù)責(zé)把用戶進(jìn)程路由到可用的服務(wù)器進(jìn)程進(jìn)行處理Oracle默認(rèn)的表空間CWMLITE 用于聯(lián)機(jī)分析處理DRSYS 用于存放與工作空間設(shè)置有關(guān)的信息EXAMPLE 實(shí)例表空間,存放實(shí)例信息INDEX 索引表空間SYSTEM 系統(tǒng)表空間,存放表空間名稱,所含數(shù)據(jù)文件等管理信息TEMP 臨時(shí)表空間,存放臨時(shí)表TOOLS 工具表空間存放數(shù)據(jù)庫工具軟件所需的數(shù)據(jù)庫對象,UNDOTBS 回滾表空間,存放數(shù)據(jù)庫恢復(fù)信息USERS 用戶表空間,存放用戶私有信息Oracle數(shù)據(jù)總體結(jié)構(gòu)SQL內(nèi)容數(shù)據(jù)類型SelectInsertintoUpdateDeletefromSQL的構(gòu)成DataDefinitionLanguage(DDL)DataManipulationLanguage(DML)SQL的歷史Intheearly1970s,anIBMresearchfellownamedDr.E.F.Coddendeavoredtoapplytherigorsofmathematicstothethen-untamedworldofdatastorageandretrieval.Amongotherthings,theSystem/RteamdevelopedasimplifiedversionofDSLcalledSQUARE,whichwaslaterrenamedSEQUEL,andfinallyrenamedSQL.Bythemid1980s,SQLhadgatheredsufficientmomentuminthemarketplacetowarrantoversightbytheAmericanNationalStandardsInstitute(ANSI).ANSIreleaseditsfirstSQLstandardin1986,followedbyupdatesin1989,1992,1999,and2003.Therewillundoubtedlybefurtherrefinementsinthefuture.常用Oracle的數(shù)據(jù)類型Char(length)Varchar2(length)DateIntegerNumber(pricision,scale)BINARY_FLOATBINARY_DOUBLE登錄oracleSqlplusscott/tigerSqlpus/nologConnectscott/tiger查閱當(dāng)前方案中表的情況查看系統(tǒng)表結(jié)構(gòu)Descadb_tables;查找當(dāng)前方案中用戶表Selecttable_namefromdba_tableswhereowner=‘方案名’單表查詢select*fromscott.emp;查詢指定字段selectempno,ename,jobfromscott.empDistinct的使用selectdistinctjobfromscott.emp單條件查詢selectempno,ename,jobfromscott.empwherejob='MANAGER‘selectempno,ename,salfromscott.empwheresal<=2500組合條件查詢selectempno,ename,jobfromscott.empwherejob>='CLERK'andsal<=2000selectempno,ename,jobfromscott.empwherejob>='CLERK'orsal<=2000selectempno,ename,jobfromscott.empwherenotjob='CLERK'關(guān)系運(yùn)算符號邏輯運(yùn)算符號排序查找selectempno,ename,jobfromscott.empwherejob<='CLERK'orderbyjobasc,saldesc分組查詢selectempno,ename,job,salfromscott.empgroupbyjob,empno,ename,salhavingsal<=2000selectempno,ename,job,salfromscott.empwheresal<=2000groupbyjob,empno,ename,salHaving只能配合groupby使用字段運(yùn)算查詢selectempno,ename,sal,mgr,sal+mgrfromscott.emp變換查詢顯示selectempno編號,ename姓名,job工作,sal薪水fromscott.emp多表查詢selectemp.empno,emp.ename,emp.deptno,dept.dname,dept.locfromscott.emp,scott.dept;多表關(guān)聯(lián)查詢selectemp.empno,emp.ename,emp.deptno,dept.dname,dept.locfromscott.emp,scott.deptwherescott.emp.deptno=scott.dept.deptno;多表關(guān)聯(lián)條件查詢selectemp.empno,emp.ename,emp.deptno,dept.dname,dept.locfromscott.emp,scott.deptwherescott.emp.deptno!=scott.dept.deptnoandscott.emp.deptno=10;嵌套子查詢簡單嵌套查詢selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>=(selectsalfromscott.empwhereename='WARD');IN嵌套selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresalin(selectsalfromscott.empwhereename='WARD');Any嵌套selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>any(selectsalfromscott.empwherejob='MANAGER');帶some的嵌套[同any]selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal=some(selectsalfromscott.empwherejob='MANAGER');帶all的嵌套selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>all(selectsalfromscott.empwherejob='MANAGER');帶exists的嵌套selectemp.empno,emp.ename,emp.job,emp.salfromscott.emp,scott.deptwhereexists(select*fromscott.empwherescott.emp.deptno=scott.dept.deptno);Union操作(selectdeptnofromscott.emp)union(selectdeptnofromscott.dept);Intersect操作(selectdeptnofromscott.emp)intersect(selectdeptnofromscott.dept);Minus操作(selectdeptnofromscott.dept)minus(selectdeptnofromscott.emp);函數(shù)使用CeilFloorModPowerRoundSignAvgCountMinMaxSumInsertinto單行插入多行插入表間復(fù)制參考提供的代碼數(shù)據(jù)刪除Deletefrom刪除指定記錄刪除全表記錄數(shù)據(jù)更新簡單修改嵌套修改參考提供的代碼Sqlplus的使用執(zhí)行一個(gè)SQL腳本文件startfile_name@file_name

常見命令對當(dāng)前的輸入進(jìn)行編輯Edit重新運(yùn)行上一次運(yùn)行的sql語句/將顯示的內(nèi)容輸出到指定文件SPOOLfile_name關(guān)閉spool輸出SPOOLOFF只有關(guān)閉spool輸出,才會在輸出文件中看到輸出的內(nèi)容COL命令主要格式化列的顯示形式。

該命令有許多選項(xiàng),具體如下:

COL[UMN][{column|expr}[option...]]

Option選項(xiàng)可以是如下的子句:

ALI[AS]alias

CLE[AR]

FOLD_A[FTER]

FOLD_B[EFORE]

FOR[MAT]format

HEA[DING]text

JUS[TIFY]{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}

LIKE{expr|alias}

NEWL[INE]

NEW_V[ALUE]variable

NOPRI[NT]|PRI[NT]

NUL[L]text

OLD_V[ALUE]variable

ON|OFF

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]

Col的使用(1/4)改變?nèi)笔〉牧袠?biāo)題col

LOCheadinglocation將列名ENAME改為新列名EMPLOYEENAME并將新列名放在兩行上:COLUMNENAMEHEADING’Employee|Name’改變列的顯示長度:colenameformata40設(shè)置列標(biāo)題的對齊方式JUS[TIFY]{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}colenamejustifycenter不讓一個(gè)列顯示在屏幕上NOPRI[NT]|PRI[NT]coljobnoprintCol的使用(2/4)格式化NUMBER類型列的顯示:COLUMNSALFORMAT$99,999顯示列值時(shí),如果列值為NULL值,用text值代替NULL值

COMMNUL[L]textCOLCOMMNUL[L]text設(shè)置一個(gè)列的回繞方式

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]SQL>COLCOL1FORMATA5

SQL>COLCOL1WRAPPEDCOLCOL1WORD_WRAPPED顯示列的當(dāng)前的顯示屬性值COLUMNcolumn_name將所有列的顯示屬性設(shè)為缺省值CLEARCOLUMNS

Col的使用(3/4)屏蔽掉一個(gè)列中顯示的相同的值BREAKONbreak_columnBREAKONDEPTNOSELECTDEPTNO,ENAME,SALFROMEMP

WHERESAL<2500ORDERBYDEPTNO;在上面屏蔽掉一個(gè)列中顯示的相同的值的顯示中,每當(dāng)列值變化時(shí)在值變化之前插入n個(gè)空行。BREAKONbreak_columnSKIPnBREAKONDEPTNOSKIP1顯示對BREAK的設(shè)置BREAKCol的使用(4/4)刪除BREAKS的設(shè)置CLEARBREAKS

Set命令該命令包含許多子命令:

SETsystem_variablevalue

system_variablevalue可以是如下的子句之一:

APPI[NFO]{ON|OFF|text}

ARRAY[SIZE]{15|n}

AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}

AUTOP[RINT]{ON|OFF}

AUTORECOVERY[ON|OFF]

AUTOT[RACE]{ON|OFF|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]

BLO[CKTERMINATOR]{.|c}

CMDS[EP]{;|c|ON|OFF}

COLSEP{_|text}

COM[PATIBILITY]{V7|V8|NATIVE}

CON[CAT]{.|c|ON|OFF}

COPYC[OMMIT]{0|n}

COPYTYPECHECK{ON|OFF}

DEF[INE]{&|c|ON|OFF}

DESCRIBE[DEPTH{1|n|ALL}][LINENUM{ON|OFF}][INDENT{ON|OFF}]

ECHO{ON|OFF}

EDITF[ILE]file_name[.ext]

EMB[EDDED]{ON|OFF}

ESC[APE]{|c|ON|OFF}

FEED[BACK]{6|n|ON|OFF}

FLAGGER{OFF|ENTRY|INTERMED[IATE]|FULL}

FLU[SH]{ON|OFF}

HEA[DING]{ON|OFF}

HEADS[EP]{||c|ON|OFF}

INSTANCE[instance_path|LOCAL]

LIN[ESIZE]{80|n}

LOBOF[FSET]{n|1}

LOGSOURCE[pathname]

LONG{80|n}

LONGC[HUNKSIZE]{80|n}

MARK[UP]HTML[ON|OFF][HEADtext][BODYtext][ENTMAP{ON|OFF}][SPOOL

{ON|OFF}][PRE[FORMAT]{ON|OFF}]

NEWP[AGE]{1|n|NONE}

NULLtext

NUMF[ORMAT]format

NUM[WIDTH]{10|n}

PAGES[IZE]{24|n}

PAU[SE]{ON|OFF|text}

RECSEP{WR[APPED]|EA[CH]|OFF}

RECSEPCHAR{_|c}

SERVEROUT[PUT]{ON|OFF}[SIZEn][FOR[MAT]{WRA[PPED]|WOR[D_

WRAPPED]|TRU[NCATED]}]

SHIFT[INOUT]{VIS[IBLE]|INV[ISIBLE]}

SHOW[MODE]{ON|OFF}

SQLBL[ANKLINES]{ON|OFF}

SQLC[ASE]{MIX[ED]|LO[WER]|UP[PER]}

SQLCO[NTINUE]{>|text}

SQLN[UMBER]{ON|OFF}

SQLPRE[FIX]{#|c}

SQLP[ROMPT]{SQL>|text}

SQLT[ERMINATOR]{;|c|ON|OFF}

SUF[FIX]{SQL|text}

TAB{ON|OFF}

TERM[OUT]{ON|OFF}

TI[ME]{ON|OFF}

TIMI[NG]{ON|OFF}

TRIM[OUT]{ON|OFF}

TRIMS[POOL]{ON|OFF}

UND[ERLINE]{-|c|ON|OFF}

VER[IFY]{ON|OFF}

WRA[P]{ON|OFF}

Set的使用1).設(shè)置當(dāng)前session是否對修改的數(shù)據(jù)進(jìn)行自動提交

SQL>SETAUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}

2).在用start命令執(zhí)行一個(gè)sql腳本時(shí),是否顯示腳本中正在執(zhí)行的SQL語句

SQL>SETECHO{ON|OFF}

3).是否顯示當(dāng)前sql語句查詢或修改的行數(shù)

SQL>SETFEED[BACK]{6|n|ON|OFF}

默認(rèn)只有結(jié)果大于6行時(shí)才顯示結(jié)果的行數(shù)。如果setfeedback1,則不管查詢到多少行都返回。當(dāng)為off時(shí),一律不顯示查詢的行數(shù)

4).是否顯示列標(biāo)題

SQL>SETHEA[DING]{ON|OFF}

當(dāng)setheadingoff時(shí),在每頁的上面不顯示列標(biāo)題,而是以空白行代替

5).設(shè)置一行可以容納的字符數(shù)

SQL>SETLIN[ESIZE]{80|n}

如果一行的輸出內(nèi)容大于設(shè)置的一行可容納的字符數(shù),則折行顯示。6).設(shè)置頁與頁之間的分隔

SQL>SETNEWP[AGE]{1|n|NONE}

當(dāng)setnewpage0時(shí),會在每頁的開頭有一個(gè)小的黑方框。

當(dāng)setnewpagen時(shí),會在頁和頁之間隔著n個(gè)空行。

當(dāng)setnewpagenone時(shí),會在頁和頁之間沒有任何間隔。

7).顯示時(shí),用text值代替NULL值

SQL>SETNULLtext

8).設(shè)置一頁有多少行數(shù)

SQL>SETPAGES[IZE]{24|n}

如果設(shè)為0,則所有的輸出內(nèi)容為一頁并且不顯示列標(biāo)題

9).是否顯示用DBMS_OUTPUT.PUT_LINE包進(jìn)行輸出的信息。

SQL>SETSERVEROUT[PUT]{ON|OFF}

在編寫存儲過程時(shí),我們有時(shí)會用dbms_output.put_line將必要的信息輸出,以便對存儲過程進(jìn)行調(diào)試,只有將serveroutput變量設(shè)為on后,信息才能顯示在屏幕上。10).當(dāng)SQL語句的長度大于LINESIZE時(shí),是否在顯示時(shí)截取SQL語句。

SQL>SETWRA[P]{ON|OFF}

當(dāng)輸出的行的長度大于設(shè)置的行的長度時(shí)(用setlinesizen命令設(shè)置),當(dāng)setwrapon時(shí),輸出行的多于的字符會另起一行顯示,否則,會將輸出行的多于字符切除,不予顯示。

11).是否在屏幕上顯示輸出的內(nèi)容,主要用與SPOOL結(jié)合使用。

SQL>SETTERM[OUT]{ON|OFF}

在用spool命令將一個(gè)大表中的內(nèi)容輸出到一個(gè)文件中時(shí),將內(nèi)容輸出在屏幕上會耗費(fèi)大量的時(shí)間,設(shè)置settermspooloff后,則輸出的內(nèi)容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了spool的速度。

12).將SPOOL輸出中每行后面多余的空格去掉

SQL>SETTRIMS[OUT]{ON|OFF}

13)顯示每個(gè)sql語句花費(fèi)的執(zhí)行時(shí)間

setTIMING

{ON|OFF}

14.修改sqlbuffer中的當(dāng)前行中,第一個(gè)出現(xiàn)的字符串

C[HANGE]/old_value/new_value

SQL>l

1*select*fromdept

SQL>c/dept/emp

1*select*fromemp

15.編輯sqlbuffer中的sql語句

EDI[T]

16.顯示sqlbuffer中的sql語句,listn顯示sqlbuffer中的第n行,并使第n行成為當(dāng)前行

L[IST][n]

18.將指定的文本加到sqlbuffer的當(dāng)前行后面

A[PPEND]

SQL>selectdeptno,

2

dname

3

fromdept;SQL>L2

2*dname

SQL>a,loc

2*dname,loc

SQL>L

1

selectdeptno,

2

dname,loc

3*fromdept

19.將sqlbuffer中的sql語句保存到一個(gè)文件中

SAVEfile_name

20.將一個(gè)文件中的sql語句導(dǎo)入到sqlbuffer中

GETfile_name

21.再次執(zhí)行剛才已經(jīng)執(zhí)行的sql語句

RUN或/

22.執(zhí)行一個(gè)存儲過程

EXECUTEprocedure_name

23.在sql*plus中連接到指定的數(shù)據(jù)庫

CONNECTuser_name/passwd@db_alias

24.設(shè)置每個(gè)報(bào)表的頂部標(biāo)題

TTITLE

25.設(shè)置每個(gè)報(bào)表的尾部標(biāo)題

BTITLE

26.寫一個(gè)注釋

REMARK[text]

27.將指定的信息或一個(gè)空行輸出到屏幕上

PROMPT[text]

28.將執(zhí)行的過程暫停,等待用戶響應(yīng)后繼續(xù)執(zhí)行

PAUSE[text]

Sql>PAUSEAdjustpaperandpressRETURNtocontinue.29.將一個(gè)數(shù)據(jù)庫中的一些數(shù)據(jù)拷貝到另外一個(gè)數(shù)據(jù)庫(如將一個(gè)表的數(shù)據(jù)拷貝到另一個(gè)數(shù)據(jù)庫)

COPY{FROMdatabase|TOdatabase|FROMdatabaseTOdatabase}

{APPEND|CREATE|INSERT|REPLACE}destination_table

[(column,column,column,...)]USINGquery

sql>COPYFROMSCOTT/TIGER@HQTOJOHN/CHROME@WEST

createemp_temp

USINGSELECT*FROMEMP

30.不退出sql*plus,在sql*plus中執(zhí)行一個(gè)操作系統(tǒng)命令:

HOST

Sql>hosthostname

該命令在windows下可能被支持。

31.在sql*plus中,切換到操作系統(tǒng)命令提示符下,運(yùn)行操作系統(tǒng)命令后,可以再次切換回sql*plus:

!

sql>!

$hostname

$exit

sql>

該命令在windows下不被支持。32.顯示sql*plus命令的幫助HELP顯示sql*plus系統(tǒng)變量的值或sql*plus環(huán)境變量的值Syntax:SHO[W]optionALL

BTI[TLE]

ERR[ORS][{FUNCTION|PROCEDURE|PACKAGE|PACKAGEBODY|

TRIGGER|VIEW|TYPE|TYPEBODY}[schema.]name]

LNO

PARAMETERS[parameter_name]

PNO

REL[EASE]

REPF[OOTER]

REPH[EADER]

SGA

SPOO[L]

SQLCODE

TTI[TLE]

USER

Show的例子1).顯示當(dāng)前環(huán)境變量的值:

Showall

2).顯示當(dāng)前在創(chuàng)建函數(shù)、存儲過程、觸發(fā)器、包等對象的錯誤信息

Showerror

當(dāng)創(chuàng)建一個(gè)函數(shù)、存儲過程等出錯時(shí),變可以用該命令查看在那個(gè)地方出錯及相應(yīng)的出錯信息,進(jìn)行修改后再次進(jìn)行編譯。

3).顯示初始化參數(shù)的值:

showPARAMETERS[parameter_name]

4).顯示數(shù)據(jù)庫的版本:

showREL[EASE]

5).顯示SGA的大小

showSGA

6).顯示當(dāng)前的用戶名

showuser

PL/Sql數(shù)據(jù)方案對象管理方案對象編程方案對象查看方案對象Oracle的標(biāo)量數(shù)據(jù)類型數(shù)據(jù)表類型創(chuàng)建表CREATETABLE"SCOTT"."DIRECTOR"("DIRECTOR_ID"NUMBER(6)NOTNULL,"NAME"VARCHAR2(10)NOTNULL,"ZHICHENG"VARCHAR2(20)NOTNULL,"ZHIWU"VARCHAR2(20)NOTNULL,CONSTRAINT"導(dǎo)師編號主碼"PRIMARYKEY("DIRECTOR_ID")USINGINDEX);CREATETABLE"SCOTT"."STUDENT"("STUDENT_ID"NUMBER(8)NOTNULL,"NAME"VARCHAR2(10)NOTNULL,"PROFESSIONAL"VARCHAR2(10)NOTNULL,"BIRTHDAY"DATENOTNULL,"DIRECTOR_ID"NUMBER(6)NOTNULL,CONSTRAINT"研究生編號主碼"PRIMARYKEY("STUDENT_ID")USINGINDEX,CONSTRAINT"導(dǎo)師編號外碼"FOREIGNKEY("DIRECTOR_ID")REFERENCES"SCOTT"."DIRECTOR"("DIRECTOR_ID"));修改表修改數(shù)據(jù)類型長度ALTERTABLE"SCOTT"."DIRECTOR"MODIFY("NAME"VARCHAR2(12))修改字段名ALTERTABLE"SCOTT"."DIRECTOR"RENAMECOLUMN"ZHIWU"TO"ZHIWU_1“刪除列ALTERTABLE"SCOTT"."DIRECTOR"DROP("ZHIWU")CASCADECONSTRAINTS添加列ALTERTABLE"SCOTT"."DIRECTOR"ADD("REAMRK"VARCHAR2(10)NOTNULL);插入數(shù)據(jù)INSERTINTO"SCOTT"."DIRECTOR"("DIRECTOR_ID","NAME","ZHICHENG","ZHIWU")VALUES(200201,'張三豐','博導(dǎo)','系主任');INSERTINTO"SCOTT"."DIRECTOR"("DIRECTOR_ID","NAME","ZHICHENG","ZHIWU")VALUES(200202,'張翠山','碩導(dǎo)','室主任');INSERTINTO"SCOTT"."DIRECTOR"("DIRECTOR_ID","NAME","ZHICHENG","ZHIWU")VALUES(200203,'張無忌','碩導(dǎo)','所主任');INSERTINTO"SCOTT"."DIRECTOR"("DIRECTOR_ID","NAME","ZHICHENG","ZHIWU")VALUES(200204,'宋遠(yuǎn)橋','博導(dǎo)','系副主任');查詢數(shù)據(jù)select*fromscott.student;更新數(shù)據(jù)UPDATE"SCOTT"."STUDENT"SETDIRECTOR_ID=200204WHERESTUDENT_ID=20030103;刪除數(shù)據(jù)DELETEFROM"SCOTT"."STUDENT"WHERESTUDENT_ID=20030101;truncatetablescott.directordropstorage;刪除數(shù)據(jù)表DROPTABLESCOTT.DIRECTORCASCADECONSTRAINTS;創(chuàng)建索引CREATEINDEX"SCOTT"."INNN"ON"SCOTT"."BONUS"("JOB")CREATEINDEX"SCOTT"."姓名字段索引"ON"SCOTT"."STUDENT"("NAME")TABLESPACE"INDX"視圖CREATEORREPLACEVIEW"SCOTT"."STUDENT數(shù)據(jù)表視圖"ASselectstudent_id,namefromscott.studentWITHREADONLY查詢視圖select"SCOTT"."STUDENT數(shù)據(jù)表視圖"."STUDENT_ID","SCOTT"."STUDENT數(shù)據(jù)表視圖"."NAME“from"SCOTT"."STUDENT數(shù)據(jù)表視圖"約束條件ALTERTABLE"SCOTT"."STUDENT"ADD(CONSTRAINT"研究生編號檢查約束條件“CHECK(student_id>=20020101andstudent_id<=20030909))測試約束INSERTINTO"SCOTT"."STUDENT"("STUDENT_ID","NAME","PROFESSIONAL","BIRTHDAY","DIRECTOR_ID")VALUES(20010101,'紀(jì)曉芙','軟件工程',TO_DATE('15-7月-1971','dd-Mon-yyyyHH:MI:SSAM'),200201);SQL編程PL/SQL程序結(jié)構(gòu)定義部分程序部分異常處理部分可以省略定義常量declarepiconstantnumber(9):=3.1415926;begincommit;end;基本數(shù)據(jù)類型定義變量語法declareagenumber(3):=26;begincommit;end;復(fù)合數(shù)據(jù)變量%typeDeclaremydatetempuser.testtable.currentdate%type;begincommit;end;記錄類型變量setserveroutputondeclaretypemyrecordisrecord(myrecordnumberint,mycurrentdatedate);srecordmyrecord;beginselect*intosrecordfromtempuser.testtablewhererecordnumber=68;dbms_output.put_line(srecord.mycurrentdate);end;%rowtype%type獲取字段的類型%rowtype獲取記錄的類型Declaremytabletesttable%rowtype;beginselect*intomytablefromtempuser.testtablewhererecordnumber=88;dbms_output.put_line(mytable.currentdate);end;定義一維表類型變量表類型變量與數(shù)據(jù)表是不同的概念:Declaretypetabletype1istableofvarchar2(4)indexbybinary_integer;typetabletype2istableoftempuser.testtable.recordnumber%typeindexbybinary_integer;table1tabletype1;table2tabletype2;begintable1(1):='大學(xué)';table1(2):='大專';table2(1):=88;table2(2):=55;dbms_output.put_line(table1(1)||table2(1));dbms_output.put_line(table1(2)||table2(2));end;多維表類型變量Declaretypetabletype1istableoftesttable%rowtypeindexbybinary_integer;table1tabletype1;beginselect*intotable1(60)fromtempuser.testtablewhererecordnumber=60;dbms_output.put_line(table1(60).recordnumber||table1(60).currentdate);end;表類型變量的屬性setserveroutputonDeclaretypetabletype1istableofvarchar2(9)indexbybinary_integer;table1tabletype1;begintable1(1):='成都市';table1(2):='北京市';table1(3):='青島市';dbms_output.put_line('總記錄數(shù):'||to_char(table1.count));dbms_output.put_line('第一條記錄:'||table1.first);dbms_output.put_line('最后條記錄:'||table1.last);dbms_output.put_line('第二條的前一條記錄:'||table1.prior(2));dbms_output.put_line('第二條的后一條記錄:'||table1.next(2));end;數(shù)值表達(dá)式setserveroutputonDeclareresultinteger;beginresult:=10+3*4-20+5**2;dbms_output.put_line('運(yùn)算結(jié)果是:'||to_char(result));end;字符表達(dá)式||關(guān)系表達(dá)式關(guān)系表達(dá)式與SQL中一樣邏輯表達(dá)式函數(shù)if流程控制setserveroutputondeclarenumber1integer:=90;number2integer:=60;beginifnumber1>=number2thendbms_output.put_line('number1大于等于number2');endif;end;setserveroutputondeclarenumber1integer:=80;number2integer:=90;beginifnumber1>=number2thendbms_output.put_line('number1大于等于number2');elsedbms_output.put_line('number1小于number2');endif;end;setserveroutputondeclarenumber1integer:=80;number2integer:=90;beginifnumber1<=number2thenifnumber1=number2thendbms_output.put_line('number1等于number2');elsedbms_output.put_line('number1小于number2');endif;elsedbms_output.put_line('number1大于number2');endif;end;loopsetserveroutputondeclarenumber1integer:=80;number2integer:=90;iinteger:=0;beginloopnumber1:=number1+1;ifnumber1=number2thenexit;elsei:=i+1;endif;endloop;dbms_output.put_line('共循環(huán)次數(shù):'||to_char(i));end;setserveroutputondeclarenumber1integer:=80;number2integer:=90;iinteger:=0;beginloopnumber1:=number1+1;i:=i+1;exitwhennumber1=number2;endloop;dbms_output.put_line('共循環(huán)次數(shù):'||to_char(i));end;whilesetserveroutputondeclarenumber1integer:=80;number2integer:=90;iinteger:=0;beginwhilenumber1<number2loopnumber1:=number1+1;i:=i+1;endloop;dbms_output.put_line('共循環(huán)次數(shù):'||to_char(i));end;事務(wù)處理事務(wù)的自動提交設(shè)置SetautooffRollbackselect*fromscott.emp;deletefromscott.emp;rollback;Savepoint點(diǎn)insertintoscott.emp(empno,ename,sal)values(9000,'wang',2500);savepointinsertpoint;rollbacktoinsertpoint;游標(biāo)setserveroutputondeclaretempsalscott.emp.sal%type;cursormycursorisselect*fromscott.empwheresal>tempsal;begintempsal:=800;openmycursor;end;打開游標(biāo)提取游標(biāo)數(shù)據(jù)setserveroutputondeclaretempsalscott.emp.sal%type;cursormycursorisselect*fromscott.empwheresal>tempsal;cursorrecordmycursor%rowtype;begintempsal:=800;openmycursor;fetchmycursorintocursorrecord;dbms_output.put_line(to_char(cursorrecord.deptno));end;關(guān)閉游標(biāo)游標(biāo)屬性%isopen屬性setserveroutputondeclaretempsalscott.emp.sal%type;cursormycursorisselect*fromscott.empwheresal>tempsal;cursorrecordmycursor%rowtype;begintempsal:=800;ifmycursor%isopenthenfetchmycursorintocursorrecord;dbms_output.put_line(to_char(cursorrecord.deptno));elsedbms_output.put_line('游標(biāo)沒有打開!');endif;end;%found屬性setserveroutputondeclaretempsalscott.emp.sal%type;cursormycursorisselect*fromscott.empwheresal>tempsal;cursorrecordmycursor%rowtype;begintempsal:=800;openmycursor;fetchmycursorintocursorrecord;ifmycursor%foundthen

溫馨提示

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

最新文檔

評論

0/150

提交評論