780 likes | 967 Views
第十七章 Access 資料庫簡介. 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR 實驗室. 本章大綱. 大綱 本 章介紹 MS Access 資料庫的建立及查詢,並說明關聯性資料表的操作及特性,以及如何使用 GUI 介面來產生查詢資料庫所用的 SQL 指令。後續我們若要在 ASP 網頁和資料庫進行溝通,都必須瞭解資料庫的特性以及 SQL 指令,所以對於「網頁與資料庫整合」而言,這一章是很重要的入門基礎。 主題 17-1 :資料庫簡介 17-2 :資料庫查詢:單一資料表
E N D
第十七章Access 資料庫簡介 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室
本章大綱 • 大綱 • 本 章介紹 MS Access 資料庫的建立及查詢,並說明關聯性資料表的操作及特性,以及如何使用 GUI 介面來產生查詢資料庫所用的 SQL 指令。後續我們若要在 ASP 網頁和資料庫進行溝通,都必須瞭解資料庫的特性以及 SQL 指令,所以對於「網頁與資料庫整合」而言,這一章是很重要的入門基礎。 • 主題 • 17-1:資料庫簡介 • 17-2:資料庫查詢:單一資料表 • 17-3:資料庫查詢:關聯性資料表 • 17-4:關聯對資料處理的影響
17-1:資料庫簡介 • 本小節介紹MSAccess的基本觀念與使用。
資料庫概念 • 資料庫(Databases):由數個資料表(Tables)所形成的集合。 • 資料表:由數筆記錄(Record)所成的集合。 • 每筆記錄都包含數個不同的欄位(Fields)。
資料表格式 (2) • 說明 • 資料表中,每一個橫列稱為一筆記錄。 • 每一個直行稱為欄位,每一筆記錄在某個特定欄位的值稱為「欄位值」。 • 上列資料表,是以序號來進行排序顯示,但在資料庫的內部儲存方式中,並不會有特定的排序。 • 從資料表中抓出資料,欄位的順序是根據欄位創造日期的先後,而記錄的順序是根據「主索引」(Primary Key)的欄位來進行排序,每個資料表可以選定一個欄位來做為主索引,而且主索引欄位的欄位值是不能重覆的。 • 上述歌曲資料表中,主索引可以是序號,這是對每一首歌獨一無二的數值,可以用來代表某一首特定的歌曲。
開啟資料表 • 我們點選 song 的資料表,就可以開啟此表。資料庫:song01.mdb
檢視資料表 (2) • 說明 • 資料表中,可以看到 11 筆記錄,每筆記錄有 4 個欄位。 • 欄位名稱分別是「序號」、「歌曲名稱」、「主唱者」、「年份」。 • 每個欄位都有特定的資料型態,這些資料型態可以由資料表的「設計檢視」來開啟。
設計檢視 (1) • 我們先關掉資料表,再用右鍵點選 song 資料表的圖示,選擇設計檢視。
設計檢視 (3) • 說明 • 開啟資料表的「設計檢視」選項後,可以看到每個欄位的資料類型,例如「自動編號」、「文字」、「數值」等。 • 後面有表列出MSAccess資料類型。
設計檢視 (4) • 點選「文字」右方的小倒三角形,就可以改變這個欄位的資料類型。
可選用的資料類型 (2) • 說明 • 可以使用「設計檢視」來新增或刪除欄位,然後再打開資料表,就可以將一筆一筆的資料輸入到資料表內了。 • 最後別忘了要存檔,再關閉此資料庫。
17-2:資料庫查詢:單一資料表 • 本小節將說明如何對 Access 資料庫進行單一資料表的查詢,特別著重在「圖形使用者介面」(Graphic User Interface,簡稱 GUI)的使用。
設計查詢 (1) • 以 song01.mdb 來說明。首先開啟資料庫,同時點選「查詢」物件。
設計查詢 (2) • 點選「使用設計檢視建立新查詢」後可得。
設計查詢 (3) • 說明 • 按「新增」,就可以將資料表「song」加入目前的查詢,然後按「關閉」。 • 要找「張惠妹所唱的歌曲」,可以分兩步驟: • 選取相關欄位:點選上半部的「歌曲名稱」,拖放到下半部的第一個欄位,再點選上半部的「主唱者」,拖放到下半部的第二個欄位。 • 設定欄位選取準則:將「主唱者」欄位的「準則」空格填入「張惠妹」。 • 結果如下頁圖示所示。
執行查詢 (1) • 要執行查詢,可以直接點選工具列的驚嘆號。
執行查詢 (2) • 說明 • 所列出來的資料就是張惠妹所唱的歌。 • 當你要關掉這個查詢結果時,Access 會詢問你是否要儲存這個查詢,你可以將它直接儲存成「張惠妹所唱的歌曲」。 • 下次只要你點選這個查詢,系統自然就會從資料表中,抓出並顯示符合查詢準則的資料。
查詢方式 • 一個查詢可以有不同的檢視方式,例如: • 設計檢視:以圖形使用者介面來進行查詢的設計 。 • 資料表檢視:查詢所得的資料列表 。 • SQL 檢視:以文字化的 SQL(Structure Query Language)指令來指定查詢 。
SQL檢視 (1) • 顯示此查詢對應的 SQL 指令,只要在打開查詢後(使用「設計檢視」或「資料表檢視」),點選工具列的第一個按鈕,並下拉至「SQL 檢視」。
SQL檢視 (3) • 說明 • Access 由「設計檢視」產生 SQL 指令時,有時候會在資料表名稱或欄位名稱加上中括弧,以避開資料表名稱或欄位名稱中,可能出現的空白或其它特殊字元。 • 使用 ASP 與資料庫整合時,對資料庫的處理必須倚賴 SQL 指令。 • 用「設計檢視」產生需要的查詢,再將此查詢轉換成 SQL 指令,就可以貼到 ASP 的程式碼裡面。
資料表排序 • 查詢「張惠妹所唱的歌(依年代由近而遠排序)」:在查詢加入"年份"欄位後,並點選"排序",選擇"遞減排序",並點選驚嘆號執行。
使用AND查詢資料 (1) • 查詢「張惠妹在 1998 年所唱的歌」:在「年份」欄位新增準則。
使用AND查詢資料 (2) • 說明 • 相對應的SQL指令 • "="的意義和JavaScript不同,在這邊跟JavaScript中的"=="一樣表示"相等"意思的。 • SELECT後面的“song.“可以忽略不寫。
使用OR查詢條件 (1) • 考慮下列查詢:「2002年的歌曲或是由張惠妹主唱的歌曲」。
使用OR查詢條件 (2) • 說明 • 若有數個條件必須同時成立(「且」,And),我們就要將比對字串或數值放在「準則」的同 一列。 • 若這些條件只要一個成立即可(「或」,Or),我們就要將這些條件放在「準則」以下的不同列。 • 以 Access 的圖形使用者介面來進行查詢,只能用於當所有的比對條件都是「且」或都是「或」的情況,若有較複雜的邏輯判斷式,就必須靠 SQL 指令來達成。 • 上述查詢中,相對應的 SQL指令
顯示不重複的查詢資料 (1) • 查詢「歌星列表」:使用滑鼠右鍵先點選查詢視窗的下半部任意處,再選取「合計」功能。
顯示不重複的查詢資料 (2) • 查詢畫面會多一個名稱為「合計」橫列,其內容為「群組」,此功能可將相同的紀錄先排序後,再將相同的數筆紀錄合併成一筆。
顯示不重複的查詢資料 (3) • 執行查詢結果後
顯示不重複的查詢資料 (4) • 說明 • 因為使用「群組」功能,所以上述是已經排序過的結果。 • 相對應的 SQL 指令 • “GROUP BY” 就是「群組」功能,可以將欄位中相同的數筆紀錄合併成一筆。
顯示不重複的查詢資料 (5) • 說明 • 另一個相同效果的SQL指令 • 此查詢可得到相同結果,但是卻無法由「設計檢視」看到 DISTINCT 的功能,只能由「SQL檢視」來指定。
查詢總數 (1) • 查詢「歌曲總數」:在產生「合計」橫列後,將滑鼠焦點移到「群組」,就可以顯示下拉選單的按鈕,按下後,請選擇「筆數」。
查詢總數 (2) • 執行查詢後
查詢總數 (3) • 說明 • 顯示查詢中代表資料表中共有 11 筆資料。 • 相對應的 SQL 指令 • “Count()”表示計算某個欄位的資料總數。 • “AS”表示自訂查詢資料表的名稱。
設計檢視指定不周詳 (1) • 查詢「張惠妹所唱歌曲的總數」:直覺的做法是將「主唱者」的「準則」設定成「張惠妹」,並選取「合計」的「群組」功能。
設計檢視指定不周詳 (2) • 說明 • 執行查詢時,會產生「準則運算式的資料類型不符合」的錯誤訊息。 • 若選用「SQL檢視」,可看到相對應的 SQL 指令 • 錯誤發生在最後一列的條件,因為 Count 是一個函數,只能用來計算資料的筆數,所以我們可以用手動改成
設計檢視指定不周詳 (3) • 再選用「設計檢視」,畫面事實上有點亂,而且不容易懂,這也顯示有一些簡單的查詢可能還是用 SQL 命令最適合,若要用簡單易懂的圖形介面來表示,反而有困難。
設計檢視指定不周詳 (4) • 查詢結果
查詢群組資料的總數 (1) • 查詢「每一位歌手唱過的歌曲數目」:在「主唱者」欄位選取「合計/群組」,然後在「歌曲名稱」欄位選取「合計/筆數」。
查詢群組資料的總數 (2) • 說明 • 選用「SQL檢視」,可看到相對應的 SQL 指令
查詢群組資料的總數 (3) • 查詢結果
17-3:資料庫查詢:關聯性資料表 • 本小節介紹資料表間的查詢與關聯,產生出更有意義的查詢。
關聯性資料表 (1) • 資料庫可以包含數個資料表,不同資料表之間的欄位可以有關聯性。 • 我們可以根據這些資料欄位的關聯性來使資料庫的資料更符合實際世界的狀況,此種具有關聯性的資料庫,即稱為關聯性資料庫(Relational Databases)。
關聯性資料表 (2) • 以 song01.mdb內的 song 資料表來說明
關聯性資料表 (3) • 說明 • 「主唱者」的欄位中很多資料是重複的,如果我們還要增加和「主唱者」相關的資料, 例如「出道年份」、「身高」、「嗜好」等,就會增加更多重覆的資料。 • 我們可以將和主唱者相關的資料放到另一個資料表 singer,並指定每首歌曲所對應的歌手,這樣做的好處是: • 減少資料的重複:例如「張惠妹」的資料不會出現很多次。 • 保持資料的一致性:「張惠妹」只有一筆資料,因此不需要輸入「張惠妹」很多次,也比較不會出現把「張惠妹」誤輸入成「張蕙妹」的情況。 • 保持資料的完整性:例如我們可以規定,沒有對應歌手的歌曲資料,不允許登錄到 song 資料庫。