版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章數(shù)據(jù)庫(kù)基礎(chǔ)及測(cè)試應(yīng)用支文瑜Winnie_zhi@基本理論數(shù)據(jù)模型Sql語言O(shè)racle基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用測(cè)試本章目標(biāo)數(shù)據(jù)庫(kù)技術(shù)的發(fā)展數(shù)據(jù)庫(kù)基本概念關(guān)系型數(shù)據(jù)庫(kù)非關(guān)系型數(shù)據(jù)庫(kù)一、基本概念數(shù)據(jù)管理技術(shù)的發(fā)展歷程,大體上經(jīng)歷了幾個(gè)階段:人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫(kù)階段分布式數(shù)據(jù)庫(kù)階段數(shù)據(jù)庫(kù)技術(shù)的發(fā)展早期的計(jì)算機(jī)沒有系統(tǒng)軟件的支持,程序員不但要負(fù)責(zé)處理數(shù)據(jù)還要負(fù)責(zé)組織數(shù)據(jù)。這使得程序員直接與物理設(shè)備打交道,從而使程序與物理設(shè)備高度相關(guān),一旦物理存儲(chǔ)發(fā)生變化,程序必須全部修改,程序沒有任何獨(dú)立性。人工管理階段操作系統(tǒng)中的文件系統(tǒng)是專門的數(shù)據(jù)管理軟件,它的出現(xiàn)將程序員從直接與物理設(shè)備打交道的沉重負(fù)擔(dān)中解脫出來。文件系統(tǒng)實(shí)現(xiàn)了按名存取,程序員只要將需要管理的數(shù)據(jù)組織成文件并對(duì)文件命名,以后就可以按文件名邏輯地存取文件中的數(shù)據(jù),不必考慮文件的物理存儲(chǔ),這項(xiàng)工作由文件系統(tǒng)來實(shí)現(xiàn)。數(shù)據(jù)組織成文件后,程序有了較大程度的物理獨(dú)立性,即當(dāng)數(shù)據(jù)的物理存儲(chǔ)發(fā)生某些變化時(shí),不會(huì)引起整個(gè)程序的作廢。但是,文件系統(tǒng)管理數(shù)據(jù)仍有許多缺點(diǎn),主要是數(shù)據(jù)冗余度大和數(shù)據(jù)與程序之間缺乏獨(dú)立性。文件系統(tǒng)階段針對(duì)文件系統(tǒng)的缺點(diǎn),后來出現(xiàn)了數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。與文件系統(tǒng)相比,數(shù)據(jù)庫(kù)技術(shù)是面向系統(tǒng)的,而文件系統(tǒng)則是面向應(yīng)用的。數(shù)據(jù)庫(kù)階段1951:Univac系統(tǒng)使用磁帶和穿孔卡片作為數(shù)據(jù)存儲(chǔ)1956:IBM公司在其Model305RAMAC中第一次引入了磁盤驅(qū)動(dòng)器1961:通用電氣(GE)公司的CharlesBachman開發(fā)了第一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)——IDS1969:E.F.Codd發(fā)明了關(guān)系數(shù)據(jù)庫(kù)。1973:由JohnJ.Cullinane領(lǐng)導(dǎo)Cullinane公司開發(fā)了
IDMS——一個(gè)針對(duì)IBM主機(jī)的基于網(wǎng)絡(luò)模型的數(shù)據(jù)庫(kù)。1976:
Honeywell公司推出了MulticsRelationalDataStore——第一個(gè)商用關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品。1979:
Oracle公司引入了第一個(gè)商用SQL關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。1983:
IBM推出了DB2數(shù)據(jù)庫(kù)產(chǎn)品。1985:為Procter&Gamble系統(tǒng)設(shè)計(jì)的第一個(gè)商務(wù)智能系統(tǒng)產(chǎn)生。1991:
W.H.“Bill”Inmon發(fā)表了”構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)”。數(shù)據(jù)庫(kù)發(fā)展大事記分布式數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)是集中式數(shù)據(jù)系統(tǒng)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的結(jié)合,但并不是簡(jiǎn)單地把集中式數(shù)據(jù)庫(kù)通過網(wǎng)絡(luò)連接構(gòu)成分布式數(shù)據(jù)庫(kù)。分布式數(shù)據(jù)庫(kù)是對(duì)地理上分散的用戶對(duì)數(shù)據(jù)共享的數(shù)據(jù)庫(kù)技術(shù)發(fā)展的成果。分布式數(shù)據(jù)庫(kù)階段數(shù)據(jù)庫(kù)(Database,DB)數(shù)據(jù)庫(kù)系統(tǒng)(DatabaseSystem,DBS)數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,DBMS)數(shù)據(jù)庫(kù)管理員(DatabaseAdministrator,DBA)數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)系統(tǒng)由四部分組成,它們是數(shù)據(jù)庫(kù)、硬件、軟件和人員;數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)源。硬件:支持系統(tǒng)運(yùn)行的計(jì)算機(jī)硬件設(shè)備。包括CPU、內(nèi)存、外存及其它外部設(shè)備。軟件:包括操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)、應(yīng)用開發(fā)工具和應(yīng)用系統(tǒng)。人員:數(shù)據(jù)庫(kù)系統(tǒng)中的主要人員有:數(shù)據(jù)庫(kù)管理員、系統(tǒng)分析員和數(shù)據(jù)庫(kù)設(shè)計(jì)人員、應(yīng)用程序開發(fā)人員和最終用戶。數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,簡(jiǎn)稱DBMS)是提供建立、管理、維護(hù)和控制數(shù)據(jù)庫(kù)功能的一組計(jì)算機(jī)軟件。數(shù)據(jù)庫(kù)管理系統(tǒng)的目標(biāo)是使用戶能夠科學(xué)地組織和存儲(chǔ)數(shù)據(jù),能夠從數(shù)據(jù)庫(kù)中高效地獲得需要的數(shù)據(jù),方便地處理數(shù)據(jù)。如:Oracle、MSSQL、DB2等...數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用程序數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)Oracle,DB2等數(shù)據(jù)1970年E.F.Codd在美國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)刊上發(fā)表了題為“ARelationalModelofDataforSharedDataBanks”的論文,開創(chuàng)了數(shù)據(jù)庫(kù)系統(tǒng)的新紀(jì)元。以后,他連續(xù)發(fā)表了多篇論文,奠定了關(guān)系數(shù)據(jù)庫(kù)的理論基礎(chǔ)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作和關(guān)系完整性約束三部分組成。關(guān)系型數(shù)據(jù)庫(kù)概念:為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。優(yōu)勢(shì):數(shù)據(jù)庫(kù)高并發(fā)讀寫對(duì)海量數(shù)據(jù)的高效存儲(chǔ)和訪問高可擴(kuò)展性和高可用性的需求與關(guān)系型數(shù)據(jù)庫(kù)不同之處:數(shù)據(jù)庫(kù)事務(wù)一致性需求數(shù)據(jù)庫(kù)的寫、讀實(shí)時(shí)性需求對(duì)復(fù)雜的SQL查詢,多關(guān)聯(lián)表查詢非關(guān)系型數(shù)據(jù)庫(kù)NoSQL數(shù)據(jù)庫(kù):Hbase、MongoDB…NoSQL存儲(chǔ):鍵值存儲(chǔ):Redis面向文檔的數(shù)據(jù)庫(kù):MongoDB、CouchDB面向列的數(shù)據(jù)庫(kù):Hbase、
Cassandra非關(guān)系型數(shù)據(jù)庫(kù)概念:restful、postman、json案例:驗(yàn)證插入的數(shù)據(jù)是否正確步驟:插入數(shù)據(jù):POSThttp://ip/record/tablename{"records":[{"test":"abc","id":"10001"}]}Hbase測(cè)試舉例獲取數(shù)據(jù):GET
http://ip/record/tablename?key=10001&column=testHbase測(cè)試舉例數(shù)據(jù)模型實(shí)際上是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。數(shù)據(jù)模型用于信息世界的建模,是現(xiàn)實(shí)世界到信息世界的第一層抽象,是數(shù)據(jù)庫(kù)設(shè)計(jì)人員進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員和用戶之間進(jìn)行交流的語言。在數(shù)據(jù)庫(kù)的發(fā)展史上,主要有三種模型:層次模型網(wǎng)狀模型關(guān)系模型關(guān)系模型是三種模型中最重要的一種數(shù)據(jù)模型,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式,現(xiàn)在流行的數(shù)據(jù)庫(kù)管理系統(tǒng)大都是基于關(guān)系模型的。二、數(shù)據(jù)模型層次模型是一棵倒立的樹。在數(shù)據(jù)庫(kù)中,滿足以下條件的數(shù)據(jù)模型稱之為層次模型:有且僅有一個(gè)結(jié)點(diǎn)無父結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱之為根結(jié)點(diǎn);其他結(jié)點(diǎn)有且僅有一個(gè)父結(jié)點(diǎn)。層次模型在現(xiàn)實(shí)世界中,事物之間的聯(lián)系更多的是非層次關(guān)系的,用層次模型表示非樹型結(jié)構(gòu)是很不直接的,所以網(wǎng)狀模型則可以克服這一問題。在數(shù)據(jù)庫(kù)中,滿足以下兩個(gè)條件的數(shù)據(jù)模型稱為網(wǎng)狀模型。允許一個(gè)以上的結(jié)點(diǎn)無父結(jié)點(diǎn);一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的父結(jié)點(diǎn)。從以上定義看出,網(wǎng)狀模型構(gòu)成了比層次結(jié)構(gòu)復(fù)雜的網(wǎng)狀結(jié)構(gòu)。網(wǎng)狀模型關(guān)系數(shù)據(jù)庫(kù)采用關(guān)系模型作為數(shù)據(jù)的組織方式。關(guān)系數(shù)據(jù)庫(kù)因其嚴(yán)格的數(shù)學(xué)理論、使用簡(jiǎn)單靈活、數(shù)據(jù)獨(dú)立性強(qiáng)等特點(diǎn),而被公認(rèn)為最有前途的一種數(shù)據(jù)庫(kù)管理系統(tǒng)。它的發(fā)展十分迅速,目前已成為占據(jù)主導(dǎo)地位的數(shù)據(jù)庫(kù)管理系統(tǒng)。自20世紀(jì)80年代以來,作為商品推出的數(shù)據(jù)庫(kù)管理系統(tǒng)幾乎都是關(guān)系型的,例如,Oracle,Sybase,Informix,VisualFoxPro,mysql,sqlserver等。關(guān)系模型概念:符合某一種級(jí)別的關(guān)系模式的集合。1、第一范式(1NF):每一個(gè)列(屬性)只有一個(gè),沒有重復(fù)。
2、第二范式(2NF):滿足第一范式,屬性完全依賴于主關(guān)鍵字。舉例:未到第一范式:create學(xué)生(姓名,性別年齡)----(因?yàn)樾詣e年齡列包括了兩個(gè)屬性)未到第二范式:create學(xué)生(姓名,性別,年齡,語文老師名)
--(因?yàn)槔蠋熈胁皇峭耆瘮?shù)依賴于主鍵碼)關(guān)系模式結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)簡(jiǎn)稱SQL,結(jié)構(gòu)化查詢語言是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng);同時(shí)也是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。結(jié)構(gòu)化查詢語言是高級(jí)的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng),可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能。三、Sql語言1.概念模式(又稱邏輯模式)2.外模式(也稱子模式或用戶模式)3.內(nèi)模式(也稱存儲(chǔ)模式)SQL三級(jí)模式SQL是1986年10月由美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)通過的數(shù)據(jù)庫(kù)語言美國(guó)標(biāo)準(zhǔn),接著,國(guó)際標(biāo)準(zhǔn)化組織(ISO)頒布了SQL正式國(guó)際標(biāo)準(zhǔn)。1989年4月,ISO提出了具有完整性特征的SQL89標(biāo)準(zhǔn),1992年11月又公布了SQL92標(biāo)準(zhǔn),在此標(biāo)準(zhǔn)中,把數(shù)據(jù)庫(kù)分為三個(gè)級(jí)別:基本集、標(biāo)準(zhǔn)集和完全集。SQL語言標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言包含6個(gè)部分:數(shù)據(jù)定義語言(DDL:DataDefinitionLanguage)數(shù)據(jù)操作語言(DML:DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL:DataQueryLanguage)事務(wù)處理語言(TPL:TransactionProcessingLanguage)數(shù)據(jù)控制語言(DCL:Data
Control
Language)指針控制語言(CCL:CursorControl
Language)SQL語句結(jié)構(gòu)數(shù)據(jù)定義語言包括動(dòng)詞CREATE和DROP。在數(shù)據(jù)庫(kù)中創(chuàng)建新表或刪除表(CREATTABLE或DROPTABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫(kù)目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動(dòng)作查詢的一部分。數(shù)據(jù)定義語言CREATETABLEtable_name(column_name1type,column_name2type,column_name3type,...)CREATETABLE語句創(chuàng)建一個(gè)員工表(emp),表結(jié)構(gòu)如下:練習(xí)員工編號(hào)員工姓名所屬部門崗位名稱入職日期月薪工資月度獎(jiǎng)金備注EIDNameDeptJobHireDateSalaryCommRemarkNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)Varchar2(50)Createtableemp(EIDNumber(4),NameVarchar2(10),DeptVarchar2(10),JobVarchar2(10),HireDateDate,SalaryNumber(11,2),CommNumber(11,2),RemarkVarchar2(10))數(shù)據(jù)操作語言包括動(dòng)詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動(dòng)作查詢語言。數(shù)據(jù)操作語言INSERT
[INTO]table_name[colunm_list]VALUES(data_values)示例:Insertinto數(shù)據(jù)表名(字段1,字段2…)values(值1,值2…)Insertinto數(shù)據(jù)表名select*from源數(shù)據(jù)表(把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)INSERT語句在員工表(emp)中插入記錄,表結(jié)構(gòu)如下:?jiǎn)T工編號(hào)員工姓名所屬部門崗位名稱入職日期月薪工資月度獎(jiǎng)金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長(zhǎng)2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項(xiàng)目經(jīng)理2015-01-01500,000.000練習(xí)Insertintoempvalues(01,’01’,’總裁辦’,’CEO’,to_date(‘2015-01-01’,’yyyy-mm-dd’),null,50,000,000.00,null)UPDATEtable_nameSETcolumn_name1=expression,[column_name2=expression,[...]][WHEREsearch_conditions]示例:Update數(shù)據(jù)表set字段名=字段值where條件表達(dá)式Update數(shù)據(jù)表set字段1=值1,字段2=值2…字段n=值nwhere條件表達(dá)式UPDATE語句在員工表(emp)中修改孔明的獎(jiǎng)金為100.00,如下:?jiǎn)T工編號(hào)員工姓名所屬部門崗位名稱入職日期月薪工資月度獎(jiǎng)金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長(zhǎng)2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項(xiàng)目經(jīng)理2015-01-01500,000.000練習(xí)UpdateempsetComm=100.00whereName=‘孔明’DELETE[FROM]table_name[WHEREsearch_conditions]示例:Deletefrom數(shù)據(jù)表where條件表達(dá)式Deletefrom數(shù)據(jù)表(刪除數(shù)據(jù)表所有記錄)DELETE語句在員工表(emp)中刪除張飛,如下:?jiǎn)T工編號(hào)員工姓名所屬部門崗位名稱入職日期月薪工資月度獎(jiǎng)金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長(zhǎng)2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項(xiàng)目經(jīng)理2015-01-01500,000.000練習(xí)DeletefromempwhereName=‘張飛’數(shù)據(jù)查詢語言也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動(dòng)詞,其他DQL常用的保留字有WHERE,ORDERBY,GROUPBY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。數(shù)據(jù)查詢語言SELECT[DISTINCT]colunm_list[INTOnew_table]FROMtable_name[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]示例:Select
*from數(shù)據(jù)表where字段名=字段值orderby字段名descSelect
*from數(shù)據(jù)表where字段名like’%字段值%’orderby字段名ascSelect
top10*from數(shù)據(jù)表where字段名=字段值orderby字段名ascSelect
top10*from數(shù)據(jù)表orderby字段名descSelect
*from數(shù)據(jù)表where字段名in(‘值1’,‘值2’,‘值3’)Select
*from數(shù)據(jù)表where字段名between值1and值2SELECT語句Distinct這個(gè)關(guān)鍵字用來過濾重復(fù)記錄,只保留一條。事務(wù)處理語言能確保被DML語句影響的表的所有行及時(shí)得以更新。TPL語句包括:BEGINTRANSACTION
開始事務(wù)COMMIT
TRANSACTION
提交事務(wù)ROLLBACK
TRANSACTION
想取消,回滾事務(wù)事務(wù)處理語言數(shù)據(jù)控制語言通過GRANT或REVOKE獲得許可,確定單個(gè)用戶和用戶組對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問。某些RDBMS可用GRANT或REVOKE控制對(duì)表單個(gè)列的訪問。數(shù)據(jù)控制語言指針控制語言,如DECLARECURSOR,F(xiàn)ETCHINTO和UPDATEWHERECURRENT用于對(duì)一個(gè)或多個(gè)表單獨(dú)行的操作。**Cursor(游標(biāo))是一個(gè)記錄表示,用于一行一行迭代的訪問查詢返回的結(jié)果示例:DECLAREcursor_nameCURSORFORselect_statement該語句聲明一個(gè)游標(biāo)。可以在子程序中定義多個(gè)游標(biāo),但是一個(gè)塊中的每一個(gè)游標(biāo)必須有唯一的名字。聲明游標(biāo)后也是單條操作,但不能用select語句,不能有INTO子句。FETCHcursor_nameINTOvar_name[,var_name]…這個(gè)語句用指定的打開游標(biāo)讀取下一行,并前進(jìn)游標(biāo)指針。指針控制語言CREATEVIEWview_nameASSELECTcolumn_name(s)FROMtable_nameWHEREconditionCREATEVIEW語句AVGCOUNTMAXMINSUMMIDLEN..SQL函數(shù)實(shí)例1:在“orders”表中,查找訂單總額少于2000的客戶SelectCustomer,sum(OrderPrice)FromordersGROUPBYCustomerHAVINGSUM(OrderPrice)<2000實(shí)例2:在“orders”表中,查找客戶“Bush”或“Adams”超過1500的訂單總金額SelectCustomer,SUM(OrderPrice)FromordersWhereCustomer=‘Bush’ORCustomer=‘Adams’GroupbyCustomerHAVINGSUM(OrderPrice)>1500練習(xí)JOIN:用于多表間關(guān)聯(lián)字段的數(shù)據(jù)查詢。舉例:表TV_SERIES(T)SQL高級(jí)TVnameNameTheBigBangTheoryJohnTheBigBangTheoryMaryTheITCrowdJohnSherlockJimNameDistrictJohnPudongJimHuangpu表District(D)列出看美劇的同學(xué)名字,來自于哪個(gè)地區(qū)?SELECTT.Tvname,T.Name,D.DistrictFROMTINNERJOINDONT.Name=D.NameSQL高級(jí)TVnameNameDistrictTheBigBangTheoryJohnPudongTheITCrowdJohnPudongSherlockJimHuangpuCARD聽課證:CNO課程號(hào),SNO學(xué)號(hào),NAME姓名,CLASS班級(jí);INSERTINTOCARD(CNO,NAME,CLASS)VALUES('C0001',‘S1’,'Mary','B'),('C0001',‘S2’,'John','B'),('C0003',‘S3’,'Jim','A')COURSE課程:CNO課程號(hào),CNAME課程名,TEACHER上課老師,DATE上課日期INSERTINTOCOURSE(CNO,CNAME,TEACHER,DATE)VALUES(‘C0001’,'MATHS','HUANG','20150701'),(‘C0002’,'ENG','LI','20150601'),(‘C0003’,'CHINA','ZHOU','20150801')練習(xí)題目:1.將Mary的CLASS改為‘C’2.查詢John聽課情況,輸出課程名,上課老師以及上課日期3.統(tǒng)計(jì)MATHS課程學(xué)生人數(shù),輸出學(xué)生數(shù)量STUDENT_NUM練習(xí)答案:1.將Mary的CLASS改為‘C’UPDATECARDSETCLASS='C'WHEREName='Mary'2.查詢John聽課情況,輸出課程名,上課老師以及上課日期SELECTCNAME,TEACHER,DATEFROMCARD,COURSEWHERECARD.CNO=COURSE.CNO練習(xí)答案:3.統(tǒng)計(jì)MATHS課程學(xué)生人數(shù),輸出學(xué)生數(shù)量STUDENT_NUMSELECTCOUNT(SNO)ASSTUDENT_NUMFROMCARDINNERJOINCOURSEONCARD.CNO=COURSE.CNOANDCNAME='MATHS‘結(jié)果顯示:練習(xí)STUDENT_NUM2char(n)n=[1to2000]字節(jié);Varchar2(n)n=[1to4000]字節(jié);Number(m,n)m=[1to38],n=[-84to127]如:number(5,2),輸入123.128,則這個(gè)字段的最大值為99999,超出則以四舍五入方式截?cái)?,得?23.13;Date缺省格式為DD-MON-YY,如:11-07-15表示2015年7月11日;Blob:三種大型對(duì)象(LOB),保存較大圖形文件或帶格式的文本文件,如:Word,視頻等非文本文件Oracle基本數(shù)據(jù)類型概念:與oracle交互的客戶端工具,運(yùn)行sql*plus命令和sql語句。作用:數(shù)據(jù)庫(kù)維護(hù),啟動(dòng)(startup)、關(guān)閉(shutdown);執(zhí)行sql語句;執(zhí)行sql腳本,如:SQL>startfile_name
SQL>@file_name用戶管理和權(quán)限維護(hù)Sqlplus基礎(chǔ)Sqlplus運(yùn)行案例建表插入數(shù)據(jù)顯示表結(jié)構(gòu)查詢數(shù)據(jù)修改字段值刪除行刪除表Sqlplus練習(xí)函數(shù),在某變化過程中有兩個(gè)變量x,y,如果對(duì)于x在某一范圍內(nèi)的每一個(gè)確定的值,y都有唯一確定的值與它對(duì)應(yīng),那么就稱y是x的函數(shù),x叫自變量。函數(shù)根據(jù)傳遞給它的參數(shù)進(jìn)行運(yùn)算,并返回運(yùn)算結(jié)果。函數(shù)一般形式:函數(shù)名(參數(shù)1,參數(shù)2,…)參數(shù)是傳遞給函數(shù)的數(shù)據(jù)。如:Power(3,2)是函數(shù),用于計(jì)算3的2次方,3和2都是參數(shù)。Oracle基本函數(shù)操作對(duì)象:?jiǎn)涡泻瘮?shù)多行函數(shù)操作的數(shù)據(jù)類型(返回結(jié)果的類型)字符函數(shù)數(shù)字函數(shù)日期函數(shù)轉(zhuǎn)換函數(shù)通用函數(shù)Oracle函數(shù)類型SINGLEROWMULTIROWFUNCTION字符函數(shù)數(shù)字函數(shù)日期函數(shù)轉(zhuǎn)換函數(shù)單行函數(shù)LOWER 轉(zhuǎn)換為小寫形式UPPER 轉(zhuǎn)換為大寫形式INITCAP 轉(zhuǎn)換為首字母大寫形式CONCAT 連接函數(shù)SUBSTR 返回子串LENGTH 返回字符長(zhǎng)度NVL 轉(zhuǎn)換一個(gè)空值字符函數(shù)轉(zhuǎn)換字符串的大小寫LOWER('SQLCourse') sqlcourseUPPER('SQLCourse') SQLCOURSEINITCAP('sql
course') SqlCourse轉(zhuǎn)換大小寫函數(shù)操縱字符串CONCAT(‘Good’,‘String’) GoodString字符連接函數(shù),等同于||SUBSTR(‘String’,1,3) Str求母串中的某個(gè)子串LENGTH(‘String’) 6求字符串長(zhǎng)度(字節(jié)數(shù))字符操作函數(shù)ROUND 按照指定的精度進(jìn)行舍入TRUNC 按照指定的精度進(jìn)行截?cái)郙OD 返回余數(shù)數(shù)字函數(shù)ROUND(45.923,3) 45.923四舍五入ROUND(45.923,2) 45.92ROUND(45.923,0) 46ROUND(45.923,-1) 50ROUND(45.923,-2) 0TRUNC(45.923,4) 45.923截?cái)郥RUNC(45.923,3) 45.923TRUNC(45.923,2) 45.92TRUNC(45.923) 45TRUNC(45.923,-1) 40TRUNC(45.923,-2) 0ROUND和TRUNC函數(shù)使用MOD函數(shù)可以得出一個(gè)數(shù)除以另一個(gè)數(shù)所得的余數(shù).MOD(1600,300) 100
1600/3=5余100MOD函數(shù)MONTHS_BETWEEN 兩個(gè)日期間的月ADD_MONTHS 加月份到一個(gè)日期上NEXT_DAY 指定日期的第二天LAST_DAY 某月的最后一天的日期ROUND 日期舍入到半夜TRUNC 從日期中去除部分時(shí)間日期函數(shù)MONTHS_BETWEEN(‘11-SEP-95','11-JAN-95') 8ADD_MONTHS('11-JAN-94',6) '11-JUL-94'NEXT_DAY(‘01-SEP-95’,‘FRIDAY’) '08-SEP-95'LAST_DAY(‘01-SEP-95’) '30-SEP-95'ROUND('25-MAY-95','MONTH') 01-JUN-95ROUND('25-MAY-95','YEAR') 01-JAN-95TRUNC('25-MAY-95','MONTH') 01-MAY-95TRUNC('25-MAY-95','YEAR') 01-JAN-95日期函數(shù)TO_CHAR轉(zhuǎn)換一個(gè)數(shù)字或日期串到一個(gè)字符串TO_NUMBER轉(zhuǎn)換一個(gè)字符串到一個(gè)數(shù)字TO_DATE轉(zhuǎn)換一個(gè)字符串到一個(gè)日期轉(zhuǎn)換函數(shù)語法格式一:TO_CHAR(date,'format')將日期date按指定格式轉(zhuǎn)換為VATCHAR2類型字符串。必須放置在單引號(hào)中且是區(qū)分大小寫的;可以包含任意可用的有效的日期格式元素;可用一個(gè)參數(shù)刪除數(shù)字前的空格或零值;日期之間用逗號(hào)隔開。TO_CHAR函數(shù)語法格式二:TO_CHAR(number,'format')將數(shù)字按指定格式轉(zhuǎn)換為VATCHAR2類型字符串。TO_CHAR函數(shù)YYYY 表示完整的年份的數(shù)字表示。YEAR 表示年份的英文拼寫。MM 表示兩位表示的月份。MONTH 表示月的全名。DY 表示星期的三個(gè)字母的縮寫。DAY 表示日期的全拼。日期格式元素時(shí)間元素格式化日期中的時(shí)間部分HH24:MI:SSAM 15:45:32PM通過使用雙引號(hào)添加字符串DD"of"MONTH 12ofOCTOBER日期格式元素把全為數(shù)字的字符串轉(zhuǎn)換為數(shù)字格式,使用TO_NUMBER函數(shù);語法格式:TO_NUMBER(char)把日期格式的字符串轉(zhuǎn)換為日期格式,使用TO_DATE函數(shù);語法格式:TO_DATE(char[,'fmt'])TO_NUMBER和TO_DATE函數(shù)nvl(exp1,exp2):當(dāng)exp1為空時(shí),返回exp2
nvl2(exp1,exp2,exp3):當(dāng)exp1為空時(shí),返回exp3;否則返回exp2NULLIF
(expr1,
expr2),如果expr1=expr2,返回null;否則,返回expr1
示例:NVL(1+1,2+2)2非null不替換NVL(NULL,2+2)4Null則替換
Nvl函數(shù)selectlower(‘HelloWorld’)fromdual;selectinitcap('helloworld')fromdual;selectconcat('Hello','World')fromdual;selectsubstr('HelloWorld',3)fromdual;selectsubstr('HelloWorld',3,4)fromdual;selectlength('China'),lengthb('China')
fromdual;selectinstr('HelloWorld',‘el')fromdual;selectlpad('abcd',10,'*'),rpad('abcd',10,'*')
fromdual;單行函數(shù)總結(jié)selecttrim('H'from'HelloWorldH')fromdual;fromdual;selectreplace('HelloWordl','l','*')fromdual;selectround(45.926,2),trunc(45.926,2)
,mod(1600,300)
fromdual;select(-1)sysdate(+1)fromdual;selectlast_day(sysdate)fromdual;selectnext_day(sysdate,'星期五')fromdual;selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss"今天是"day')fromdual;單行函數(shù)總結(jié)和單行函數(shù)相比,Oracle提供了豐富的基于組的,多行的函數(shù)。這些函數(shù)能在Select或Select的Having子句中使用,當(dāng)用于Select子串時(shí)常常都和GROUPBY一起使用。多行函數(shù)的特征是接收多個(gè)輸入,返回一個(gè)輸出。多行函數(shù)AVG([DISTINCT|ALL]n)COUNT({*|[DISTINCT|ALL]expr})MAX([DISTINCT|ALL]expr)MIN([DISTINCT|ALL]expr)SUM([DISTINCT|ALL]n)聚合函數(shù)概念:將一個(gè)數(shù)據(jù)集合劃分成若干個(gè)“小區(qū)域”,然后針對(duì)若干個(gè)“小區(qū)域”進(jìn)行數(shù)據(jù)處理。Groupbyselect類別,sum(數(shù)量)as數(shù)量之和fromAgroupby類別Groupby和聚合函數(shù)求各組平均值select類別,avg(數(shù)量)AS平均值fromAgroupby類別求各組記錄數(shù)目select類別,count(*)AS記錄數(shù)fromAgroupby類別where子句的作用是在對(duì)查詢結(jié)果進(jìn)行分組前,將不符合where條件的行去掉,即在分組之前過濾數(shù)據(jù),where條件中不能包含聚組函數(shù),使用where條件過濾出特定的行。having子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),使用having條件過濾出特定的組,也可以使用多個(gè)分組標(biāo)準(zhǔn)進(jìn)行分組。Having與WhereHaving求總數(shù)大于18的類別
select類別,sum(數(shù)量)as數(shù)量之和fromAgroupby類別havingsum(數(shù)量)>18三種備份方法:1.導(dǎo)入(IMP),導(dǎo)出(EXP)(邏輯)2.熱備份(物理)3.冷備份(物理)Oracle庫(kù)備份1.簡(jiǎn)單導(dǎo)出備份:(1)、表方式(T方式),將指定表的數(shù)據(jù)導(dǎo)出。(2)、用戶方式(U方式),將指定用戶的所有對(duì)象及數(shù)據(jù)導(dǎo)出。(3)、全庫(kù)方式(Full方式),將數(shù)據(jù)庫(kù)中的所有對(duì)象導(dǎo)出。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度天津市公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師通關(guān)試題庫(kù)(有答案)
- 無水醋酸鈉項(xiàng)目建議書寫作參考范文
- 2024年度四川省公共營(yíng)養(yǎng)師之四級(jí)營(yíng)養(yǎng)師典型題匯編及答案
- 2024年度四川省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師題庫(kù)練習(xí)試卷B卷附答案
- 2025年金屬表面處理設(shè)備項(xiàng)目可行性研究報(bào)告
- 2023-2028年中國(guó)酵母硒行業(yè)市場(chǎng)深度分析及投資策略咨詢報(bào)告
- 無水醋酸鈉亞氨基二乙項(xiàng)目可行性研究報(bào)告
- 2025年錨鑄件項(xiàng)目可行性研究報(bào)告
- 光電廣告行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 河南大氣污染治理設(shè)備項(xiàng)目可行性研究報(bào)告
- 2024午托承包合同-校園內(nèi)學(xué)生午休服務(wù)協(xié)議3篇
- 馬克思主義基本原理+2024秋+試題 答案 國(guó)開
- 蘇州大學(xué)《線性代數(shù)與解析幾何》2023-2024學(xué)年第一學(xué)期期末試卷
- 《地震災(zāi)害及其防治》課件
- 2024年版電商平臺(tái)入駐商家服務(wù)與銷售分成合同
- 蜜雪冰城合同范例
- 小紅書種草營(yíng)銷師(初級(jí))認(rèn)證考試真題試題庫(kù)(含答案)
- LPG液化氣充裝站介質(zhì)分析操作規(guī)程 202412
- 養(yǎng)老院環(huán)境衛(wèi)生保潔方案
- 2024年WPS計(jì)算機(jī)二級(jí)考試題庫(kù)350題(含答案)
- 2024年5G網(wǎng)絡(luò)覆蓋工程分包合同
評(píng)論
0/150
提交評(píng)論