




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章數(shù)據(jù)庫基礎(chǔ)及測試應(yīng)用支文瑜Winnie_zhi@基本理論數(shù)據(jù)模型Sql語言O(shè)racle基礎(chǔ)數(shù)據(jù)庫應(yīng)用測試本章目標(biāo)數(shù)據(jù)庫技術(shù)的發(fā)展數(shù)據(jù)庫基本概念關(guān)系型數(shù)據(jù)庫非關(guān)系型數(shù)據(jù)庫一、基本概念數(shù)據(jù)管理技術(shù)的發(fā)展歷程,大體上經(jīng)歷了幾個階段:人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫階段分布式數(shù)據(jù)庫階段數(shù)據(jù)庫技術(shù)的發(fā)展早期的計算機(jī)沒有系統(tǒng)軟件的支持,程序員不但要負(fù)責(zé)處理數(shù)據(jù)還要負(fù)責(zé)組織數(shù)據(jù)。這使得程序員直接與物理設(shè)備打交道,從而使程序與物理設(shè)備高度相關(guān),一旦物理存儲發(fā)生變化,程序必須全部修改,程序沒有任何獨立性。人工管理階段操作系統(tǒng)中的文件系統(tǒng)是專門的數(shù)據(jù)管理軟件,它的出現(xiàn)將程序員從直接與物理設(shè)備打交道的沉重負(fù)擔(dān)中解脫出來。文件系統(tǒng)實現(xiàn)了按名存取,程序員只要將需要管理的數(shù)據(jù)組織成文件并對文件命名,以后就可以按文件名邏輯地存取文件中的數(shù)據(jù),不必考慮文件的物理存儲,這項工作由文件系統(tǒng)來實現(xiàn)。數(shù)據(jù)組織成文件后,程序有了較大程度的物理獨立性,即當(dāng)數(shù)據(jù)的物理存儲發(fā)生某些變化時,不會引起整個程序的作廢。但是,文件系統(tǒng)管理數(shù)據(jù)仍有許多缺點,主要是數(shù)據(jù)冗余度大和數(shù)據(jù)與程序之間缺乏獨立性。文件系統(tǒng)階段針對文件系統(tǒng)的缺點,后來出現(xiàn)了數(shù)據(jù)庫技術(shù)。數(shù)據(jù)庫(Database,簡稱DB)是長期存儲在計算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。與文件系統(tǒng)相比,數(shù)據(jù)庫技術(shù)是面向系統(tǒng)的,而文件系統(tǒng)則是面向應(yīng)用的。數(shù)據(jù)庫階段1951:Univac系統(tǒng)使用磁帶和穿孔卡片作為數(shù)據(jù)存儲1956:IBM公司在其Model305RAMAC中第一次引入了磁盤驅(qū)動器1961:通用電氣(GE)公司的CharlesBachman開發(fā)了第一個數(shù)據(jù)庫管理系統(tǒng)——IDS1969:E.F.Codd發(fā)明了關(guān)系數(shù)據(jù)庫。1973:由JohnJ.Cullinane領(lǐng)導(dǎo)Cullinane公司開發(fā)了
IDMS——一個針對IBM主機(jī)的基于網(wǎng)絡(luò)模型的數(shù)據(jù)庫。1976:
Honeywell公司推出了MulticsRelationalDataStore——第一個商用關(guān)系數(shù)據(jù)庫產(chǎn)品。1979:
Oracle公司引入了第一個商用SQL關(guān)系數(shù)據(jù)庫管理系統(tǒng)。1983:
IBM推出了DB2數(shù)據(jù)庫產(chǎn)品。1985:為Procter&Gamble系統(tǒng)設(shè)計的第一個商務(wù)智能系統(tǒng)產(chǎn)生。1991:
W.H.“Bill”Inmon發(fā)表了”構(gòu)建數(shù)據(jù)倉庫”。數(shù)據(jù)庫發(fā)展大事記分布式數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)是集中式數(shù)據(jù)系統(tǒng)技術(shù)和計算機(jī)網(wǎng)絡(luò)技術(shù)的結(jié)合,但并不是簡單地把集中式數(shù)據(jù)庫通過網(wǎng)絡(luò)連接構(gòu)成分布式數(shù)據(jù)庫。分布式數(shù)據(jù)庫是對地理上分散的用戶對數(shù)據(jù)共享的數(shù)據(jù)庫技術(shù)發(fā)展的成果。分布式數(shù)據(jù)庫階段數(shù)據(jù)庫(Database,DB)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)數(shù)據(jù)庫管理員(DatabaseAdministrator,DBA)數(shù)據(jù)庫基本概念數(shù)據(jù)庫系統(tǒng)由四部分組成,它們是數(shù)據(jù)庫、硬件、軟件和人員;數(shù)據(jù)庫:數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)源。硬件:支持系統(tǒng)運行的計算機(jī)硬件設(shè)備。包括CPU、內(nèi)存、外存及其它外部設(shè)備。軟件:包括操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用開發(fā)工具和應(yīng)用系統(tǒng)。人員:數(shù)據(jù)庫系統(tǒng)中的主要人員有:數(shù)據(jù)庫管理員、系統(tǒng)分析員和數(shù)據(jù)庫設(shè)計人員、應(yīng)用程序開發(fā)人員和最終用戶。數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,簡稱DBMS)是提供建立、管理、維護(hù)和控制數(shù)據(jù)庫功能的一組計算機(jī)軟件。數(shù)據(jù)庫管理系統(tǒng)的目標(biāo)是使用戶能夠科學(xué)地組織和存儲數(shù)據(jù),能夠從數(shù)據(jù)庫中高效地獲得需要的數(shù)據(jù),方便地處理數(shù)據(jù)。如:Oracle、MSSQL、DB2等...數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫系統(tǒng)應(yīng)用程序數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫Oracle,DB2等數(shù)據(jù)1970年E.F.Codd在美國計算機(jī)學(xué)會會刊上發(fā)表了題為“ARelationalModelofDataforSharedDataBanks”的論文,開創(chuàng)了數(shù)據(jù)庫系統(tǒng)的新紀(jì)元。以后,他連續(xù)發(fā)表了多篇論文,奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作和關(guān)系完整性約束三部分組成。關(guān)系型數(shù)據(jù)庫概念:為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。優(yōu)勢:數(shù)據(jù)庫高并發(fā)讀寫對海量數(shù)據(jù)的高效存儲和訪問高可擴(kuò)展性和高可用性的需求與關(guān)系型數(shù)據(jù)庫不同之處:數(shù)據(jù)庫事務(wù)一致性需求數(shù)據(jù)庫的寫、讀實時性需求對復(fù)雜的SQL查詢,多關(guān)聯(lián)表查詢非關(guān)系型數(shù)據(jù)庫NoSQL數(shù)據(jù)庫:Hbase、MongoDB…NoSQL存儲:鍵值存儲:Redis面向文檔的數(shù)據(jù)庫:MongoDB、CouchDB面向列的數(shù)據(jù)庫:Hbase、
Cassandra非關(guān)系型數(shù)據(jù)庫概念:restful、postman、json案例:驗證插入的數(shù)據(jù)是否正確步驟:插入數(shù)據(jù):POSThttp://ip/record/tablename{"records":[{"test":"abc","id":"10001"}]}Hbase測試舉例獲取數(shù)據(jù):GET
http://ip/record/tablename?key=10001&column=testHbase測試舉例數(shù)據(jù)模型實際上是現(xiàn)實世界到機(jī)器世界的一個中間層次。數(shù)據(jù)模型用于信息世界的建模,是現(xiàn)實世界到信息世界的第一層抽象,是數(shù)據(jù)庫設(shè)計人員進(jìn)行數(shù)據(jù)庫設(shè)計的有力工具,也是數(shù)據(jù)庫設(shè)計人員和用戶之間進(jìn)行交流的語言。在數(shù)據(jù)庫的發(fā)展史上,主要有三種模型:層次模型網(wǎng)狀模型關(guān)系模型關(guān)系模型是三種模型中最重要的一種數(shù)據(jù)模型,關(guān)系數(shù)據(jù)庫系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式,現(xiàn)在流行的數(shù)據(jù)庫管理系統(tǒng)大都是基于關(guān)系模型的。二、數(shù)據(jù)模型層次模型是一棵倒立的樹。在數(shù)據(jù)庫中,滿足以下條件的數(shù)據(jù)模型稱之為層次模型:有且僅有一個結(jié)點無父結(jié)點,這個結(jié)點稱之為根結(jié)點;其他結(jié)點有且僅有一個父結(jié)點。層次模型在現(xiàn)實世界中,事物之間的聯(lián)系更多的是非層次關(guān)系的,用層次模型表示非樹型結(jié)構(gòu)是很不直接的,所以網(wǎng)狀模型則可以克服這一問題。在數(shù)據(jù)庫中,滿足以下兩個條件的數(shù)據(jù)模型稱為網(wǎng)狀模型。允許一個以上的結(jié)點無父結(jié)點;一個結(jié)點可以有多于一個的父結(jié)點。從以上定義看出,網(wǎng)狀模型構(gòu)成了比層次結(jié)構(gòu)復(fù)雜的網(wǎng)狀結(jié)構(gòu)。網(wǎng)狀模型關(guān)系數(shù)據(jù)庫采用關(guān)系模型作為數(shù)據(jù)的組織方式。關(guān)系數(shù)據(jù)庫因其嚴(yán)格的數(shù)學(xué)理論、使用簡單靈活、數(shù)據(jù)獨立性強(qiáng)等特點,而被公認(rèn)為最有前途的一種數(shù)據(jù)庫管理系統(tǒng)。它的發(fā)展十分迅速,目前已成為占據(jù)主導(dǎo)地位的數(shù)據(jù)庫管理系統(tǒng)。自20世紀(jì)80年代以來,作為商品推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都是關(guān)系型的,例如,Oracle,Sybase,Informix,VisualFoxPro,mysql,sqlserver等。關(guān)系模型概念:符合某一種級別的關(guān)系模式的集合。1、第一范式(1NF):每一個列(屬性)只有一個,沒有重復(fù)。
2、第二范式(2NF):滿足第一范式,屬性完全依賴于主關(guān)鍵字。舉例:未到第一范式:create學(xué)生(姓名,性別年齡)----(因為性別年齡列包括了兩個屬性)未到第二范式:create學(xué)生(姓名,性別,年齡,語文老師名)
--(因為老師列不是完全函數(shù)依賴于主鍵碼)關(guān)系模式結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)簡稱SQL,結(jié)構(gòu)化查詢語言是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。結(jié)構(gòu)化查詢語言是高級的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng),可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能。三、Sql語言1.概念模式(又稱邏輯模式)2.外模式(也稱子模式或用戶模式)3.內(nèi)模式(也稱存儲模式)SQL三級模式SQL是1986年10月由美國國家標(biāo)準(zhǔn)局(ANSI)通過的數(shù)據(jù)庫語言美國標(biāo)準(zhǔn),接著,國際標(biāo)準(zhǔn)化組織(ISO)頒布了SQL正式國際標(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ù)庫分為三個級別:基本集、標(biāo)準(zhǔn)集和完全集。SQL語言標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言包含6個部分:數(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ù)定義語言包括動詞CREATE和DROP。在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREATTABLE或DROPTABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動作查詢的一部分。數(shù)據(jù)定義語言CREATETABLEtable_name(column_name1type,column_name2type,column_name3type,...)CREATETABLE語句創(chuàng)建一個員工表(emp),表結(jié)構(gòu)如下:練習(xí)員工編號員工姓名所屬部門崗位名稱入職日期月薪工資月度獎金備注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ù)操作語言包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。數(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)如下:員工編號員工姓名所屬部門崗位名稱入職日期月薪工資月度獎金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項目經(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)中修改孔明的獎金為100.00,如下:員工編號員工姓名所屬部門崗位名稱入職日期月薪工資月度獎金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項目經(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)中刪除張飛,如下:員工編號員工姓名所屬部門崗位名稱入職日期月薪工資月度獎金EIDNameDeptJobHireDateSalaryCommNumber(4)Varchar2(10)Varchar2(10)Varchar2(10)DateNumber(11,2)Number(11,2)0101總裁辦CEO2015-01-01Null50,000,000.001234孔明總裁辦秘書長2015-04-011,000,000.00020關(guān)羽技術(shù)部CTO2015-01-01500,000.00030張飛技術(shù)部項目經(jīng)理2015-01-01500,000.000練習(xí)DeletefromempwhereName=‘張飛’數(shù)據(jù)查詢語言也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他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這個關(guān)鍵字用來過濾重復(fù)記錄,只保留一條。事務(wù)處理語言能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括:BEGINTRANSACTION
開始事務(wù)COMMIT
TRANSACTION
提交事務(wù)ROLLBACK
TRANSACTION
想取消,回滾事務(wù)事務(wù)處理語言數(shù)據(jù)控制語言通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數(shù)據(jù)庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。數(shù)據(jù)控制語言指針控制語言,如DECLARECURSOR,F(xiàn)ETCHINTO和UPDATEWHERECURRENT用于對一個或多個表單獨行的操作。**Cursor(游標(biāo))是一個記錄表示,用于一行一行迭代的訪問查詢返回的結(jié)果示例:DECLAREcursor_nameCURSORFORselect_statement該語句聲明一個游標(biāo)??梢栽谧映绦蛑卸x多個游標(biāo),但是一個塊中的每一個游標(biāo)必須有唯一的名字。聲明游標(biāo)后也是單條操作,但不能用select語句,不能有INTO子句。FETCHcursor_nameINTOvar_name[,var_name]…這個語句用指定的打開游標(biāo)讀取下一行,并前進(jìn)游標(biāo)指針。指針控制語言CREATEVIEWview_nameASSELECTcolumn_name(s)FROMtable_nameWHEREconditionCREATEVIEW語句AVGCOUNTMAXMINSUMMIDLEN..SQL函數(shù)實例1:在“orders”表中,查找訂單總額少于2000的客戶SelectCustomer,sum(OrderPrice)FromordersGROUPBYCustomerHAVINGSUM(OrderPrice)<2000實例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高級TVnameNameTheBigBangTheoryJohnTheBigBangTheoryMaryTheITCrowdJohnSherlockJimNameDistrictJohnPudongJimHuangpu表District(D)列出看美劇的同學(xué)名字,來自于哪個地區(qū)?SELECTT.Tvname,T.Name,D.DistrictFROMTINNERJOINDONT.Name=D.NameSQL高級TVnameNameDistrictTheBigBangTheoryJohnPudongTheITCrowdJohnPudongSherlockJimHuangpuCARD聽課證:CNO課程號,SNO學(xué)號,NAME姓名,CLASS班級;INSERTINTOCARD(CNO,NAME,CLASS)VALUES('C0001',‘S1’,'Mary','B'),('C0001',‘S2’,'John','B'),('C0003',‘S3’,'Jim','A')COURSE課程:CNO課程號,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)計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)計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,則這個字段的最大值為99999,超出則以四舍五入方式截斷,得:123.13;Date缺省格式為DD-MON-YY,如:11-07-15表示2015年7月11日;Blob:三種大型對象(LOB),保存較大圖形文件或帶格式的文本文件,如:Word,視頻等非文本文件Oracle基本數(shù)據(jù)類型概念:與oracle交互的客戶端工具,運行sql*plus命令和sql語句。作用:數(shù)據(jù)庫維護(hù),啟動(startup)、關(guān)閉(shutdown);執(zhí)行sql語句;執(zhí)行sql腳本,如:SQL>startfile_name
SQL>@file_name用戶管理和權(quán)限維護(hù)Sqlplus基礎(chǔ)Sqlplus運行案例建表插入數(shù)據(jù)顯示表結(jié)構(gòu)查詢數(shù)據(jù)修改字段值刪除行刪除表Sqlplus練習(xí)函數(shù),在某變化過程中有兩個變量x,y,如果對于x在某一范圍內(nèi)的每一個確定的值,y都有唯一確定的值與它對應(yīng),那么就稱y是x的函數(shù),x叫自變量。函數(shù)根據(jù)傳遞給它的參數(shù)進(jìn)行運算,并返回運算結(jié)果。函數(shù)一般形式:函數(shù)名(參數(shù)1,參數(shù)2,…)參數(shù)是傳遞給函數(shù)的數(shù)據(jù)。如:Power(3,2)是函數(shù),用于計算3的2次方,3和2都是參數(shù)。Oracle基本函數(shù)操作對象:單行函數(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 返回字符長度NVL 轉(zhuǎn)換一個空值字符函數(shù)轉(zhuǎn)換字符串的大小寫LOWER('SQLCourse') sqlcourseUPPER('SQLCourse') SQLCOURSEINITCAP('sql
course') SqlCourse轉(zhuǎn)換大小寫函數(shù)操縱字符串CONCAT(‘Good’,‘String’) GoodString字符連接函數(shù),等同于||SUBSTR(‘String’,1,3) Str求母串中的某個子串LENGTH(‘String’) 6求字符串長度(字節(jié)數(shù))字符操作函數(shù)ROUND 按照指定的精度進(jìn)行舍入TRUNC 按照指定的精度進(jìn)行截斷MOD 返回余數(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截斷TRUNC(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ù)可以得出一個數(shù)除以另一個數(shù)所得的余數(shù).MOD(1600,300) 100
1600/3=5余100MOD函數(shù)MONTHS_BETWEEN 兩個日期間的月ADD_MONTHS 加月份到一個日期上NEXT_DAY 指定日期的第二天LAST_DAY 某月的最后一天的日期ROUND 日期舍入到半夜TRUNC 從日期中去除部分時間日期函數(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)換一個數(shù)字或日期串到一個字符串TO_NUMBER轉(zhuǎn)換一個字符串到一個數(shù)字TO_DATE轉(zhuǎn)換一個字符串到一個日期轉(zhuǎn)換函數(shù)語法格式一:TO_CHAR(date,'format')將日期date按指定格式轉(zhuǎn)換為VATCHAR2類型字符串。必須放置在單引號中且是區(qū)分大小寫的;可以包含任意可用的有效的日期格式元素;可用一個參數(shù)刪除數(shù)字前的空格或零值;日期之間用逗號隔開。TO_CHAR函數(shù)語法格式二:TO_CHAR(number,'format')將數(shù)字按指定格式轉(zhuǎn)換為VATCHAR2類型字符串。TO_CHAR函數(shù)YYYY 表示完整的年份的數(shù)字表示。YEAR 表示年份的英文拼寫。MM 表示兩位表示的月份。MONTH 表示月的全名。DY 表示星期的三個字母的縮寫。DAY 表示日期的全拼。日期格式元素時間元素格式化日期中的時間部分HH24:MI:SSAM 15:45:32PM通過使用雙引號添加字符串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為空時,返回exp2
nvl2(exp1,exp2,exp3):當(dāng)exp1為空時,返回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子串時常常都和GROUPBY一起使用。多行函數(shù)的特征是接收多個輸入,返回一個輸出。多行函數(shù)AVG([DISTINCT|ALL]n)COUNT({*|[DISTINCT|ALL]expr})MAX([DISTINCT|ALL]expr)MIN([DISTINCT|ALL]expr)SUM([DISTINCT|ALL]n)聚合函數(shù)概念:將一個數(shù)據(jù)集合劃分成若干個“小區(qū)域”,然后針對若干個“小區(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子句的作用是在對查詢結(jié)果進(jìn)行分組前,將不符合where條件的行去掉,即在分組之前過濾數(shù)據(jù),where條件中不能包含聚組函數(shù),使用where條件過濾出特定的行。having子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),使用having條件過濾出特定的組,也可以使用多個分組標(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庫備份1.簡單導(dǎo)出備份:(1)、表方式(T方式),將指定表的數(shù)據(jù)導(dǎo)出。(2)、用戶方式(U方式),將指定用戶的所有對象及數(shù)據(jù)導(dǎo)出。(3)、全庫方式(Full方式),將數(shù)據(jù)庫中的所有對象導(dǎo)出。
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖南礦產(chǎn)集團(tuán)子公司招聘16人考前自測高頻考點模擬試題含答案詳解
- 那時陽光下這時陽光下初中作文14篇范文
- 2025甘肅武威市事業(yè)單位招聘628人考前自測高頻考點模擬試題附答案詳解(黃金題型)
- 2025福建福州市馬尾區(qū)文化體育和旅游局下屬單位福州市馬尾區(qū)文化館招聘編外聘用人員1人模擬試卷有答案詳解
- 2025福建龍巖市上杭縣總醫(yī)院引進(jìn)醫(yī)學(xué)類臺灣人才1人模擬試卷附答案詳解(黃金題型)
- 2025江蘇金灌投資發(fā)展集團(tuán)有限公司、灌南城市發(fā)展集團(tuán)有限公司招聘高層次人才10人考前自測高頻考點模擬試題及答案詳解(全優(yōu))
- 2025年臨沂市工程學(xué)校公開招聘教師(15名)模擬試卷及答案詳解(名師系列)
- 2025年4月廣東潮州市第三人民醫(yī)院招聘編外人員49人模擬試卷及答案詳解(有一套)
- 2025年福建省福州市平潭綜合實驗區(qū)人才發(fā)展集團(tuán)有限公司招聘6人考前自測高頻考點模擬試題及答案詳解(易錯題)
- 湖南省名校聯(lián)盟2024-2025學(xué)年高一上學(xué)期開學(xué)質(zhì)量檢測地理地理試題(解析版)
- 2024年時事政治考試題庫有答案
- 小兒鎮(zhèn)靜課件
- 光伏建筑投標(biāo)文件范本
- 2025年藥店員工培訓(xùn)考試試題(附答案)
- 民辦學(xué)校招生方案及推廣策略實操指南
- 公益慈善投資策略-洞察及研究
- 碳排放咨詢員基礎(chǔ)技能培訓(xùn)手冊
- 普及金融知識課件
- 軍兵種知識課件
- 英國的社會和文化
- 穩(wěn)定型心絞痛護(hù)理查房
評論
0/150
提交評論