




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章查詢的創建及應用
本章學習目標
對于數據庫應用系統的一般用戶來說,數據庫中的數據是不可見的,如果要知道數據庫中存在的數據,需要通過查詢來實現。另外,很多窗體和報表的設計也是基于查詢的結果,因而查詢對于ACCESS數據庫技術的后續章節的學習也是及其重要的。查詢可以是單表查詢,也可以是多表的查詢。通過本章的學習,應該熟練掌握使用向導和設計視圖建立查詢的兩種不同方法;熟練掌握使用向導和設計視圖建立選擇查詢、交叉表查詢和操作查詢(生成表查詢、更新查詢、刪除查詢以及追加查詢)的方法,以及使用條件和各種函數或計算表達式來建立預定義查詢和自定義查詢的方法,還需要掌握用SQL查詢建立數據定義查詢、聯合查詢、選擇查詢、操作查詢及子查詢的方法。5.1查詢的基本知識
簡單來說,查詢就是從數據庫的表里檢索需要的數據。使用查詢可以從一個或多個表中檢索符合條件的數據,并以視圖的方式呈現給用戶。查詢的結果也可以作為窗體和報表以及數據訪問頁等對象的數據來源,所以查詢是數據庫應用程序中一個十分重要的部分。
5.1.1查詢的概念
查詢是按照一定的規則或條件從一個或多個表中檢索需要的數據,并可以對檢索出的數據完成統計、分類和計算等操作,從而形成一個動態的數據集。當基表中的數據發生變化時,查詢結果也會發生相應的變化,同時用戶如果修改了這個動態的數據集中的信息時,這種修改也可以反映到基表中,因而可以利用查詢進行一些管理數據庫的操作。
5.1.2查詢的目的
查詢是數據庫中的一種對象,目的是根據用戶限定的條件對表或其他查詢中的數據進行檢索,篩選出符合條件的記錄,并構成一個動態的數據集合,它實際上并不存在,每次運行查詢時,Access便從查詢的數據表中的數據創建記錄集,當前數據表中的信息將決定查詢的結果。查詢結果隨著源表中數據的改變而改變,這也就是動態的意義所在。
在后面的章節中我們會多次用到查詢,特別是對于窗體和報表。窗體以一定的界面顯示查詢的結果,并且可以通過一系列的控件對查詢的結果進行控制。報表主要可以對查詢的結果進行一些統計分析和布局控制,例如求總和及平均值等。另外,查詢時Access的工具還可以生成SQL語句,可以直接將這些代碼粘貼到需要的程序代碼中使用,減輕程序開發人員的工作量。
5.1.3查詢的種類
在Access2003中,查詢主要有下列五種類型:
1.選擇查詢:選擇查詢是最常見的一種查詢類型,它從一個或多個表中檢索數據并以數據表的形式顯示查詢結果。在選擇查詢中可以對記錄進行分組,并且對記錄做總計、計數、平均值以及其他的運算。
2.參數查詢:參數查詢是在運行查詢時顯示一個或多個對話框提示用戶,用戶可在對話框中輸入查詢條件,從而動態地生成查詢結果。例如,可以設計它來提示輸入兩個日期,然后檢索在這兩個日期之間的所有記錄。
3.交叉表查詢:使用交叉表查詢可以計算并重新組織數據的結構,可以更加方便地分析數據。交叉表查詢計算數據的總和、平均值、計數或其他類型的總計計算,這種數據可分為兩組信息:一組排列在數據表的左側,另一組排列在數據表的頂端。
4.操作查詢:
操作查詢也可以說是動作查詢,執行操作查詢后,它會對數據表的記錄內容產生影響。操作查詢又可分為五種類型:刪除查詢、更新查詢、追加查詢、生成表查詢和SQL查詢。(1)刪除查詢
從一個或多個表中刪除一個或一組記錄。例如,可以使用刪除查詢來刪除某門課程成績不及格的學生。使用刪除查詢,將刪除整個記錄而不只是記錄中的一些字段。(2)更新查詢
對一個或多個表中的一個或一組記錄進行更改。例如,可以給選修某門課程的學生的學分增加2分。使用更新查詢,可以更改表中已有的數據。
(3)追加查詢
將一個或多個表中的一組記錄添加到另一個或多個表的尾部。例如,獲得了一些包含新學生信息表的數據庫,利用追加查詢將有關新學生的數據添加到原有“學生”表中即可,不必手工鍵入這些內容。
(4)生成表查詢
生成表查詢,將在一個或多個表中查詢到的全部或部分數據保存到一個新建表中,即生成新的數據表。(5)SQL查詢
SQL查詢是使用SQL語句創建的查詢。可以使用結構化查詢語言SQL來查詢、更新和管理Access數據庫。經常使用的SQL查詢包括聯合查詢、傳遞查詢、數據定義查詢和子查詢等。5.2創建查詢的方法
創建查詢主要有兩種方法:使用“向導”創建查詢和在設計視圖中創建查詢。使用“向導”可以創建簡單的選擇查詢、交叉表查詢、查找重復項查詢和查找不匹配項查詢。一般在創建查詢時,可以先使用向導來快速創建查詢,如果查詢的結果不能滿足我們的需要,可以在設計視圖中對其修改。5.2.1使用向導創建查詢
Access中的很多數據庫對象都可以使用向導來實現,前面我們使用“表向導”來創建數據表,這里我們同樣可以使用查詢向導來創建查詢。Access2003中提供了4種查詢向導。◆簡單查詢向導:可以從一個表或多個表中選擇字段,主要用于創建選擇查詢。◆交叉表查詢向導:是可以創建查詢來計算所有行與列總值的查詢向導。
◆查找重復項查詢向導:是可以用來創建查詢以確定表中是否有重復的記錄的查詢向導。◆查找不匹配項查詢向導:是可以創建查詢以確定表中的記錄是否和相關表中的記錄無關的查詢向導。實例5-1:使用簡單查詢向導創建顯示課程表中所有信息的單表查詢。
操作步驟如下:(1)在“學生信息:數據庫”窗口中,單擊“對象”下的“查詢”。(2)單擊“學生信息:數據庫”窗口工具欄上的“新建”按鈕,打開如圖5-1所示的“新建查詢”對話框。選擇“簡單查詢向導”,然后單擊“確定”按鈕。圖5-1“新建查詢”對話框
(3)在“表/查詢”下拉列表中,選擇“課程”表作為查詢對象的表。如果要添加某個可用字段到“選定的字段”列表中,可以直接雙擊該字段,也可以單擊選擇該字段以后,然后單擊按鈕,將該字段添加到“選定的字段”列表框中。由于本實例是顯示課程表中所有信息,所以可以直接單擊按鈕,一次添加表中所有字段到“選定的字段”列表中。如圖5-2所示。
圖5-2簡單查詢向導(一)(4)單擊“下一步”按鈕,在“請確定采用明細查詢還是匯總查詢:”選擇“明細”。如圖5-3所示。圖5-3簡單查詢向導(二)
(5)單擊“下一步”按鈕,在“請為查詢指定標題:”框中輸入查詢的名稱“課程表查詢”,選擇“打開查詢查看信息”選項,如圖5-4所示。圖5-4簡單查詢向導(三)
(6)單擊“完成”,顯示查詢的結果集,如圖5-5所示。圖5-5“課程表查詢”結果集
5.2.2在設計視圖中創建查詢
使用查詢向導創建查詢時,可以實現簡單的選擇查詢和交叉表查詢等,但是不能對查詢結果進行過濾,返回結果集時包含源表中的所有數據。但在設計視圖中創建查詢可以完全按照用戶需求得到查詢的結果,還可以設置一些篩選條件,并可以對已有的查詢進行編輯或修改,以適應用戶需求。在設計視圖中創建查詢主要是利用查詢設計器進行操作。實例5-2:在設計視圖中針對學生信息數據庫中的“學生”表創建一個查詢名為“專業為國際金融的學生”的查詢。操作步驟如下:(1)在“學生信息:數據庫”窗口中,單擊左側“對象”下的查詢,在右側的對象列表框中雙擊“在設計視圖中創建查詢”(也可以單擊窗口的上方的“新建”按鈕,然后在出現的“新建查詢”窗口中選擇“設計視圖”),打開查詢設計窗口,同時出現如圖5-6所示的“顯示表”對話框所示。圖5-6查詢的設計視圖
(2)在“顯示表”窗口中把要查詢的表或查詢添加到查詢設計器窗口中。可以在“顯示表”窗口中雙擊要添加的表或查詢或單擊要添加的表或查詢,再單擊“添加”按鈕,這里我們根據題目要求添加的是“學生”表。然后單擊“關閉”按鈕,進入查詢設計視圖窗口,如圖5-7所示。
查詢的設計視圖分為上下兩個部分,上半部分用來顯示查詢要使用的表或查詢,稱為表/查詢輸入窗口;下半部分用來指定和修改具體的查詢條件以獲得所需的查詢結果,稱為查詢設計網格,即QBE網格。QBE網格中各個行的含義如下:圖5-7查詢設計視圖窗口
◆字段:在查詢結果中要顯示的字段名稱。如“學號”、“姓名”等。◆表:字段所屬的表。◆排序:查詢結果中字段值的排列順序(升序或降序)。◆顯示:決定當前字段是否在查詢結果集中顯示,選中表示顯示,否則不顯示。◆條件:檢索數據的條件,通過設定條件可以確定顯示哪些記錄,如學生表中的專業字段的條件輸入”=國際金融”,則查詢結果中顯示國際金融專業的學生。◆或:用于多條件查詢中的或關系,如在學生表中查詢“國際金融”或“計算機網絡”專業的學生。
(3)向“QBE”網格中添加字段。單擊QBE網格第一列第一行的向下箭頭,在顯示的字段列表中選擇需要操作的字段,或直接雙擊需要添加的字段,或直接雙擊表中需要的字段。本例選擇“學生”表中的所有字段。(4)設置查詢的條件。在“專業”字段的“條件”單元格中輸入“國際金融”,如圖5-8所示。(5)單擊工具欄上的“保存”按鈕,或選擇“文件”菜單下的“保存”命令,打開“另存為”對話框,輸入查詢的名稱,這里我們輸入“專業為國際金融的學生”,單擊“確定”按鈕,保存查詢。(6)單擊工具欄上的“運行”按鈕,運行查詢,或單擊工具欄上的“視圖”按鈕,切換到數據表視圖,顯示查詢結果,如圖5-9所示。
圖5-8查詢的設計視圖
圖5-9在數據表視圖中查詢查詢結果
5.3各種查詢的創建
在本章第一節中我們講述查詢的種類時,說明了查詢分為5種類型,它們各自有自己的特點,有不同的用途。下面講述這5種類型的查詢。
5.3.1創建選擇查詢
選擇查詢是一種最簡單的查詢,在本章第二節中我們分別使用查詢向導和查詢的設計視圖建立了簡單的選擇查詢,但是前面兩個實例涉及的都是單表查詢,其實查詢可以在不同的表之間進行,從而得到單表查詢不能實現的結果集。這里我們以一個多表查詢的實例來進一步了解選擇查詢的使用。
實例5-3:使用“簡單查詢向導”創建一個多表查詢,查詢每個學生的學號、姓名、課程名稱和成績。
操作步驟如下:(1)在“學生信息:數據庫”窗口中,單擊“對象”下的“查詢”。在右側的對象列表中選擇“使用向導創建查詢”,打開“簡單查詢向導”對話框。(2)在“表/查詢”下拉列表中,選擇“學生”表,將“學號”和“姓名”字段添加到“選定的字段”列表中;再選擇“課程”表中的“課程名稱”字段和“成績”表中的“考試成績”字段添加到“選定的字段”列表中,如圖5-10所示。(3)單擊“下一步”按鈕,選擇“明細”選項。(4)單擊“下一步”按鈕,為查詢指定標題“學生成績查詢”,單擊“完成”按鈕。(5)系統運行查詢后,出現如圖5-11所示的結果集。圖5-10“簡單查詢向導”(一)
圖5-11“學生成績查詢”結果集5.3.2創建參數查詢
參數查詢是在執行時通過顯示的輸入對話框從鍵盤輸入相關查詢條件,然后根據輸入的查詢條件,顯示滿足查詢條件的結果集。參數查詢的好處是當進行不同條件的查詢時,不必每次查詢時都修改查詢的設計,而可以在查詢運行時根據輸入的參數進行查詢,這樣增加了查詢的靈活性。參數查詢是選擇查詢的一種,它的創建方式和選擇查詢的創建方式相同。實例5-4:修改實例5-3建立的“學生成績查詢”,使其變成參數查詢,根據輸入的學生姓名,顯示出該學生相應課程的成績。操作步驟如下:(1)打開“學生成績查詢”,將其另存為“指定學生姓名的成績查詢”。(2)在設計視圖中的“姓名”字段單元格輸入提示性的文字“[請輸入學生姓名:]”,如圖5-12所示。(3)單擊工具欄的“運行”按鈕或“視圖”按鈕下的“數據表視圖”,運行該查詢,出現如圖5-13所示的“輸入參數值”對話框,在其中輸入學生表中的任意一個學生姓名,然后單擊“確定”,可顯示該學生相關課程的成績信息,如圖5-14中顯示郭娟的各科成績。圖5-12參數查詢圖5-13“輸入參數值”對話框
圖5-14查詢的結果集
實例5-5:創建一個多參數的查詢,查詢學生表中入學成績在500分至600分的學生的所有信息。
操作步驟如下:
(1)在設計視圖中新建一個查詢。
(2)在數據環境中添加“學生”表,將“學生”表中的所有字段添加到“QBE”窗口的網格中,如圖5-15所示。
(3)在“入學成績”字段的“條件”單元格輸入以下內容Between[請輸入初始分數:]And[請輸入終止分數:](4)單擊工具欄的“保存”按鈕,輸入查詢的名稱“多參數查詢”,單擊“確定”按鈕,保存查詢。單擊工具欄上的“運行”按鈕,在先后出現的“輸入參數值”對話框中,分別輸入500和600,如圖5-16、5-17所示,就可以得到學生入學成績在500分至600分的所有記錄的信息,如圖5-18所示。圖5-15多參數查詢設置條件圖5-16輸入第一個參數圖5-17輸入第二個參數
圖5-18多參數查詢結果集
5.3.3創建交叉表查詢
交叉表查詢是Access2003中一種很重要的查詢,交叉表查詢除了可以得到數據表里的基本信息外,還可以通過對查詢對數據進行總計、求平均值、計數等操作,實現數據表中的數據統計操作,查詢的數據可分為兩組信息:一組信息排列在數據表的左側,另一組信息排列在數據表的頂端。下面我們分別使用向導和設計視圖兩種方式來創建交叉表查詢。需要說明的是使用向導時,交叉表查詢的數據來源只能是一個表或一個查詢,而使用設計視圖時數據來源則可以是多個表或查詢。1.使用向導創建交叉表查詢
實例5-6:使用查詢向導創建一個交叉表查詢,顯示學生所學課程的考試成績總和。操作步驟如下:
(1)在“學生信息:數據庫”窗口中選中“查詢”對象,單擊工具欄中的“新建”按鈕,打開“新建查詢”對話框,在其中選擇“交叉表查詢向導”選項,單擊“確定”按鈕。
(2)在出現的“交叉表查詢向導”對話框的“視圖”選項中選擇“查詢”,并選中上方顯示的“查詢:學生成績查詢”選項作為查詢的數據源,如圖5-19所示。圖5-19交叉查詢向導(3)單擊“下一步”按鈕,打開如圖5-20所示的對話框,在這個對話框中選擇一個字段作為“行標題”。這里我們選擇“姓名”字段(行標題是出現在結果集的每一行最左邊的字段名稱)。
(4)單擊“下一步”按鈕,打開如圖5-21所示的對話框,選擇一個字段作為列標題,這里我們選擇“課程名稱”作為列標題(列標題是出現在結果集列的頂端)。
(5)單擊“下一步”按鈕,在出現的對話框中選擇“考試成績”字段作為計算的交叉點,并在“函數”列表框中選擇“求和”,實現求“考試成績的總和”,同時保持“是,包括各行小計”復選框為選中狀態。如圖5-22所示。
(6)單擊“下一步”按鈕,為交叉表查詢指定名稱(“學生成績查詢_交叉表”),并選擇默認的“查看查詢”選項,單擊完成按鈕,出現如圖5-23所示的結果集。圖5-20選擇行標題字段圖5-21選擇列標題字段圖5-22選擇交叉點字段圖5-23交叉表查詢結果集2.使用設計視圖創建交叉表查詢實例5-7:在設計視圖中創建和上例相同的交叉表查詢。操作步驟如下:(1)在設計視圖下打開“學生成績查詢”,并將其另存為“學生成績_交叉表”。(2)選擇“查詢”菜單下的“交叉表查詢”菜單項,可以看到查詢的標題變為“交叉表查詢”,如圖5-24所示。(3)在“QBE”窗口的網格中已經選擇了查詢所需的“學號”、“姓名”、“課程名稱”、“考試成績”字段,由于交叉表查詢需要設計行標題和列標題,所以需要修改姓名的“交叉表”單元格為“行標題”,“課程名稱”字段的交叉表單元格為“列標題”,還需要一個計算各門課程的成績總和的字段,所以添加一個自定義字段“總成績:考試成績”,并設置“總計”單元格為“總計”。具體設置如入5-25所示。圖5-24交叉表查詢圖5-25設置字段
(4)單擊工具欄上的“保存”按鈕,保存所做的操作。(5)單擊工具欄上的“運行”按鈕,運行該按鈕,得到結果集,如圖5-26所示。圖5-26交叉表查詢的結果集5.3.4創建計算查詢
在查詢中可以執行許多類型的計算,例如可以利用Sum函數進行總計計算、利用Avg函數進行求平均值計算等。除了可以使用諸如Sum、Avg、Max、Min等函數進行預定義計算外,還允許使用各種運算符或內置函數對一個或多個字段進行自定義計算。自定義計算主要指使用一個或多個字段的數據執行數值、日期和文本計算,它需要在設計網格中創建新的計算字段。1.使用Sum函數進行總計計算總計計算主要是對字段進行求和運算,例如5.3.3節中所講的求學生各門課程的總成績就是總計計算。總計計算的格式是:Sum(字段或表達式)實例5-8:利用總計計算查詢求每個學生各門課程成績總和。操作步驟如下:
(1)在設計視圖中新建一個查詢。
(2)添加“學生”表和“成績”表到“QBE”中,并在“QBE”網格中選擇“成績”表中的“學號”和“考試成績”字段,并選擇“學生”表中的“姓名”字段。
(3)單擊工具欄上的“總計”按鈕,添加“總計”行。圖5-27查詢的設計視圖(4)“學號”和“姓名”字段“總計”行的默認值是“分組”,這里不用對它們進行計算,所以保留它們的默認值,修改“考試成績”字段的“字段”為“總成績:考試成績”,并在其“總計”單元格的下拉列表中選擇“總計”,如圖5-27所示。
(5)單擊工具欄的保存按鈕,打開“另存為”對話框,輸入該查詢的名稱“學生總成績”,保存查詢。
(6)單擊工具欄上的“運行”按鈕,運行該查詢,得到如圖5-28所示的結果集。圖5-28查詢的結果集2.使用Avg函數求平均值計算平均值計算主要是對數字、日期/時間等字段求平均值,其格式為:Avg(字段名或表達式)。實例5-9:求學生考試成績的平均成績,并對平均成績按降序排列。
操作步驟如下:
(1)在設計視圖中新建一個查詢。
(2)添加“學生”表和“成績”表到“QBE”中,并在“QBE”網格中選擇“成績”表中的“學號”和“考試成績”字段,并選擇“學生”表中的“姓名”字段。
(3)單擊工具欄上的“總計”按鈕,添加“總計”行。(4)“學號”和“姓名”字段“總計”行的默認值是“分組”,由于不需要對學號和姓名進行計算,所以保留它們的默認值,修改“考試成績”字段的“字段”為“平均成績:考試成績”,并在其“總計”單元格的下拉列表中選擇“平均值”,在其“排序”單元格下拉列表中選擇“降序”,如圖5-29所示。
(5)單擊工具欄的保存按鈕,打開“另存為”對話框,輸入該查詢的名稱“學生平均成績”,保存查詢。
(6)單擊工具欄上的“運行”按鈕運行該查詢,得到如圖5-30所示的結果集。圖5-29查詢的設計視圖
圖5-30查詢的結果集
3.使用Max函數計算最大值計算最大值主要是針對某個字段求其最大值,一般也是針對數字、貨幣或自動編號的字段進行操作。其格式為:Max(字段名或表達式)。實例5-10:創建一個計算每一門課程的最高分的查詢,并按照分數的高低降序排列。操作步驟如下:
(1)在設計視圖中新建一個查詢。
(2)添加“成績”表和“課程”表到“QBE”中,在“QBE”網格中分別選擇“課程”表的“課程名稱”字段和“成績”表的“考試成績”字段。
(3)單擊工具欄上的“總計”按鈕添加“總計”行(4)保留“課程名稱”字段的“總計”單元格為“分組”,單擊“考試成績”字段的“總計”單元格右側的下拉箭頭,從下拉列表中選擇“最大值”,并選擇“排序”單元格為“降序”,如圖5-31所示。
(5)單擊工具欄的保存按鈕,打開“另存為”對話框,輸入該查詢的名稱“各門課程最高分”,保存查詢。
(6)單擊工具欄上的“運行”按鈕運行該查詢,得到如圖5-32所示的結果集。圖5-31查詢的設計視圖圖5-32查詢的結果集4.使用Min函數計算最小值計算最小值是求出指定字段中的最小值,其格式為:Min(字段名或表達式)。其操作過程與MAX函數基本相同。5.使用Count函數進行計數計算
Count用于統計符合條件的記錄的個數。其格式為:Count(字段名或表達式)。實例5-11:統計“學生”表中各個專業的學生人數。操作步驟如下:
(1)在設計視圖中新建一個查詢。
(2)添加“學生”表到“QBE”中,將“學生”表中的“專業”和“學號”字段添加到“QBE”網格中。(3)單擊工具欄中的“總計”按鈕,添加“總計”行。
(4)保留“專業”字段的總計單元格為默認的“分組”,單擊“學號”字段“總計”單元格的下拉列表,從中選擇“計數”,并修改“學號”字段單元格的內容為“各專業總人數:學號”,如圖5-33所示。
(5)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“各專業總人數”,保存查詢。
(6)單擊工具欄上的“運行”按鈕運行該查詢,得到如圖5-34所示的結果集。圖5-33查詢的設計視圖
圖5-34查詢的結果集5.創建自定義計算字段自定義計算是使用各種運算符或系統內置函數對一個或多個字段進行自定義計算。對于這類計算,需要自定義計算字段,并在“字段”行的空單元格中輸入表達式。如果該表達式用到表中的某個字段,需要用“[]”將該字段括起。如果不給自定義字段確定名稱,Access會給一個默認名字“表達式1”,在默認名字和運算表達式之間以冒號隔開,為增強數據的可讀性,用戶可以修改該名字。實例5-12:建立一個查詢,查詢各門課程的平均分。
操作步驟如下:(1)在設計視圖中新建一個查詢。(2)添加“課程”表和“成績”表到“QBE”中,在“QBE”網格中添加“課程”表中的“課程名稱”字段。
(3)在“課程名稱”字段后的空單元格中鍵入或使用“表達式生成器”生成表達式“Avg([考試成績])”,Access自動添加一個名為“表達式1”的字段名,將“表達式1”修改為“平均成績”。(4)單擊Access工具欄上的“總計”按鈕,添加“總計”行。(5)保留“課程名稱”字段的“總計”單元格為默認的“分組”,單擊“平均成績”字段的“總計”單元格下拉列表,從中選擇“表達式”,如圖5-35所示。(6)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“各門課程平均成績_自定義計算”,保存查詢。(7)單擊工具欄上的“運行”按鈕運行該查詢,得到如圖5-36所示的結果集。
圖5-35查詢的設計視圖圖5-36查詢的結果集5.3.5創建操作查詢
前面所講的查詢只是從指定的表或查詢中查詢出給定條件的記錄以形成動態集。操作查詢除完成上述查詢功能外,還對動態集進行某種操作,并將操作結果返回到指定的表中,即改變數據表內容。操作查詢主要包括4種類型:更新查詢、生成表查詢、刪除查詢和追加查詢。1.更新查詢更新查詢可以對一個或多個表中的一組記錄進行更改。使用更新查詢,可以更改已有表中的數據。實例5-13:在“學生信息”數據庫建立一個更新查詢,將“課程表”中原課程名稱為“數據庫技術”更新為“數據庫技術基礎”。操作步驟如下:
(1)在設計視圖中新建一個查詢,添加“課程”表到“QBE”中。
(2)選擇“查詢”菜單下的“更新查詢”菜單項命令,或單擊工具欄上的“查詢類型”按鈕右側的下拉箭頭,選擇“更新查詢”命令,在“QBE”網格中會出現“更新到”行。
(3)添加“課程名稱”字段到“QBE”網格中,在“課程名稱”字段的“條件”單元格中輸入“數據庫技術”,在“更新到”單元格中輸入“數據庫技術基礎”,如圖5-37所示。圖5-37更新查詢設計視圖(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“課程名稱更新查詢”,保存查詢。
(5)單擊工具欄上的“運行”按鈕運行該查詢,運行查詢時,出現如圖5-38所示對話框,單擊“是”按鈕,開始執行查詢。
(6)返回“數據庫”窗口,單擊“對象”下的“表”,打開“課程”表查看查詢的運行結果。1.生成表查詢生成表查詢是把從一個或多個表中篩選出的全部或部分記錄保存到一個新表中。實例5-14:在“學生信息”數據庫中,根據“學生”表創建一個生成表查詢,實現從“學生”表中導出所有專業為“計算機應用”的學生并生成新表“計算機應用專業學生”。操作步驟如下:
(1)在設計視圖中新建一個查詢,添加“學生”表到“QBE”中。
(2)選擇“查詢”菜單下的“生成表查詢”命令,或單擊工具欄上的“查詢類型”按鈕右側的下拉箭頭,從中選擇“生成表查詢”命令,打開如圖5-39所示窗口。(3)在“生成表”窗口中的表名稱輸入框輸入“計算機應用專業學生”,保存位置為“當前數據庫”,如果選擇“另一數據庫”,需要給出該數據的詳細地址。
(4)單擊“確定”按鈕,出現如圖5-40所示窗口。在此窗口中選擇生成新表所需的字段。一般情況下,為了保證源表和生成表在結構上一致,需要選擇源表中所有的字段作為生成表中的字段,這里我們選擇“學生”表中的所有字段,并在“專業”字段的“條件”單元格中輸入“計算機應用”。
(5)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“計算機應用專業學生_生成表查詢”,保存查詢。圖5-39“生成表”對話框圖5-40生成表查詢的設計視圖(6)單擊工具欄上的“運行”按鈕運行該查詢,運行查詢時,出現如圖5-41所示對話框,單擊“是”按鈕,開始執行查詢。
(7)返回“數據庫”窗口,單擊“對象”下的“表”,出現了一個名稱為“計算機應用專業學生”的新表,打開該表,可以看到表中有三條記錄,各記錄的專業字段值均為“計算機應用”。3.刪除查詢刪除查詢可以從一個或多個表中刪除一個或一組記錄。當數據庫中的某些數據不需要再進行維護時,就可以刪除這些數據,例如“學生”表中的某個學生已經退學,則可以刪除該學生對應的記錄。需要注意的是,執行了刪除查詢操作以后,如果刪掉了不該刪掉的記錄,是不能進行諸如撤銷之類的操作來還原數據。所以為了以防萬一,一定要及時做好數據庫中數據的備份。實例5-15:在“學生信息”數據庫中,創建一個刪除查詢,刪除“學生”表中“入學成績”小于等于400分的學生。操作步驟如下:
(1)在設計視圖中新建一個查詢,將“學生”表添加到“QBE”中。
(2)選擇“查詢”菜單中的“刪除查詢”菜單項命令,或單擊工具欄上的“查詢類型”按鈕右側的下拉箭頭,從中選擇“刪除查詢”,在“QBE”網格中添加了“刪除”行。
(3)在“QBE”網格添加“入學成績”字段,在“入學成績”字段的“條件”單元輸入“<=400”,如圖5-42所示。
(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“刪除查詢”,保存查詢。
(5)單擊工具欄的“運行”按鈕運行查詢,運行時,出現如圖5-43所示對話框,單擊“是”按鈕,開始執行查詢。
(6)返回“數據庫”窗口,單擊“對象”下的“表”,打開“學生”表查看查詢的運行結果,可以看到刪掉了入學分數<=400的記錄。圖5-42刪除查詢的設計視圖4.追加查詢追加查詢可以將一個或多個表中的一組記錄追加到另一個或多個表的末尾。例如,假定學校確定了一些新的課程,并已將課程信息輸入了數據庫表中,可以直接將這些課程信息追加到已有的“課程”表中。實例5-16:在“學生信息”數據庫中,創建一個追加查詢,將“補充課程”表中的數據追加到“課程”表中。操作步驟如下:在設計視圖中新建一個查詢,并把“補充課程”表添加到“QBE”中。(2)選擇“查詢”菜單下的“追加查詢”菜單項,或單擊工具欄上的“查詢類型”按鈕右側下拉箭頭,從中選擇“追加查詢”,在“QBE”網格中添加“追加到”行,打開如圖5-44所示對話框。
(3)在追加到的“表名稱”中的下拉列表中選擇“課程”表,單擊“確定”按鈕。
(4)出現如圖5-45所示的對話框,在對話框中選擇追加的字段,一般情況下,為了保證追加成功,源表與目標表在字段結構上要求一致。這里選擇所有字段(5(單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“追加課程”,保存查詢。
(6)單擊“運行”按鈕運行查詢,運行查詢時,出現如圖5-46所示對話框,單擊“是”按鈕,開始執行查詢。
(7)返回“數據庫”窗口,單擊“對象”下的“表”,打開“課程”表查看查詢的運行結果。圖5-44追加查詢對話框圖5-45追加查詢的設計視圖5.4SQL查詢
SQL查詢是使用SQL語句創建的查詢。SQL(StructuredQueryLanguage)是1974年由美國IBM公司提出并實現的一種關系數據庫管理系統通用的結構查詢語言。由于它具有功能強大、使用方式靈活、語言簡單易學等優點,所以被許多關系數據庫如DB2、Oracle、Access、SQLServer所使用。1986年10月,美國ANSI采用SQL作為關系數據庫管理系統的標準語言,后被國際標準化組織(ISO)采納為國際標準。SQL功能強大,概括起來,它可以分成以下幾組主要功能:(1)數據操作語言DML(DataManipulationLanguage):用于檢索或者修改數據。(2)數據定義語言DDL(DataDefinitionLanguage):用于定義數據的結構,比如創建、修改或者刪除數據庫對象。(3)數據控制語言DCL(DataControlLanguage):用于定義數據庫用戶的權限。在Access中,其實所有的查詢都是SQL查詢,因為Access查詢是以SQL語句為基礎實現的查詢功能。不過在建立Access查詢時,并不是所有查詢都在SQL查詢視圖中建立。SQL查詢可以分為以下5類:數據定義查詢、聯合查詢、SQL選擇查詢、SQL操作查詢和子查詢。數據定義查詢:包含數據定義語言(DDL)語句的SQL特定查詢。這些語句可以用來創建或更改數據庫中的對象。聯合查詢:該查詢使用Union運算符,將兩個以上的表或查詢所對應的字段,合并為一個字段。SQL選擇查詢:主要是利用Select語句檢索數據庫中的數據。
SQL操作查詢:主要是利用Select語句、Update語句、Insert語句和Delete語句進行生成表、更新、追加和刪除查詢。子查詢:它是一個Select語句,它嵌套在Select、Insert、Update與Delete語句或其他的子查詢語句中。
5.4.1數據定義查詢SQL數據定義語言主要包括定義基本表、修改基本表或定義索引,實現對表結構的設計和維護。1.用SQL創建表SQL創建表的語句格式:CREATETABLE<表名>([<字段名1>]類型(長度)[,[<字段名2>]類型(長度)…])
實例5-17:在“學生信息”數據庫中使用數據定義查詢建立一個名稱為“教師”的新表。
操作步驟如下:(1)在設計視圖中新建一個查詢,不添加任何表。(2)選擇“查詢”菜單的“SQL特定查詢”菜單項下的“數據定義”命令,直接進入SQL視圖,標題欄中的信息為“數據定義查詢”。
(3)在SQL視圖中輸入如下代碼,如圖5-47所示。
圖5-47SQL視圖輸入數據定義語句
(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“建立教師表”,保存查詢。
(5)單擊工具欄上的“運行”按鈕運行該查詢,生成一個使用數據定義查詢建立的新表“教師”表,可以返回到數據庫窗口,單擊對象下的“表”可以看到該表。2.用SQL修改表結構修改表結構結構是對表中已有的字段進行修改,或在表中增加字段,或把表中已有的字段刪除。SQL增加字段語句格式:ALTERTABLE<表名>ADD[<字段名1>]類型(長度)[,[<字段名2>]類型(長度)…]SQL修改字段語句格式:ALTERTABLE<表名>ALTER[<字段名1>]類型(長度)[,[<字段名2>]類型(長度)…]SQL刪除字段語句格式:ALTERTABLE<表名>DROP[<字段名1>]類型(長度)[,[<字段名2>]類型(長度)…]實例5-18:使用數據定義語句修改實例5-17建立的教師表,添加一個新的“聯系電話”字段。操作步驟如下:(1)在設計視圖中新建一個查詢,不添加任何表。(2)選擇“查詢”菜單的“SQL特定查詢”菜單項下的“數據定義”命令,直接進入SQL視圖,標題欄中的信息為“數據定義查詢”。(3)在SQL視圖中輸入如下代碼:
Altertable教師add聯系電話varchar(13)
(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“修改教師表”,保存查詢。(5)單擊工具欄上的“運行”按鈕運行該查詢,返回數據庫窗口,單擊對象下的表,雙擊教師表,可以看到添加了一個新的字段“聯系電話”。如圖5-48所示。5.4.2聯合查詢
聯合查詢用于將來自一個或多個表(或查詢)的字段(列)組合為查詢結果中的一個字段(列)。實例5-19:在“學生信息”數據庫中,建立一個聯合查詢,以“學生”表和“教師”表為源表,查詢教師及其學生的姓名和出生日期信息。主要的操作步驟如下:
(1)在設計視圖中新建一個查詢,不添加任何表。
(2)選擇“查詢”菜單的“SQL特定查詢”菜單項下的“聯合”命令,直接進入SQL視圖,標題欄中的信息為“聯合查詢”。(3)在SQL視圖中輸入以下代碼:
Select姓名,出生日期from學生
unionSelect姓名,出生日期from教師
(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“聯合查詢”,保存查詢。
(5)單擊工具欄上的“運行”按鈕運行該查詢,得到聯合查詢的結果集,如圖5-49所示:圖5-50聯合查詢的結果集5.4.3SQL選擇查詢SQL選擇查詢是利用Select語句從數據庫中查詢符合條件的記錄。其語法結構如下:Select[All|Distinct]<字段名1>[,<字段名2>……]From<數據源表或查詢>InnerJoin<數據源表或查詢>On<條件表達式>[Where條件表達式][Groupby<分組字段名>][Having分組條件表達式][OrderBy排序字段名[ASC|DESC]];其中:
All:查詢的是數據源的全部記錄。
InnerJoin<數據源表或查詢>On<條件表達式>:查詢結果是多表數據源組成的記錄集。
Distinct:查詢結果不包含重復記錄。
Where條件表達式:指定查詢條件
Groupby<分組字段名>:分組輸出查詢結果
Having分組條件表達式:指定數據源滿足<分組條件表達式>,并且按<分組>結果組成的記錄集。
OrderBy排序字段名[ASC|DESC:查詢結果按某字段值升序(ASC)或降序(DESC)輸出,默認為升序。
實例5-20:在學生表中查詢計算機應用專業學生的所有信息,并按入學成績從高到低排序輸出查詢結果。操作過程如下:
(1)在設計視圖中新建一個查詢,不添加任何表。
(2)單擊工具欄上的“視圖”按鈕下的命令或“查詢”菜單下的“SQL特定查詢”子菜單下的“聯合”選項,打開SQL視圖窗口,在該窗口中輸入代碼,如圖5-51所示:
(3)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“聯合查詢”,保存查詢。
(4)單擊工具欄上的“運行”按鈕運行該查詢,得到選擇查詢的結果集,如圖5-52所示。圖5-51在SQL視圖中輸入選擇查詢語句圖5-52實例5-20運行結果實例5-21:在“學生信息”數據庫中,使用SQL選擇查詢語句查詢學生表和課程表以及“成績”表中的信息,可以得到每個學生的學號、姓名、所學課程名稱和該門課程的成績。操作步驟如下:
(1)在設計視圖中新建一個查詢,不添加任何表。
(2)單擊工具欄上的“視圖”按鈕下的命令,打開SQL視圖窗口,在該窗口中輸入代碼,如圖5-53所示:
(3)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“聯合查詢”,保存查詢。
(4)單擊工具欄上的“運行”按鈕運行該查詢,得到選擇查詢的結果集,如圖5-54所示。圖5-53在SQL視圖中輸入選擇查詢語句圖5-54選擇查詢的結果集
5.4.4SQL操作查詢
SQL操作查詢主要包含生成表查詢、更新查詢、追加查詢和刪除查詢等。實例5-22:在“學生信息”數據庫中,使用SQL操作查詢語句生成一個新的“入學成績在500分以上的學生”表,該表中包含的字段有學號、姓名、性別、專業、出生日期、入學成績和籍貫,并按照入學成績降序排列。操作步驟如下:
(1)在設計視圖中新建一個查詢,不添加任何表。
(2)單擊工具欄上的“查詢類型”按鈕的下拉箭頭,從中選擇“生成表查詢”命令。出現如圖5-55所示的對話框,輸入新表的名稱。
(3)單擊工具欄上的“視圖”按鈕下的命令,打開SQL視圖窗口,在該窗口中輸入如圖5-56所示的代碼。
(4)單擊工具欄的“保存”按鈕,打開“另存為”對話框,輸入該查詢的名稱“SQL操作查詢_生成表”,保存查詢。
(5)單擊工具欄上的“運行”按鈕運行該查詢,出現如圖5-57所示對話框,單擊“是”按鈕。這樣就生成一個名稱為“入學成績在500分以上的學生”的新表。
(6)返回數據庫窗口,單擊“對象”下的“表”,雙擊新生成的表以打開該表,可看到如圖5-58所示的表中記錄。圖5-55輸入新表名稱圖5-56輸入生成表的SQL語句
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論