




已阅读5页,还剩345页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,java系列概論資料庫入門程式javasystemconceptsanddatabaseprogramming賈蓉生胡大源林金池編著,第一篇,java資料庫環境,本書在眾多資料庫中,選定java/access資料庫系統,以實作方式表現資料庫之功能。access應屬最方便且功能不輸其他者,凡有office的電腦,開機即可使用,無需另添購軟體。java是功能強大的物件導向語言,本身即擁有網路功能,是多數網路電玩採用的設計語言,也是多數大銀行建立網路銀行的設計語言,本書使用java剖析資料庫之各項應用。,第一章,java系統安裝,1-1簡介,本系列書籍使用標準版j2se,亦即標準版開發套件(j2sedevelopmentkit),簡稱為jdk。讀者可於網站()下載、或使用本書隨書光碟提供之java系統安裝程式,如何安裝、如何設定?請參考本章執行步驟。本章內容包括安裝java系統軟體(jdk-6.0)、設定java環境、編輯第一個java程式、編譯java程式、執行類別檔案。,1-2安裝java系統軟體(jdk-6.0),jdk-6.0為java程式之系統軟體,讀者可於“”免費下載昇陽(sun)之最新版、或使用本書光碟c:bookjavavol_4system已備妥之執行檔“jdk-6u4-windows-i586-p.exe”。,1-3設定java環境,java之執行式均備儲於c:programfilesjavajdk1.6.0_04bin目錄內(如下圖)。當要編譯java程式、或執行java程式碼時,必須先將該程式或程式碼移置於此目錄內,才可執行,甚為不便。,1-4編輯第一個java程式,可儲存java程式之編輯工具非常多,筆者認為“記事本”最為樸實,負擔輕、效率高,因此建議讀者以“記事本”為java程式之編輯器。,第二章,第一個java資料庫應用,2-1簡介,我們可以關聯代數(relationalgebra)輕易地解釋非常困難的查詢邏輯、並藉sql資料庫語言實作執行,而java却可流暢地驅動sql執行各類查詢邏輯。在尚未真正進入資料庫精髓之前,為了讓讀者先觸摸java與access之關係,本章將片段基礎介紹:建立資料庫、設定odbc、建立資料表、輸入資料、讀取資料。,2-2建立access資料庫,本書使用java/access系統,以access2007為範例資料庫(如要使用其他資料庫請自行按規定轉換),本節以手動於目錄c:bookjavavol_4programch0202_2建立資料庫book.accdb。,2-3設定odbc,當資料庫建立完成後(如前節之book.accdb),我們可立即以手動方式建立資料表(datatables)、輸入/讀取資料。但却無法藉由win作業系統之應用程式來建立資料表、輸入/讀取資料。如果要藉由win作業系統之應用程式來建立資料表、輸入/讀取資料,必須先設定odbc(opendatabaseconnectivity),用以連通win作業系統與資料庫。,2-4建立資料表,資料表(datarelationtabes)為儲存資料的表格,包括欄位(field)與資料型態(type)。本節將分別介紹:手動資料表(byhands)、java資料表(byjava)。在查詢操作上,因手動資料表操作複雜,有些查詢邏輯不易執行,但我們可以關聯代數(relationalgebra)輕易地解釋非常困難的查詢邏輯、並藉sql資料庫語言實作執行,而java却可流暢地驅動sql執行各類查詢邏輯。,2-4-2java建立資料表(byjava),1、設定odbc,將資料庫與win系統連接2、載入驅動程式sun.jdbc.odbc.jdbcodbcdriver,執行方法為:class.forname(sun.jdbc.odbc.jdbcodbcdriver):3、建立連接物件,連接資料庫,執行方法為:connectioncon=drivermanager.getconnection(jdbc:odbc:xxx);其中con為連接物件,xxx為資料庫邏輯名稱。4、以連接物件之方法程序createstatement()建立敘述物件,執行方法為:statementstmt=con.createstatement();其中stmt為敘述物件。5、依sql語言建立字串“createtable”,其中“”為設定之資料表名稱及所屬各欄位。再以敘述物件之方法程序executeupdate()建立資料表,執行方法為:stmt.executeupdate(xxxxx);其中xxxxx為sql字串。,範例01:設計檔案createtable02_4_2.java,其功能為解釋以java建立資料表。,01importjava.sql.*;02publicclasscreatetable02_4_203publicstaticvoidmain(stringargs)04stringjdriver=sun.jdbc.odbc.jdbcodbcdriver;05stringconnectdb=jdbc:odbc:book02_4;06try07class.forname(jdriver);0809catch(java.lang.classnotfoundexceptione)10system.out.println(forname:+e.getmessage();11,範例01:續,12try13connectioncon=drivermanager.getconnection(connectdb);14statementstmt=con.createstatement();15stringquery=createtable書目_by_java(+編號text(20),+書名text(20),+作者text(10),+書價number+);16stmt.executeupdate(query);17stmt.close();18con.close();1920catch(sqlexceptione)21system.out.println(sqlexception:+e.getmessage();222324,2-5-2java輸入資料表(byjava),當以java對資料庫(databases)之資料表(datatables)輸入資料時,其關鍵步驟與2-4-2節相同,唯一不同者是將項5之sql字串“createtable”改成“insertinto”。,範例02:設計檔案inserttable02_5_2.java,其功能為解釋以java將資料輸入資料表。,01importjava.sql.*;02publicclassinserttable02_5_203publicstaticvoidmain(stringargs)04stringjdriver=sun.jdbc.odbc.jdbcodbcdriver;05stringconnectdb=“jdbc:odbc:book02_5”;06try07class.forname(jdriver);0809catch(java.lang.classnotfoundexceptione)10system.out.println(forname:+e.getmessage();11,範例02:續1,12try13connectioncon=drivermanager.getconnection(connectdb);14statementstmt=con.createstatement();15stringquery1=insertinto書目_by_javavalues(+001,資料庫系統概論,賈蓉生,527);16stringquery2=insertinto書目_by_javavalues(+002,java基礎入門程式,賈蓉生,442);17stringquery3=insertinto書目_by_javavalues(+003,java網路入門程式,賈蓉生,476);18stringquery4=insertinto書目_by_javavalues(+004,java動畫遊戲程式,賈蓉生,500);19stringquery5=insertinto書目_by_javavalues(+005,java資料庫入門程式,賈蓉生,480);,範例02:續2,20stringquery6=insertinto書目_by_javavalues(+006,java網站資料庫程式,賈蓉生,510);21stmt.executeupdate(query1);22stmt.executeupdate(query2);23stmt.executeupdate(query3);24stmt.executeupdate(query4);25stmt.executeupdate(query5);26stmt.executeupdate(query6);27stmt.close();28con.close();2930catch(sqlexceptione)31system.out.println(sqlexception:+e.getmessage();323334,2-6讀取資料表,當以java對資料庫(databases)之資料表(datatables)讀物資料時,其關鍵步驟與2-4-2節相同,不同者有:(1)將sql字串改成select*fromxxx,其中xxx為資料表名稱;(2)以該sql字串建立resultset物件;(3)以該resultset物件藉while迴圈讀取資料表內的每筆資料。,範例03:設計檔案printtable02_6.java,其功能為解釋以java讀取資料表之內容。,01importjava.sql.*;02publicclassprinttable02_603publicstaticvoidmain(stringargs)04stringjdriver=sun.jdbc.odbc.jdbcodbcdriver;05stringconnectdb=jdbc:odbc:book02_6;06try07class.forname(jdriver);0809catch(java.lang.classnotfoundexceptione)10system.out.println(forname:+e.getmessage();11,範例03:續,12try13connectioncon=drivermanager.getconnection(connectdb);14statementstmt=con.createstatement();15resultsetrs=stmt.executequery(select*from書目_by_java);16system.out.println(編號+t+書名+t+t+t+作者+t+書價);17while(rs.next()18system.out.println(rs.getstring(編號)+t+rs.getstring(書名)+t+rs.getstring(作者)+t+rs.getint(書價);1920stmt.close();21con.close();2223catch(sqlexceptione)24system.out.println(sqlexception:+e.getmessage();252627,2-7習題(exercises),01、我們可手動作資料庫應用,為何還要藉助java來作資料庫應用?02、設定odbc(opendatabaseconnectivity)有何意義?03、當以java建立資料庫(databases)之資料表(datatables)時,其關鍵步驟為何?04、當以java對資料庫(databases)之資料表(datatables)輸入資料時,其關鍵步驟為何?05、當以java對資料庫(databases)之資料表(datatables)讀物資料時,其關鍵步驟為何?,第二篇,java資料庫關聯查詢,資料庫(database)設計的重點考量為資料儲存(datastore)與資料查詢(dataquery),儲存資料要井然有序,查詢資料要迅速有效,前者將於爾後詳細討論,本篇將專業討論“如何以java程式使用sql字串作迅速有效地資料查詢?”。,第三章,基礎操作(basicoperations),3-1簡介,本章將針對現今資料庫使常用的資料錄關聯模型(recordrelationalmodel),在資料查詢上,作有系統地探討,以access2007為範例資料庫、以java為程式語言、以sql為查詢語言,執行各類基礎查詢。,3-3sql查詢基礎架構(basicquerystructure),關聯式資料庫(relationaldatabase)是由多個資料表(relations)組合而成,每一資料表都有一個獨一無二的名稱,其查詢語言sql是由三組子句(clauses)所組成:欄位選取子句(selectclause)、資料表選取子句(fromclause)、與條件子句(whereclause)。,3-5欄位選取查詢(selectclause),關聯式資料庫(relationaldatabase)是由數個資料表(relationaltable)所組成,表格為資料錄(record)形態,由數個欄位(columns)組成。欄位與欄位間、表格與表格之間有其一定的數學關係,依照這些關係,我們可精準地執行指定之查詢。,範例04:設計java程式select_04.java,使用資料庫bank03.accdb之資料表deposit(如圖3-3-4),試請“印出欄位branch_name之各資料內容”。,01importjava.sql.*;02publicclassselect_0403publicstaticvoidmain(stringargs)04stringjdriver=sun.jdbc.odbc.jdbcodbcdriver;05stringconnectdb=jdbc:odbc:bank03;06try07class.forname(jdriver);0809catch(java.lang.classnotfoundexceptione)10system.out.println(forname:+e.getmessage();11,範例04:續,12try13connectioncon=drivermanager.getconnection(connectdb);14statementstmt=con.createstatement();15resultsetrs=stmt.executequery(selectbranch_name+fromdeposit);16system.out.println(branch_name);17system.out.println(-);18while(rs.next()19system.out.println(rs.getstring(branch_name);2021stmt.close();22con.close();2324catch(sqlexceptione)25system.out.println(sqlexception:+e.getmessage();262728,範例05:參考範例04,設計java程式select_05.java,使用資料庫bank03.accdb之資料表deposit(如圖3-3-4),試請“印出欄位branch_name之各資料內容,使用distinct”。,(1)sql查詢句設計為:selectdistinctbranch_namefromdeposit(2)設計程式select_05.java(參考本書cd檔案)。,範例06:參考範例05,設計java程式select_06.java,使用資料庫bank03.accdb之資料表deposit(如圖3-3-4),試請“印出欄位branch_name之各資料內容,使用all”。,(1)sql查詢句設計為:selectallbranch_namefromdeposit(2)設計程式select_06.java(參考本書cd檔案)。,範例07:設計java程式select_07.java,使用資料庫bank03.accdb之資料表deposit(如圖3-3-4),試請“印出欄位branch_name、customer_name之各資料內容”。,(1)sql查詢句設計為:selectbranch_name,customer_namefromdeposit(2)設計程式select_07.java(參考本書cd檔案)。,範例08:設計java程式select_08.java,使用資料庫bank03.accdb之資料表deposit(如圖3-3-4),試請“於存款額(balance)配發5%利息,印出欄位branch_name、customer_name、balance之各資料內容”。,(1)sql查詢句設計為:selectbranch_name,customer_name,balance*1.05asnewbalancefromdeposit其中newbalance為配發5%利息後新得之存款欄位名稱。(2)設計程式select_08.java(參考本書cd檔案)。,3-6條件選取(whereclause),條件選取支援選擇性資料之查詢,設定特定條件,篩除不合條件的資料,只選取滿足條件的資料。常用之條件選取有:單一條件選取(如範例09)、多個條件選取(如範例10)、中間條件選取(如範例11)。,範例09:設計java程式where_09.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出分行(branch_name)perryridge之各借款帳戶帳號(loan_number)與借款額(amount)”。,(1)sql查詢句設計為:selectloan_number,amountfromborrowwherebranch_name=perryridge(2)設計程式where_09.java(如本書cd檔案),範例10:設計java程式where_10.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出分行(branch_name)perryridge、借款額大於2500之各借款帳戶帳號(loan_number)與借款額(amount)”。,(1)sql查詢句設計為:selectloan_number,amountfromborrowwherebranch_name=perryridgeandamount2500(2)設計程式where_10.java(參考本書cd檔案)。,範例11:設計java程式where_11.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款額大於等於2500、和小於等於3000之各借款帳戶帳號(loan_number)與借款額(amount)”。,(1)sql查詢句設計1為:selectloan_number,amountfromborrowwhereamountbetween2500and3000(2)sql查詢句設計2為:selectloan_number,amountfromborrowwhereamount=2500(3)設計程式where_11.java(參考本書cd檔案)。,3-7多個資料表關聯選取(fromclause),一個有效率的機構總是依賴一個分工的組織,資料庫也是一樣,以多個不同功能的資料表奠定分工的基礎。如本章範例資料庫bank03.accdb,存款部門建立資料表deposit、借款部門建立資料表borrow、公關部門建立資料表customer、組織部門建立資料表branch。各部門各依資料表分工作業,必要時亦可相互支援合作,即為本節之多個資料表關聯選取。當將兩個資料表關聯操作時,兩個資料表必須至少有一個相同名稱的欄位,我們可以程式關聯、或以手動關聯執行之,筆者偏向手動關聯,因可降低系統的負擔。,範例12:設計java程式tables_12.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1)與deposit(如圖3-3-4),試請“印出所有持有借款帳戶的客戶(customer_name)及其居住的城市(customer_city)”。,(1)sql查詢句設計為:selectborrow.customer_name,customer.customer_cityfromborrow,customerwhereborrow.customer_name=customer.customer_name因是同時使用兩個資料表,在欄位左端需加置所屬資料表名稱,否則系統將無所適從選擇正確的資料表。(2)設計程式tables_12.java(如本書cd檔案),範例13:與範例12相同,設計java程式tables_13.java,使用資料庫bank03.accdb之查詢表borrow_deposit,試請“印出所有持有借款帳戶的客戶(customer_name)及其居住的城市(customer_city)”。,(1)sql查詢句設計為:selectborrow.customer_name,customer.customer_cityfromborrow_customer(2)設計程式tables_13.java(參考本書cd檔案)。,3-8更名操作(renameoperation),在操作過程中,更改名稱(rename)可將繁雜的名稱整理成精簡的名稱,增加可讀性與應用性,sql提供更名機制“as”,可更改資料表(relations)或欄位(attributes)的名稱。同時也可用於欄位計算後之新名稱(如範例08)。,範例14:設計java程式rename_14.java,使用資料庫bank03.accdb之查詢表borrow_deposit,試請“印出下列sql查詢句之執行結果”。,(1)sql查詢句設計為:selectcustomer_nameasclient_name,customer_cityascityfromborrow,customerwhereborrow.customer_name=customer.customer_nameandbranch_name=perryridge為了降低系統負擔,可以查詢表borrow_customer取代資料表borrow,customer,並將sql字串改為下列字串。(2)sql查詢句設計為:selectcustomer_nameasclient_name,customer_cityascityfromborrow_customerwherebranch_name=perryridge(3)設計程式rename_14.java(參考本書cd檔案):,3-9資料組變數(tuplevariables),有些查詢問題牽涉到資料組間之關係,極不容易解答,但以資料組變數之輔助,則可輕易解決。,範例15:設計java程式variables_15.java,使用資料庫bank03.accdb之資料表deposit,試請“印出其分行名稱(branch_name)與客戶名稱(customer_name),如果有重複之分行名稱,則選取存款額(amount)較大的資料組”。,(1)sql查詢句設計為:selectdistinctt.branch_name,t.customer_namefromdepositast,depositasswheret.balances.balance(2)設計程式variables_15.java(參考本書cd檔案):,3-10字串操作(stringoperations),在sql字串中,有些符號具有特定意義,尤其是字串括號、暫離符號、與模糊取代(like)之用法,常用格式有:1、單引號(singlequote):sql字串以單引號括住字串之兩端,如itismybook。2、雙引號(doublequote):如果字串中已有單號成員,如itsmybook,則以雙引號取代之,如it”smybook。3、百分號(percent)%:用於次字串(substring)之模糊取代(like),如downtown=down%,其中%=town。4、底線(underscore)_:用於字元(character)之模糊取代(like),如down_own=downtown,其中_=t;down_n=downtown,其中_=tow。5、右斜線:視為暫離符號(escape),當字串中有特殊符號時,為了避免誤會,sql提供右斜線作暫離,如10%ofpeople應改為10%ofpeople。,範例16:設計java程式string_16.java,使用資料庫bank03.accdb之查詢表deposit_customer,試請“印出在分行(branch_name)%rryr%所有持有借款帳戶的客戶(customer_name)及其居住的城市(customer_city)”。,(1)sql查詢句設計為:selectcustomer_name,customer_cityfromborrow_customerwherebranch_namelike%rryr%(2)設計程式strein_16.java(參考本書cd檔案):,3-11排序操作(orderingthedisplayoftuples),sql提供指令“orderby”指定某欄位(attribute)為排序欄位,依其中的內容執行資料組(tuples)排序(ordering)。,範例17:設計java程式order_17.java,使用資料庫bank03.accdb之查詢表borrow_customer,試請“印出perryridge分行(branch_name)之所有客戶名稱(customer_name),並依客戶名稱之字母順序作排序”。,(1)sql查詢句設計為:selectcustomer_namefromborrow_customerwherebranch_name=perryridgeorderbycustomer_name(2)設計程式order_17.java(參考本書cd檔案),範例18:設計java程式order_18.java,使用資料庫bank03.accdb之查詢表borrow_customer,試請“印出下列sql之執行結果”。,(1)sql查詢句設計為:selectcustomer_namefromborrow_customerwherebranch_name=perryridgeorderbycustomer_namedesc(2)設計程式order_18.java(參考本書cd檔案)。,範例19:設計java程式order_19.java,使用資料庫bank03.accdb之資料表borrow,試請“印出下列sql之執行結果”。,(1)sql查詢句設計為:select*fromborroworderbyamountasc,loan_namedesc(2)設計程式order_19.java(參考本書cd檔案)。,3-12習題(exercises),01、查詢語言sql是由那三組子句(clauses)所組成?02、sql執行合併相同資料時,其關鍵指令為何?03、sql強迫執行所有資料時,其關鍵指令為何?04、如有多個條件時,sql以何者關鍵指令執行邏輯連接?05、如果條件是取範圍中間值,則使用何者關鍵指令?06、當將兩個資料表關聯操作時,其必要條件為何?07、以手動關聯操作有何意義?08、在操作過程中,更改名稱(rename)有何意義?其關鍵指令為何?09、資料組變數(tuplevariable)有何意義?10、在sql字串中,那些常用符號具有特定意義?11、如何執行資料組(tuples)排序(ordering)?,第四章,集合操作(setoperations),4-1簡介,所謂集合(set)是謂“有一完善定義的範圍(well-definedlist/collection),在範圍內包涵適當數量之元素(elements)”。sql提供集合操作功能,以指令“聯集(union)”、“交集(intersect)、“差集(except)”組合多個資料集合(sets)或運算式。,4-2集合之定義(definitionsofset),集合操作可概分四類運算方法:聯集運算(union)、交集運算(intersect)、相對餘補集運算(relativecomplement)、與絕對餘補集運算(absolutecomplement)。,圖4-2,(a),(b),(c),(d),4-3聯集運算(unionoperation),sql聯集運算(unionoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“or”關係,使用指令“union”。,範例20:設計java程式set_20.java,使用資料庫bank03.accdb之資料表borrow與deposit,試請“印出有存款或是有借款的所有客戶名稱(customer_name)”。,(1)sql查詢句設計為:(selectcustomer_namefromborrow)union(selectcustomer_namefromdeposit)(2)設計程式set_20.java(如本書cd檔案),範例21:比較範例20,設計java程式set_21.java,使用資料庫bank03.accdb之資料表borrow與deposit,試請“印出下列sql查詢句之執行結果”。,(1)sql查詢句設計為:(selectcustomer_namefromborrow)unionall(selectcustomer_namefromdeposit)(2)設計程式set_21.java(如本書cd檔案)。,4-4交集運算(intersectoperation),sql交集操作(intersectoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“and”關係,使用指令“intersect”。,範例22:設計java程式,使用資料庫bank03.accdb之資料表borrow與deposit,試請“印出同時有存款和有借款的所有客戶名稱(customer_name)”。,(1)sql查詢句設計為:(selectcustomer_namefromborrow)intersect(selectcustomer_namefromdeposit)(2)討論事項:資料庫access並未將“intersect”納為保留字指令,亦即無法以其執行交集運算。有關交集運算、access另以巢式子查詢(nestedsubqueries)之“成員集合測試(testsetmembership)”取代執行(如6-2節範例37)。,4-5差集運算(except/minusoperation),sql差集操作(except/minusoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“not”關係,使用指令“except”或“minus”。,範例23:設計java程式,使用資料庫bank03.accdb之資料表borrow與deposit,試請“印出有存款帳戶但無借款帳戶所有客戶名稱(customer_name)”。,(1)sql查詢句設計為:(selectcustomer_namefromdeposit)minus(selectcustomer_namefromborrow)(2)討論事項:如指令“intersect”,資料庫access亦未將“except/minus”納為保留字指令,亦即無法以其執行差集運算。有關差集運算、access另以巢式子查詢(nestedsubqueries)之“成員集合測試(testsetmembership)”取代執行(如6-2節範例38)。,4-6習題(exercises),01、何謂集合(set)?02、何謂聯集運算(union)?03、何謂交集運算(intersection)?04、何謂相對餘補集運算(relativecomplement)?05、何謂絕對餘補集運算(absolutecomplement)?06、sql聯集運算(unionoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“or”關係,使用何者指令?07、sql交集操作(intersectoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“and”關係,使用何者指令?08、資料庫access為何無法以“intersect”執行交集運算?09、sql差集操作(except/minusoperation)如同關聯代數(relationalalgebra)之“”,建立多個資料集合或運算式間之“not”關係,使用何者指令?10、資料庫access為何無法以“except/minus”執行差集運算?,第五章,聚合函數(aggregatefunctions),5-1簡介,sql提供指令“avg”計算特定欄位各資料組之平均值。,範例24:設計java程式aggregate_24.java,使用資料庫bank03.accdb之資料表branch(如圖3-3-2),試請“印出所有分行之平均資產”。,(1)sql查詢句設計為:selectavg(assets)asavg_asstsfrombranch(2)設計程式aggregate_24.java(如本書cd檔案)。,5-3總和值(sum),sql提供指令“sum”計算特定欄位各資料組之總和值。,範例25:設計java程式aggregate_25.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出所有借款帳戶之借款總額(sumofloan)”。,(1)sql查詢句設計為:selectsum(amount)astotal_amountfromborrow(2)設計程式aggregate_25.java(如本書cd檔案)。,範例26:設計java程式aggregate_26.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出各分行(branch_name)借款之總額(group_amount)”。,(1)sql查詢句設計為:selectbranch_name,sum(amount)asgroup_amountfromborrowgroupbybranch_name(2)設計程式aggregate_26.java(如本書cd檔案)。,範例27:設計java程式aggregate_27.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款總額(group_amount)大於3000之各分行(branch_name)”。,(1)sql查詢句設計為:selectbranch_name,sum(amount)asgroup_amountfromborrowgroupbybranch_namehavingsum(amount)3000(2)設計程式aggregate_27.java(如本書cd檔案)。,5-4計數值(count),sql提供指令“count”計算特定欄位各組資料元素之數量。,範例28:設計java程式aggregate_28.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出各分行(branch_name)借款客戶之人數(customer_count)”。,(1)sql查詢句設計為:selectbranch_name,count(customer_name)ascustomer_countfromborrowgroupbybranch_name(2)設計程式aggregate_28.java(如本書cd檔案)。,範例29:設計java程式aggregate_29.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款總額(group_amount)大於3000且至少有2個借款帳戶之各分行(branch_name)”。,(1)sql查詢句設計為:selectbranch_name,sum(amount)asgroup_amountfromborrowgroupbybranch_namehavingsum(amount)3000andcount(customer_name)=2(2)設計程式aggregate_29.java(參考本書cd檔案)。,範例30:設計java程式aggregate_30.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1)與deposit(如圖3-3-4),試請“印出客戶人數(customer_count)大於2之各分行(branch_name)”。,(1)sql查詢句設計為:selectbranch_name,count(customer_name)ascustomer_countfromborrow,depositwhereborrow.branch_name=deposit.branch_namegroupbybranch_namehavingcount(customer_name)=2,範例30:續,(2)為了降低系統的負擔,依3-7-2節步驟,於資料庫bank03.accdb、依borrow.branch_name=deposit.branch_name以手動建立查詢表borrow_deposit,並更改sql查詢句設計為:selectbranch_name,count(customer_name)ascustomer_countfromborrow_depositgroupbybranch_namehavingcount(customer_name)=2(3)設計程式aggregate_30.java(參考本書cd檔案)。,5-5最大值(maximum),sql提供指令“max”搜尋特定欄位各組資料之最大值。,範例31:設計java程式aggregate_31.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出客戶最大借款金額(max_amount)”。,(1)sql查詢句設計為:selectmax(amount)asmax_amountfromborrow(2)設計程式aggregate_31.java(參考本書cd檔案)。,範例32:設計java程式,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款最大金額之客戶(customer_name)與其金額”。,(1)sql查詢句設計為:selectcustomer_name,amountfromborrowwhereamount=max(amount)(2)討論事項:條件字句where不得執行驟合運算,本例將以6-2節範例35取代執行。,5-6最小值(minimum),sql提供指令“min”搜尋特定欄位各組資料之最大值。,範例33:設計java程式aggregate_33.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出客戶最小借款金額(max_amount)”。,(1)sql查詢句設計為:selectmin(amount)asmin_amountfromborrow(2)設計程式aggregate_33.java(參考本書cd檔案)。,範例34:設計java程式,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款最小金額之客戶(customer_name)與其金額”。,(1)sql查詢句設計為:selectcustomer_name,amountfromborrowwhereamount=min(amount)(2)討論事項:如範例33,條件字句where不得執行驟合運算,本例將以6-2節範例36取代執行。,第六章,巢式子查詢(nestedsubqueries),6-1簡介,在查詢句(queryclauses)中另設置子查詢句(subqueryclauses),是謂“巢式子查詢(nestedsubqueries)”,使用項目包括:集合成員測試(testsetmembership)、集合比較設定(makesetcomparisons)、資料存在測試(testforexistedrelations)等。於第四章、第五章無法解決的問題,使用“巢式子查詢(nestedsubqueries)”却可輕易地解答。,6-2集合成員測試(testsetmembership),在主查詢句(queryclauses)中、單純地另設置子查詢句(subqueryclauses),可將子查詢句取得之結果,套諸於主查詢句使用,使問題邏輯簡易化。,範例35:比較範例32,設計java程式nest_35.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1),試請“印出借款最大金額之客戶(customer_name)與其金額”。,(1)sql查詢句設計為(範例32之設計構想):selectcustomer_name,amountfromborrowwhereamount=max(amount)(2)因條件字句where不得執行驟合運算,將sql查詢句更改為:selectcustomer_name,amountfromborrowwhereamount=(selectmax(amount)fromborrow)(3)設計程式nest_35.java(參考本書cd檔案)。,範例36:比較範例34,設計java程式nest_36.java,使用資料庫bank03.accdb之資料表borrow(如圖3-3-1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包装设计中的碳足迹量化方法-洞察及研究
- 支付监管政策对支付成本的影响-洞察及研究
- 生物信息学在药物研发中的应用-洞察及研究
- 抗菌药物协同作用-洞察及研究
- 现代金融基础专升本题库(含答案解析)
- 三基医学专升本题库+参考答案
- 2025年预防医学专升本试题及参考答案解析
- 矿业绿色供应链构建-第1篇-洞察及研究
- 紧急救援个人无息借款协议书
- 软件著作权转让居间协议
- 图解2025年9月10日第41个教师节全文
- 低空旅游项目基础设施建设与可行性研究报告
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 普及鸽子的课件
- 浙江省G12名校协作体2025学年第一学期9月高三上学期开学联考地理试卷
- Unit 2 My friends (Period 1) 课件2025-2026学年人教版英语四年级上册
- 2025版酒店租赁经营合作协议模板:2025年度版
- 2025年烟草专卖局公开遴选面试高分策略及模拟题答案
- 一般性生产经营单位安全管理员主要负责人考核试题及答案
- 乳制品行业智能化奶源管理与追溯方案
评论
0/150
提交评论