Java库关联查询课件_第1页
Java库关联查询课件_第2页
Java库关联查询课件_第3页
Java库关联查询课件_第4页
Java库关联查询课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二篇Java資料庫關聯查詢第二篇 資料庫(Database) 設計的重點考量為資料儲存(Data Store) 與資料查詢(Data Query),儲存資料要井然有序,查詢資料要迅速有效,前者將於爾後詳細討論,本篇將專業討論 “如何以Java程式使用SQL字串作迅速有效地資料查詢?”。 資料庫(Database) 設計的重點考量為資料儲存(Da第三章基礎操作(Basic Operations)第三章3-1 簡介本章將針對現今資料庫使常用的資料錄關聯模型(Record Relational Model),在資料查詢上,作有系統地探討,以Access2007為範例資料庫、以Java為程式語言、以

2、SQL為查詢語言,執行各類基礎查詢。3-1 簡介本章將針對現今資料庫使常用的資料錄關聯模型(Re3-3 SQL查詢基礎架構(Basic Query Structure)關聯式資料庫(Relational Database) 是由多個資料表(Relations) 組合而成,每一資料表都有一個獨一無二的名稱,其查詢語言SQL是由三組子句(Clauses) 所組成:欄位選取子句(select Clause)、資料表選取子句(from Clause)、與條件子句(where Clause)。3-3 SQL查詢基礎架構(Basic Query Str3-5 欄位選取查詢(select Clause) 關

3、聯式資料庫(Relational Database) 是由數個資料表(Relational Table) 所組成,表格為資料錄(Record) 形態,由數個欄位(Columns) 組成。欄位與欄位間、表格與表格之間有其一定的數學關係,依照這些關係,我們可精準地執行指定之查詢。3-5 欄位選取查詢(select Clause) 關聯範例04:設計Java程式Select_04.java,使用資料庫Bank03.accdb之資料表Deposit(如圖3-3-4),試請 “印出欄位branch_name之各資料內容”。01 import java.sql.*;02 public class Sele

4、ct_04 03 public static void main(String args) 04 String JDriver = sun.jdbc.odbc.JdbcOdbcDriver;05 String connectDB=jdbc:odbc:Bank03;06 try 07 Class.forName(JDriver);08 09 catch(java.lang.ClassNotFoundException e) 10 System.out.println(ForName : + e.getMessage();11 範例04:設計Java程式Select_04.java,使範例04:續

5、12 try 13 Connection con = DriverManager.getConnection(connectDB);14 Statement stmt = con.createStatement();15 ResultSet rs = stmt.executeQuery(SELECT branch_name + FROM Deposit);16 System.out.println( branch_name);17 System.out.println(-);18 while(rs.next() 19 System.out.println(rs.getString(branch

6、_name);20 21 stmt.close();22 con.close();23 24 catch(SQLException e) 25 System.out.println(SQLException: +e.getMessage();26 27 28 範例04:續12 try 範例05:參考範例04,設計Java程式Select_05.java,使用資料庫Bank03.accdb之資料表Deposit(如圖3-3-4),試請 “印出欄位branch_name之各資料內容,使用distinct”。(1) SQL查詢句設計為: SELECT distinct branch_name FRO

7、M Deposit (2) 設計程式Select_05.java(參考本書CD檔案)。範例05:參考範例04,設計Java程式Select_0範例06:參考範例05,設計Java程式Select_06.java,使用資料庫Bank03.accdb之資料表Deposit(如圖3-3-4),試請 “印出欄位branch_name之各資料內容,使用all”。(1) SQL查詢句設計為: SELECT all branch_name FROM Deposit (2) 設計程式Select_06.java(參考本書CD檔案)。範例06:參考範例05,設計Java程式Select_0範例07:設計Java

8、程式Select_07.java,使用資料庫Bank03.accdb之資料表Deposit(如圖3-3-4),試請 “印出欄位branch_name、customer_name之各資料內容”。(1) SQL查詢句設計為: SELECT branch_name, customer_name FROM Deposit (2) 設計程式Select_07.java(參考本書CD檔案)。範例07:設計Java程式Select_07.java,使範例08:設計Java程式Select_08.java,使用資料庫Bank03.accdb之資料表Deposit(如圖3-3-4),試請 “於存款額(balan

9、ce) 配發5%利息,印出欄位branch_name、customer_name、balance之各資料內容”。(1) SQL查詢句設計為: SELECT branch_name, customer_name, balance*1.05 as newbalance FROM Deposit 其中newbalance為配發5%利息後新得之存款欄位名稱。 (2) 設計程式Select_08.java(參考本書CD檔案)。範例08:設計Java程式Select_08.java,3-6 條件選取(where Clause) 條件選取支援選擇性資料之查詢,設定特定條件,篩除不合條件的資料,只選取滿足條件

10、的資料。常用之條件選取有:單一條件選取(如範例09)、多個條件選取(如範例10)、中間條件選取(如範例11)。3-6 條件選取(where Clause) 條件選取支範例09:設計Java程式Where_09.java,使用資料庫Bank03.accdb之資料表Borrow(如圖3-3-1),試請 “印出分行(branch_name) Perryridge之各借款帳戶帳號(loan_number) 與借款額(amount)”。(1) SQL查詢句設計為: SELECT loan_number, amount FROM Borrow WHERE branch_name= Perryridge (

11、2) 設計程式Where_09.java(如本書CD檔案)範例09:設計Java程式Where_09.java,使範例10:設計Java程式Where_10.java,使用資料庫Bank03.accdb之資料表Borrow(如圖3-3-1),試請 “印出分行(branch_name) Perryridge、借款額大於2500之各借款帳戶帳號(loan_number) 與借款額(amount)”。(1) SQL查詢句設計為: SELECT loan_number, amount FROM Borrow WHERE branch_name = Perryridge and amount 2500

12、(2) 設計程式Where_10.java(參考本書CD檔案)。範例10:設計Java程式Where_10.java,使範例11:設計Java程式Where_11.java,使用資料庫Bank03.accdb之資料表Borrow(如圖3-3-1),試請 “印出借款額大於等於2500、和小於等於3000之各借款帳戶帳號(loan_number) 與借款額(amount)”。(1) SQL查詢句設計1為: SELECT loan_number, amount FROM Borrow WHERE amount between 2500 and 3000(2) SQL查詢句設計2為: SELECT l

13、oan_number, amount FROM Borrow WHERE amount =2500 (3) 設計程式Where_11.java(參考本書CD檔案)。範例11:設計Java程式Where_11.java,使用資3-7 多個資料表關聯選取(from Clause) 一個有效率的機構總是依賴一個分工的組織,資料庫也是一樣,以多個不同功能的資料表奠定分工的基礎。如本章範例資料庫Bank03.accdb,存款部門建立資料表Deposit、借款部門建立資料表Borrow、公關部門建立資料表Customer、組織部門建立資料表Branch。各部門各依資料表分工作業,必要時亦可相互支援合作,即

14、為本節之多個資料表關聯選取。當將兩個資料表關聯操作時,兩個資料表必須至少有一個相同名稱的欄位,我們可以程式關聯、或以手動關聯執行之,筆者偏向手動關聯,因可降低系統的負擔。3-7 多個資料表關聯選取(from Clause) 一個有範例12:設計Java程式Tables_12.java,使用資料庫Bank03.accdb之資料表Borrow(如圖3-3-1) 與Deposit(如圖3-3-4),試請 “印出所有持有借款帳戶的客戶(customer_name) 及其居住的城市(customer_city)”。(1) SQL查詢句設計為: SELECT Borrow.customer_name, C

15、ustomer.customer_city FROM Borrow, Customer WHERE Borrow.customer_name = Customer.customer_name 因是同時使用兩個資料表,在欄位左端需加置所屬資料表名稱,否則系統將無所適從選擇正確的資料表。(2) 設計程式Tables_12.java(如本書CD檔案)範例12:設計Java程式Tables_12.java,範例13:與範例12相同,設計Java程式Tables_13.java,使用資料庫Bank03.accdb之查詢表Borrow_Deposit,試請 “印出所有持有借款帳戶的客戶(customer_

16、name) 及其居住的城市(customer_city)”。(1) SQL查詢句設計為: SELECT Borrow.customer_name, Customer.customer_city FROM Borrow_Customer(2) 設計程式Tables_13.java(參考本書CD檔案)。範例13:與範例12相同,設計Java程式Tables_3-8 更名操作(Rename Operation) 在操作過程中,更改名稱(Rename) 可將繁雜的名稱整理成精簡的名稱,增加可讀性與應用性,SQL提供更名機制 “as”,可更改資料表(Relations) 或欄位(Attributes)

17、的名稱。同時也可用於欄位計算後之新名稱(如範例08)。3-8 更名操作(Rename Operation) 在範例14:設計Java程式Rename_14.java,使用資料庫Bank03.accdb之查詢表Borrow_Deposit,試請 “印出下列SQL查詢句之執行結果”。(1) SQL查詢句設計為: SELECT customer_name as client_name, customer_city as city FROM Borrow, Customer WHERE Borrow.customer_name = Customer.customer_name and branch_n

18、ame = Perryridge 為了降低系統負擔,可以查詢表Borrow_Customer取代資料表Borrow, Customer,並將SQL字串改為下列字串。(2) SQL查詢句設計為: SELECT customer_name as client_name, customer_city as city FROM Borrow_Customer WHERE branch_name = Perryridge(3) 設計程式Rename_14.java(參考本書CD檔案):範例14:設計Java程式Rename_14.java,3-9 資料組變數(Tuple Variables) 有些查詢問

19、題牽涉到資料組間之關係,極不容易解答,但以資料組變數之輔助,則可輕易解決。3-9 資料組變數(Tuple Variables) 有範例15:設計Java程式Variables_15.java,使用資料庫Bank03.accdb之資料表Deposit,試請 “印出其分行名稱(branch_name) 與客戶名稱(customer_name),如果有重複之分行名稱,則選取存款額(amount) 較大的資料組”。(1) SQL查詢句設計為: SELECT distinct T.branch_name, T.customer_name FROM Deposit as T, Deposit as S W

20、HERE T.balance S.balance(2) 設計程式Variables_15.java(參考本書CD檔案):範例15:設計Java程式Variables_15.ja3-10 字串操作(String Operations) 在SQL字串中,有些符號具有特定意義,尤其是字串括號、暫離符號、與模糊取代(like) 之用法,常用格式有:1、單引號(Single Quote):SQL字串以單引號括住字串之兩端,如 It is my book 。2、雙引號(Double Quote):如果字串中已有單號成員,如 Its my book,則以雙引號取代之,如 It”s my book。3、百分號

21、(Percent) %:用於次字串(Sub String) 之模糊取代(like),如 downtown = down%,其中 % = town。4、底線(Underscore) _:用於字元(Character) 之模糊取代(like),如 down_own = downtown,其中 _ = t; down_ _ _n = downtown,其中 _ _ _ = t o w。5、右斜線 :視為暫離符號(Escape),當字串中有特殊符號時,為了避免誤會,SQL提供右斜線 作暫離,如 10% of people 應改為 10% of people。3-10 字串操作(String Opera

22、tions) 範例16:設計Java程式String_16.java,使用資料庫Bank03.accdb之查詢表Deposit_Customer,試請 “印出在分行(branch_name) %rryr% 所有持有借款帳戶的客戶(customer_name) 及其居住的城市(customer_city)”。(1) SQL查詢句設計為: SELECT customer_name, customer_city FROM Borrow_Customer WHERE branch_name like %rryr%(2) 設計程式Strein_16.java(參考本書CD檔案):範例16:設計Java程

23、式String_16.java,3-11 排序操作(Ordering the Display of Tuples) SQL提供指令 “order by” 指定某欄位(Attribute) 為排序欄位,依其中的內容執行資料組(Tuples) 排序(Ordering)。3-11 排序操作(Ordering the Display範例17:設計Java程式Order_17.java,使用資料庫Bank03.accdb之查詢表Borrow_Customer,試請 “印出Perryridge分行(branch_name) 之所有客戶名稱(customer_name),並依客戶名稱之字母順序作排序”。(1) SQL查詢句設計為: SELECT customer_name FROM Borrow_Customer WHERE Branch_name = Perryridge ORDER BY customer_name (2) 設計程式Order_17.java(參考本書CD檔案)範例17:設計Java程式Order_17.java,使範例18:設計Java程式Or

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论