版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章
應(yīng)用數(shù)據(jù)庫第8章應(yīng)用數(shù)據(jù)庫討論軟件構(gòu)造中數(shù)據(jù)庫的使用。介紹關(guān)系數(shù)據(jù)庫的相關(guān)知識及結(jié)構(gòu)化查詢語言SQL,學(xué)習(xí)如何創(chuàng)建數(shù)據(jù)庫、連接數(shù)據(jù)庫、查詢數(shù)據(jù)庫;學(xué)習(xí)數(shù)據(jù)庫及應(yīng)用軟件的開發(fā),熟練掌握數(shù)據(jù)庫的增、刪、改、查等操作方法,以及如何在應(yīng)用程序中操作數(shù)據(jù)庫。還介紹數(shù)據(jù)庫的深入應(yīng)用。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院2第8章應(yīng)用數(shù)據(jù)庫故事9引入數(shù)據(jù)庫系統(tǒng)管理題目和答案。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院3第8章應(yīng)用數(shù)據(jù)庫8.1數(shù)據(jù)庫概述8.2結(jié)構(gòu)化查詢語言SQL8.3數(shù)據(jù)庫的開發(fā)過程8.4編程操作數(shù)據(jù)庫8.5案例分析與實(shí)踐8.6討論與提高8.7思考與練習(xí)題2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院48.1數(shù)據(jù)庫概述數(shù)據(jù)庫是長期存儲在計算機(jī)內(nèi)、有組織、可共享的大量數(shù)據(jù)的集合。它的目的是提供一種可以方便、高效地管理數(shù)據(jù)庫信息的途徑。DBMS是位于用戶(含應(yīng)用程序)和操作系統(tǒng)之間的一種數(shù)據(jù)管理軟件,負(fù)責(zé)數(shù)據(jù)的組織、存儲和管理。數(shù)據(jù)庫、DBMS、應(yīng)用程序及數(shù)據(jù)庫管理員構(gòu)成的系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院58.1數(shù)據(jù)庫概述8.1.1關(guān)系數(shù)據(jù)庫8.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院68.1.1關(guān)系數(shù)據(jù)庫數(shù)據(jù)庫領(lǐng)域中最常見的數(shù)據(jù)模型有:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P?、對象關(guān)系模型。其中,關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。按照數(shù)據(jù)模型的三個要素,關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院78.1.1關(guān)系數(shù)據(jù)庫1.關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)就是一張二維表。關(guān)系數(shù)據(jù)庫由表的集合構(gòu)成,每個表都有唯一的名字。元組(行)、屬性(列)、域、碼、候選碼、主碼、主屬性、組合碼、全碼、外碼、關(guān)系模式……2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院88.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院98.1.1關(guān)系數(shù)據(jù)庫2.關(guān)系操作集合2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院108.1.1關(guān)系數(shù)據(jù)庫3.關(guān)系完整性約束關(guān)系模型中有三類完整性約束:實(shí)體完整性、參照完整性和用戶自定義完整性。實(shí)體完整性和參照完整性是關(guān)系模型必須要滿足的完整性約束條件,有DBMS支持,進(jìn)行自動檢查。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院118.1.1關(guān)系數(shù)據(jù)庫實(shí)體完整性(EntityIntegrity):若屬性(一個或一組屬性)A是基本關(guān)系R的主屬性,則A不能取空值。參照完整性(ReferentialIntegrity):若屬性或?qū)傩越MF是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為空值或者等于S中某個元組的主碼值。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院128.1.1關(guān)系數(shù)據(jù)庫用戶自定義完整性(User-definedIntegrity)關(guān)系數(shù)據(jù)庫系統(tǒng)應(yīng)該根據(jù)應(yīng)用環(huán)境的不同,滿足用戶對數(shù)據(jù)關(guān)系之間的特定的約束條件。例如,Question關(guān)系中,我們要求計算0~100之間的加減法,就需要引入約束條件check(Factor1>=0ANDFactor1<=100)。如果我們要求只計算加減乘除的四則運(yùn)算,那就應(yīng)該引入自定的約束條件check(OperatorIN(‘+’,‘?’,‘*’,‘/’))。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院138.1.1關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫由若干基本表組成?;颈碛扇舾稍M組成。表是組成這個關(guān)系的若干實(shí)體。表與表之間同時還存在參照關(guān)系,通過外碼表達(dá)兩個關(guān)系之間的關(guān)系。關(guān)系圖。每個關(guān)系用一個矩形表示,關(guān)系的名字顯示在矩形的上方,矩形內(nèi)列出各個屬性,主屬性用下畫線標(biāo)出。外碼之間的關(guān)系用從參照關(guān)系的外碼屬性到被參照關(guān)系的主屬性之間的箭頭來表示。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院148.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院158.1.1關(guān)系數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院168.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu),如圖8.2所示。內(nèi)模式對應(yīng)存儲文件,模式包含數(shù)據(jù)庫中最重要的基本表,外模式對應(yīng)于部分基本表和由基本表導(dǎo)出的視圖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院178.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型內(nèi)模式,也稱為存儲模式,一個數(shù)據(jù)庫只有一個內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中,存儲文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式。存儲文件的物理結(jié)構(gòu)對用戶是透明的,可以由用戶來定義。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院188.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型模式,也稱為邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。在關(guān)系數(shù)據(jù)庫中,模式是所有基本表的集合。每個基本表表達(dá)了一個關(guān)系。一個或多個基本表存儲在一個存儲文件中。所有基本表都保存在數(shù)據(jù)庫模式中。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院198.1.2關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型外模式也稱為用戶模式,它是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖。在關(guān)系數(shù)據(jù)庫中,外模式包含部分的基本表和由一些基本表導(dǎo)出的視圖。需注意,一個數(shù)據(jù)庫中可以同時有多個外模式。同一個外模式可以被用戶的多個應(yīng)用使用,但一個應(yīng)用只能用一個外模式。外模式是保證數(shù)據(jù)庫安全性的一個重要手段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院208.2結(jié)構(gòu)化查詢語言SQL8.2.1SQL概述8.2.2創(chuàng)建基本表的CREATE語句8.2.3插入元組的INSERT語句8.2.4刪除元組的DELETE語句8.2.5更新元組的UPDATE語句8.2.6選擇元組的SELECT語句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院218.2.1SQL概述SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)分為以下幾個部分。數(shù)據(jù)定義語言(DataDefinitionLanguage):針對數(shù)據(jù)庫和基本表的結(jié)構(gòu)所做的定義。數(shù)據(jù)操縱語言(DataManipulationLanguage):對已定義的數(shù)據(jù)增、刪、改、查。數(shù)據(jù)控制語言(DataControlLanguage):完整性約束(Integrity):2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院228.2.1SQL概述SQL主要解決的三個問題就是關(guān)系數(shù)據(jù)模型的三個要素。視圖定義:從基本表導(dǎo)出的虛表,DDL提供視圖定義的命令語句。事務(wù)控制:SQL包括定義事務(wù)開始和結(jié)束的命令。訪問權(quán)限:SQLDDL定義了對關(guān)系和視圖訪問權(quán)限的命令。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院238.2.1SQL概述SQL實(shí)現(xiàn)了關(guān)系模型的一些主要特點(diǎn)。SQL是集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML和數(shù)據(jù)控制語言DCL功能于一體的查詢語言。SQL是高度非過程化的查詢語言。用戶只需指明“怎么做”、“想要什么”,而無須說明查詢的步驟。SQL采用的是集合的運(yùn)算方式。操作對象是元組的集合,插入、刪除、修改的對象及查詢得到的結(jié)果都可以是元組的集合。SQL使用動詞來表達(dá)功能。核心動詞9個。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院248.2.1SQL概述用SQL語言有兩種方式:一種是在終端交互方式下使用,稱為交互式SQL;另一種是把SQL嵌入在高級程序設(shè)計語言中使用,稱為嵌入式SQL。這些高級語言可以是C、Java、C#、Python等,稱為宿主語言。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院258.2.2創(chuàng)建基本表的CREATE語句CREATETABLE語句定義基本表。CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[列級完整性約束條件][,<列名><數(shù)據(jù)類型>[列級完整性約束條件]]…[,<表級完整性約束條件>]);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院268.2.2創(chuàng)建基本表的CREATE語句2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院278.2.3插入元組的INSERT語句INSERT插入語句的一般格式為:INSERTINTO<表名>[(<屬性列1>,<屬性列2>,……)]VALUES(<常量1>,<常量2>,……);插入如下題目:編號1001的題目為19+20=39,題目屬于基礎(chǔ)的四則運(yùn)算。INSERTINTOQuestionVALUES('1004',20,'-',19,1,1);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院288.2.4刪除元組的DELETE語句DELETE語句的一般形式為:DELETEFROM<表名>
[WHERE<條件>];刪除編號為1001的題目:DELETEFROMQuestionWHEREQuestionID=’1001’;刪除所有的題目:DELETEFROMQuestion;2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院298.2.5更新元組的UPDATE語句UIPDATE語句的一般形式為:UPDATE<表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件>];如,修改Question關(guān)系中編號1002的題目運(yùn)算結(jié)果為30:UPDATEQuestionSETResult=30WHERQuestionID='1002'2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院308.2.6選擇元組的SELECT語句SELECT語句的功能是查詢數(shù)據(jù)庫中存儲的數(shù)據(jù)。SQL查詢的基本結(jié)構(gòu)由三個子句組成:select、from和where。查詢的基本結(jié)構(gòu)為:SELECT[ALL|DISTINCT]
<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][ORDERBY<列名>DESC|ASC][GROUPBY<列名>HAVING<條件表達(dá)式>];2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院318.3數(shù)據(jù)庫的開發(fā)過程數(shù)據(jù)庫系統(tǒng)開發(fā)分為6階段。需求分析階段;概念結(jié)構(gòu)設(shè)計階段;邏輯結(jié)構(gòu)設(shè)計階段;物理結(jié)構(gòu)設(shè)計階段;數(shù)據(jù)庫實(shí)施階段;數(shù)據(jù)庫運(yùn)行和維護(hù)階段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院328.3數(shù)據(jù)庫的開發(fā)過程①需求分析階段首要任務(wù)是通過詳盡調(diào)查明確用戶的組成,包括用戶的身份、權(quán)限、職責(zé)及分配的工作等;其次,詳細(xì)調(diào)查各用戶組對數(shù)據(jù)庫的操作,包括各用戶組將對數(shù)據(jù)庫輸入的信息、如何使用這些信息、輸出什么信息及其格式等;將輸入的信息分類存儲,以便在邏輯分析階段生成數(shù)據(jù)庫模式,即基本表;最后,需要確定系統(tǒng)的邊界。對前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計算機(jī)完成或?qū)碜層嬎銠C(jī)完成,哪些活動由人工完成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院338.3數(shù)據(jù)庫的開發(fā)過程(1)用戶的組成2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院348.3數(shù)據(jù)庫的開發(fā)過程(2)用戶需要的信息學(xué)生身份信息:記錄學(xué)生的編號、姓名等。家長身份信息:記錄家長的編號、姓名等,以及家長和學(xué)生之間的關(guān)系。教師身份信息:記錄教師的編號、姓名等,以及教師和學(xué)生之間的關(guān)系。管理員身份信息:記錄管理員的編號、姓名、權(quán)限等。算術(shù)題目:記錄所有題目及其計算結(jié)果。學(xué)生成績:記錄學(xué)生完成某套題目的成績。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院358.3數(shù)據(jù)庫的開發(fā)過程(3)系統(tǒng)邊界系統(tǒng)可以自動生成算術(shù)題目并得到運(yùn)算結(jié)果,可以完成答題結(jié)果的檢查、統(tǒng)計成績分布;可以根據(jù)人工設(shè)定的難度級別來生成相應(yīng)難度的算術(shù)題目;無法分析錯誤題目的出錯原因。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院368.3數(shù)據(jù)庫的開發(fā)過程②概念結(jié)構(gòu)設(shè)計階段將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過程就是概念結(jié)構(gòu)設(shè)計,是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵。設(shè)計的概念結(jié)構(gòu)一定要真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,滿足用戶對數(shù)據(jù)的需求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院378.3數(shù)據(jù)庫的開發(fā)過程E-R模型是描述概念模型的有力工具?!癊”表示實(shí)體型,E-R圖中用矩形表示,矩形框內(nèi)寫明實(shí)體名;用橢圓表示實(shí)體的屬性,并用無向邊將其與相應(yīng)的實(shí)體連接起來;“R”表示聯(lián)系,在E-R圖中用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)的實(shí)體型連接起來,同時在無向邊旁標(biāo)記聯(lián)系的類型。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院388.3數(shù)據(jù)庫的開發(fā)過程兩個以上的實(shí)體型之間聯(lián)系類型可以分為三種(參考圖8.10)。(1)一對一聯(lián)系(1:1)。(2)一對多聯(lián)系(1:n)。(3)多對多聯(lián)系(m:n)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院398.3數(shù)據(jù)庫的開發(fā)過程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院408.3數(shù)據(jù)庫的開發(fā)過程③邏輯結(jié)構(gòu)設(shè)計階段邏輯結(jié)構(gòu)設(shè)計階段的主要任務(wù)是將概念結(jié)構(gòu)設(shè)計階段設(shè)計好的基本E-R模型轉(zhuǎn)換為數(shù)據(jù)庫管理系統(tǒng)所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院418.3數(shù)據(jù)庫的開發(fā)過程E-R圖轉(zhuǎn)換為關(guān)系模型規(guī)則(步驟)如下。①一個實(shí)體型轉(zhuǎn)換為一個關(guān)系。實(shí)體名稱(屬性、主碼)即關(guān)系名稱(屬性、主碼)。②一個聯(lián)系轉(zhuǎn)換為一個關(guān)系。聯(lián)系名稱(屬性)即關(guān)系名稱(屬性),和聯(lián)系相連的實(shí)體主碼也是關(guān)系的屬性。1:1:任取一個實(shí)體的主碼為關(guān)系的主碼。1:n:取n對應(yīng)的實(shí)體主碼為關(guān)系的主碼。m:n:兩個實(shí)體的主碼為關(guān)系的組合碼。③合并相同主碼的關(guān)系。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院428.3數(shù)據(jù)庫的開發(fā)過程④物理結(jié)構(gòu)設(shè)計階段數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)設(shè)計主要包括確定數(shù)據(jù)的存放位置;確定關(guān)系、索引、聚簇、日志、備份等的存儲安排;確定系統(tǒng)配置等。設(shè)計存儲結(jié)構(gòu)時,一般考慮存取時間、存儲空間利用率和維護(hù)代價等三方面因素。存取方法一般采用索引存取方法或聚簇存取方法。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院438.3數(shù)據(jù)庫的開發(fā)過程⑤數(shù)據(jù)庫實(shí)施階段數(shù)據(jù)庫實(shí)施階段的主要任務(wù)是數(shù)據(jù)的載入和應(yīng)用程序的編碼與調(diào)試。首先要強(qiáng)調(diào)基礎(chǔ)數(shù)據(jù)的正確,數(shù)據(jù)形式、組織方式、數(shù)據(jù)結(jié)構(gòu)的合理、清晰。為提高數(shù)據(jù)載入效率和準(zhǔn)確度,應(yīng)盡量采用人工和計算機(jī)輔助相結(jié)合的方式載入數(shù)據(jù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院448.3數(shù)據(jù)庫的開發(fā)過程載入數(shù)據(jù)之后,要試運(yùn)行數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行測試,主要包括功能測試和性能測試。功能測試需要運(yùn)行數(shù)據(jù)庫應(yīng)用程序,執(zhí)行對數(shù)據(jù)庫的各種操作,測試應(yīng)用程序的功能是否達(dá)到設(shè)計要求。性能測試主要檢查數(shù)據(jù)庫和應(yīng)用程序運(yùn)行中的相關(guān)物理參數(shù)值,測試其是否達(dá)到設(shè)計要求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院458.3數(shù)據(jù)庫的開發(fā)過程⑥數(shù)據(jù)庫運(yùn)行和維護(hù)階段主要任務(wù)是維護(hù)數(shù)據(jù)庫的穩(wěn)定,保證數(shù)據(jù)庫平穩(wěn)運(yùn)行;同時,對數(shù)據(jù)庫設(shè)計進(jìn)行評價,聽取、總結(jié)、分析用戶的需求,必要時可以對數(shù)據(jù)庫進(jìn)行適當(dāng)?shù)难a(bǔ)充和修改。數(shù)據(jù)庫的運(yùn)行和維護(hù)是個長期的工作,在這一階段應(yīng)注意如下幾個問題。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院468.3數(shù)據(jù)庫的開發(fā)過程首先,管理員應(yīng)該定期轉(zhuǎn)儲和備份數(shù)據(jù),保證數(shù)據(jù)庫的恢復(fù)機(jī)制可以正常運(yùn)行。其次,應(yīng)注意保證數(shù)據(jù)庫的安全性和完整性,“數(shù)據(jù)溢出”、“數(shù)據(jù)污染”等。最后,管理員應(yīng)定期對數(shù)據(jù)庫的設(shè)計和使用情況做出評價,聽取客戶意見和建議,適當(dāng)修改、調(diào)整數(shù)據(jù)庫的組織與構(gòu)造。數(shù)據(jù)庫的重組并不修改原設(shè)計的邏輯和物理結(jié)構(gòu),而數(shù)據(jù)庫的重構(gòu)就修改了數(shù)據(jù)庫的模式。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院478.4編程操作數(shù)據(jù)庫JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的JavaAPI,它由一組用Java語言編寫的類和接口組成,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問。使用JDBC操作數(shù)據(jù)庫的主要步驟是:與數(shù)據(jù)庫建立連接;向數(shù)據(jù)庫發(fā)送SQL語句,需要java.sql包的支持;處理SQL語句返回的結(jié)果。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院488.4編程操作數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院498.4編程操作數(shù)據(jù)庫8.4.1連接數(shù)據(jù)庫8.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院508.4.1連接數(shù)據(jù)庫獲取JDBCDriver,并配置ClassPath。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院518.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院528.4.2查詢數(shù)據(jù)庫游標(biāo)系統(tǒng)為用戶開設(shè)的一個數(shù)據(jù)緩沖區(qū),用于存放SQL語句的執(zhí)行結(jié)果。為了得到一個帶有游標(biāo)的結(jié)果集,需使用下述方法獲得一個Statement對象。Statementstmt=dbConn.createStatement(inttype,intconcurrency);2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院538.4.2查詢數(shù)據(jù)庫type的取值決定滾動的方式。ResultSet.TYPE_FORWARD_ONLY:表示結(jié)果集的游標(biāo)只能向下滾動。ResultSet.TYPE_SCROLL_INSENSITIVE:游標(biāo)可以上下滾動。當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE:游標(biāo)可以上下滾動。當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集同步改變。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院548.4.2查詢數(shù)據(jù)庫Concurrency的取值決定是否用結(jié)果集更新數(shù)據(jù)庫。ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫中的表。ResultSet.CONCUR_UPDATABLE:可以用結(jié)果集更新數(shù)據(jù)庫中的表。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院558.4.2查詢數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院568.5案例分析與實(shí)踐8.5.1分析與設(shè)計8.5.2設(shè)計數(shù)據(jù)庫8.5.3開發(fā)數(shù)據(jù)庫應(yīng)用程序2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院578.6討論與提高8.6.1事務(wù)與并發(fā)8.6.2使用存儲過程8.6.3查詢優(yōu)化——消除不必要的循環(huán)8.6.4測試數(shù)據(jù)庫2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院588.6.1事務(wù)與并發(fā)事務(wù)是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元,它是用戶定義的一個數(shù)據(jù)庫的操作序列,這些操作要么全做,要么全不做,是一個不可分割的基本單位。為完成數(shù)據(jù)庫操作,并保證數(shù)據(jù)一致性,所有針對數(shù)據(jù)庫的讀寫操作都被添加在各種強(qiáng)度的鎖下,如共享鎖或排它鎖。在共享鎖中,用戶可以同時讀取數(shù)據(jù);在排它鎖中,用戶不能同時讀取、更新數(shù)據(jù),只能等待其他用戶釋放對數(shù)據(jù)的鎖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院598.6.1事務(wù)與并發(fā)事務(wù)占用的時間越長,用戶等待的時間就越長。提高性能的首要任務(wù)就是控制事務(wù)的運(yùn)行時間。因為事務(wù)具有隔離性,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾,所以在適當(dāng)?shù)逆i的規(guī)范下,事務(wù)之間可以有序地并發(fā)執(zhí)行。通過并發(fā)執(zhí)行,加快了數(shù)據(jù)庫執(zhí)行效率。利用事務(wù)的并發(fā)操作,可以在事務(wù)級別提高數(shù)據(jù)庫的性能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院608.6.1事務(wù)與并發(fā)1.在JDBC中批量執(zhí)行SQLJDBC中的批量更新特征允許多個更新操作被傳遞到DBMS上來簡化過程。被執(zhí)行在批量模型上的SQL代碼,可以用addBatch()方法添加到一個與statement對象有關(guān)的列表上,并用clearBatch()對象方法,列表能被清空。當(dāng)在列表中添加語句后,調(diào)用executeBatch()對象方法,并把它們?nèi)總鬟f到數(shù)據(jù)庫上作為一個單元或批量被執(zhí)行。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院618.6.1事務(wù)與并發(fā)2.選擇合適的隔離級別隔離是指一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾,即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。需要注意的是,事務(wù)的隔離級別越高,越應(yīng)該小心避免并發(fā)的沖突。隔離級別可以在JDBCAPI級別上進(jìn)行設(shè)置,以便于DBMS決定合適的加鎖計劃。可以在JDBCConnection接口上指定5種隔離級別,如表8.8所示2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院628.6.1事務(wù)與并發(fā)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院638.6.1事務(wù)與并發(fā)對于一個連接,隔離級別可以通過調(diào)用setTransactionIsolation()方法設(shè)置隔離級別。應(yīng)用程序通過如下代碼來設(shè)置一個事務(wù)的隔離級別。注意,在一個數(shù)據(jù)庫應(yīng)用系統(tǒng)中,重要的事務(wù)應(yīng)該有較高的隔離級別,不重要的事務(wù)可以用較低的隔離級別來完成。而且在事務(wù)啟動之前,隔離級別必須被設(shè)置,并且在事務(wù)完成之后重新設(shè)置。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院648.6.2使用存儲過程一組為完成特定功能的SQL語句集,存儲在數(shù)據(jù)庫中,經(jīng)過第一次編譯之后再次調(diào)用時不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)來執(zhí)行存儲過程。使用存儲過程可以在數(shù)據(jù)層級別提高數(shù)據(jù)庫的性能。使用存儲過程可以在數(shù)據(jù)層提高數(shù)據(jù)庫的性能,是優(yōu)化數(shù)據(jù)庫的技術(shù)手段之一。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院658.6.2使用存儲過程1.創(chuàng)建存儲過程CREATEProcedure<過程名>([參數(shù)1數(shù)據(jù)類型1,參數(shù)2數(shù)據(jù)類型2,…])AS<SQL語句集(過程體)>過程名:是數(shù)據(jù)庫識別存儲過程的標(biāo)識。參數(shù)列表:存儲過程中的形式列表,用名字來標(biāo)識調(diào)用存儲過程時需要給出的參數(shù)值。必須指定值的數(shù)據(jù)類型。過程體:是一個SQL語句集。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院668.6.2使用存儲過程例如,在CategoryPlayer表(屬性包括CategoryID、PlayerID、Grade)中,修改答題者編號(PlayerID)為@p1的答題者在題目分組(CategoryID)為@c1的分組中的成績,將成績改為@g1。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院678.6.2使用存儲過程2.使用JDBC調(diào)用存儲過程使用JDBC來調(diào)用數(shù)據(jù)庫中的存儲過程。用JDBC的Statement接口來傳遞調(diào)用命令,調(diào)用返回的結(jié)果放在JDBCResultSet中保存。JDBC調(diào)用存儲過程的代碼如下:2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院688.6.3查詢優(yōu)化——消除不必要的循環(huán)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院698.6.4測試數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)測試的主要任務(wù)就是測試數(shù)據(jù)庫及應(yīng)用軟件。對于應(yīng)用程序,基本的測試技術(shù)(黑盒測試、白盒測試)同樣適合,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文素養(yǎng)大賽策劃書3篇
- 2025年榆林能源科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 專題02 漫畫素材類選擇題(50題)
- 2024年電商應(yīng)用與品牌市場洞察報告
- 課題申報參考:數(shù)據(jù)驅(qū)動的帆板高效推進(jìn)搖帆策略研究
- 駕馭考試戰(zhàn)場的戰(zhàn)術(shù)思維
- 幼兒植樹節(jié)出游活動策劃方案五篇
- 酒店委托經(jīng)營合同范本
- 范文二手房買賣合同
- 商服用房買賣合同
- 文檔協(xié)同編輯-深度研究
- 七年級數(shù)學(xué)新北師大版(2024)下冊第一章《整式的乘除》單元檢測習(xí)題(含簡單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級上冊寒假作業(yè)答案(人教版)
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年中考語文復(fù)習(xí)熱搜題速遞之說明文閱讀(2024年7月)
- 和達(dá)投資集團(tuán)(杭州)有限公司招聘筆試沖刺題2025
- 綜治工作培訓(xùn)課件
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 2024年全國職業(yè)院校技能大賽高職組(智能節(jié)水系統(tǒng)設(shè)計與安裝賽項)考試題庫-下(多選、判斷題)
- 2024年廣東省事業(yè)單位考試真題及答案5
評論
0/150
提交評論