第4章 Access 2010數(shù)據(jù)庫(kù)應(yīng)用教程 查詢_第1頁(yè)
第4章 Access 2010數(shù)據(jù)庫(kù)應(yīng)用教程 查詢_第2頁(yè)
第4章 Access 2010數(shù)據(jù)庫(kù)應(yīng)用教程 查詢_第3頁(yè)
第4章 Access 2010數(shù)據(jù)庫(kù)應(yīng)用教程 查詢_第4頁(yè)
第4章 Access 2010數(shù)據(jù)庫(kù)應(yīng)用教程 查詢_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Access2010數(shù)據(jù)庫(kù)應(yīng)用教程第4章查詢知識(shí)要點(diǎn)查詢的概念和類型查詢條件選擇查詢的創(chuàng)建參數(shù)查詢的創(chuàng)建交叉表查詢的創(chuàng)建操作查詢的創(chuàng)建SQL基礎(chǔ)知識(shí)與SQL語句重點(diǎn)與難點(diǎn)重點(diǎn):查詢條件選擇查詢參數(shù)查詢交叉表查詢操作查詢SQL查詢難點(diǎn):運(yùn)算符、函數(shù)和表達(dá)式選擇查詢交叉表查詢SQL查詢4.1查詢概述查詢是Access2010數(shù)據(jù)庫(kù)的主要對(duì)象,是Access2010數(shù)據(jù)庫(kù)的核心操作之一。查詢主要有以下幾個(gè)方面的功能:(1)選擇字段:選擇表中的部分字段生成所需的表或多個(gè)數(shù)據(jù)集。(2)選擇記錄:根據(jù)指定的條件查找所需的記錄,并顯示查找的記錄。(3)編輯記錄:添加記錄,修改記錄和刪除記錄。(更新查詢,刪除查詢)(4)實(shí)現(xiàn)計(jì)算:查詢滿足條件的記錄,還可以在建立查詢過程中進(jìn)行各種計(jì)算。(計(jì)算平均成績(jī),年齡等)(5)建立新表:操作查詢中的生成表查詢可以建立新表。(6)為窗體和報(bào)表提供數(shù)據(jù):可以作為建立報(bào)表和查詢的數(shù)據(jù)源。4.1.1查詢的類型根據(jù)對(duì)數(shù)據(jù)源的操作方式及查詢結(jié)果的不同,Access2010提供的查詢可以分為5種類型,分別是選擇查詢、交叉表查詢、參數(shù)查詢、操作查詢、SQL查詢。4.1.2創(chuàng)建查詢的方法在Access2010中,創(chuàng)建查詢的方法主要有以下兩種:1.使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢首先要打開查詢?cè)O(shè)計(jì)視圖窗口,然后根據(jù)需要進(jìn)行查詢定義。操作步驟如下:(1)打開數(shù)據(jù)庫(kù);(2)選擇“新建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,如圖所示。查詢?cè)O(shè)計(jì)器窗口由兩部分組成,上半部分是數(shù)據(jù)源窗口,用于顯示查詢所涉及的數(shù)據(jù)源,可以是數(shù)據(jù)表或查詢,下半部分是查詢定義窗口,也稱為QBE網(wǎng)格,主要包括以下內(nèi)容:①字段:查詢結(jié)果中所顯示的字段。②表:查詢的數(shù)據(jù)源,即查詢結(jié)果中字段的來源。③排序:查詢結(jié)果中相應(yīng)字段的排序方式。④顯示:當(dāng)相應(yīng)字段的復(fù)選框被選中時(shí),則在結(jié)構(gòu)中顯示,否則不顯示。⑤條件:即查詢條件,同一行中的多個(gè)準(zhǔn)則之間是邏輯“與”的關(guān)系。⑥或:查詢條件,表示多個(gè)條件之間的“或”的關(guān)系。1.使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢(3)在打開查詢?cè)O(shè)計(jì)視圖窗口的同時(shí)彈出“顯示表”對(duì)話框,如圖所示;1.使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢(4)在“顯示表”對(duì)話框中,選擇作為數(shù)據(jù)源的表或查詢,將其添加到查詢?cè)O(shè)計(jì)器窗口的數(shù)據(jù)源窗格中。在查詢?cè)O(shè)計(jì)器窗口的查詢定義窗口中,通過“字段”列表框選擇所需字段,選中的字段將顯示在查詢定義窗口中;(5)在查詢?cè)O(shè)計(jì)器窗口的查詢定義窗口中,打開“排序”列表框,可以指定查詢的排序關(guān)鍵字和排序方式;排序方式分為升序、降序和不排序三種。(6)使用“顯示”復(fù)選框可以設(shè)置某個(gè)字段是否在查詢結(jié)果中顯示,若復(fù)選框被選中,則顯示該字段,否則不顯示;(7)在“條件”文本框中輸入查詢條件,或者利用表達(dá)式生成器輸入查詢條件;(8)保存查詢,創(chuàng)建查詢完成。1.使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢4.1.2創(chuàng)建查詢的方法2.使用查詢向?qū)?chuàng)建查詢操作步驟如下:(1)打開數(shù)據(jù)庫(kù);(2)選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢向?qū)А卑粹o,打開“新建查詢”對(duì)話框;(3)在“新建查詢”對(duì)話框中,選擇需要的查詢向?qū)?,根?jù)系統(tǒng)引導(dǎo)選擇參數(shù)或者輸入信息;(4)保存查詢。4.2查詢條件的設(shè)置

在實(shí)際應(yīng)用中,經(jīng)常查詢滿足某個(gè)條件的記錄,這需要在查詢時(shí)進(jìn)行查詢條件的設(shè)置。通過在查詢?cè)O(shè)計(jì)視圖中設(shè)置條件可以實(shí)現(xiàn)條件查詢,而查詢條件是通過輸入表達(dá)式來表示的。表達(dá)式是由操作數(shù)和運(yùn)算符構(gòu)成的可計(jì)算的式子。其中操作數(shù)可以是常量、變量、函數(shù)、甚至可以是另一個(gè)表達(dá)式(子表達(dá)式);運(yùn)算符是表示進(jìn)行某種運(yùn)算的符號(hào),包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、連接運(yùn)算符、特殊運(yùn)算符和對(duì)象運(yùn)算符等,表達(dá)式具有唯一的運(yùn)算結(jié)果。下面對(duì)表達(dá)式的各個(gè)組成部分進(jìn)行介紹。4.2查詢條件的設(shè)置1.常量常量代表不會(huì)發(fā)生更改的值。按其類型的不同有不同的表示方法,如表所示。類

型表示方法示

例數(shù)字型直接輸入數(shù)據(jù)123,-4,56.7日期時(shí)間型以“#”為定界符#2013-9-18#文本型以西文半角的單引號(hào)或雙引號(hào)作為定界符“HelloWord”是/否型用系統(tǒng)定義的符號(hào)表示True,False,或Yes,No,或On,Off,或-1,04.2查詢條件的設(shè)置2.變量變量是指在運(yùn)算過程中其值允許變化的量。在查詢的條件表達(dá)式中使用變量就是通過字段名對(duì)字段變量進(jìn)行引用,一般需要使用[字段名]的格式,如[姓名]。如果需要指明該字段所屬的數(shù)據(jù)源,則要寫成[數(shù)據(jù)表名]![字段名]的格式。其他類型變量及其引用參見VBA編程部分的內(nèi)容。4.2查詢條件的設(shè)置3.函數(shù)函數(shù)是用來實(shí)現(xiàn)某指定的運(yùn)算或操作的一個(gè)特殊程序。一個(gè)函數(shù)可以接收輸入?yún)?shù)(并不是所有函數(shù)都有輸入?yún)?shù)),且返回一個(gè)特定類型的值。函數(shù)一般都用于表達(dá)式中,其使用格式為:函數(shù)名([實(shí)際參數(shù)列表])。當(dāng)函數(shù)的參數(shù)超過一個(gè)時(shí),各參數(shù)間用西文半角“,”隔開。函數(shù)分為系統(tǒng)內(nèi)置函數(shù)和用戶自定義函數(shù)。Access2010提供了上千個(gè)標(biāo)準(zhǔn)函數(shù),可分為數(shù)學(xué)函數(shù)、字符串處理函數(shù)、日期/時(shí)間函數(shù)、聚合函數(shù)等,其中聚合函數(shù)可直接用于查詢中。具體函數(shù)內(nèi)容詳見教材。4.2查詢條件的設(shè)置4.運(yùn)算符運(yùn)算符是表示進(jìn)行某種運(yùn)算的符號(hào),包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、連接運(yùn)算符和特殊運(yùn)算符等。(1)算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)、乘方(^)、整除(\)、取余(Mod)等,主要用于數(shù)值計(jì)算。例如表達(dá)式4^4的運(yùn)算結(jié)果為16;表達(dá)式9/2的運(yùn)算結(jié)果為4.5;表達(dá)式9\2的運(yùn)算結(jié)果為4;表達(dá)式9Mod2的運(yùn)算結(jié)果為1。4.2查詢條件的設(shè)置(2)關(guān)系運(yùn)算符關(guān)系運(yùn)算符由=、>、>=、<、<=、<>等符號(hào)構(gòu)成,主要用于數(shù)據(jù)之間的比較,其運(yùn)算結(jié)果為邏輯值,即“真”和“假”。如表所示。關(guān)系運(yùn)算符含義關(guān)系運(yùn)算符含義關(guān)系運(yùn)算符含義>

大于>=大于等于<

小于<=小于等于=等于<>

不等于4.2查詢條件的設(shè)置(3)邏輯運(yùn)算符邏輯運(yùn)算符由And、Or、Not、Xor、Eqv等符號(hào)構(gòu)成,具體含義如表所示。邏輯運(yùn)算符作

用Not邏輯非And當(dāng)And前后的兩個(gè)表達(dá)式均為真時(shí),整個(gè)表達(dá)式的值為真,否則為假Or當(dāng)Or前后的兩個(gè)表達(dá)式均為假時(shí),整個(gè)表達(dá)式的值為假,否則為真Xor當(dāng)Xor前后的兩個(gè)表達(dá)式均為假或均為真時(shí),整個(gè)表達(dá)式的值為假,否則為真Eqv當(dāng)Eqv前后的兩個(gè)表達(dá)式均為假或均為真時(shí),整個(gè)表達(dá)式的值為真,否則為假4.2查詢條件的設(shè)置(4)連接運(yùn)算符連接運(yùn)算符包括“&”和“+”?!?”:字符串連接。例如:表達(dá)式"Access"&"2010",運(yùn)算結(jié)果為"Access2010"“+”:當(dāng)前后兩個(gè)表達(dá)式都是字符串時(shí)與“&”作用相同;當(dāng)前后兩個(gè)表達(dá)式有一個(gè)或者兩個(gè)都是數(shù)值表達(dá)式時(shí),則進(jìn)行加法算術(shù)運(yùn)算。例如:表達(dá)式"Access"+"2010",運(yùn)算結(jié)果為"Access2010"。表達(dá)式"Access"+2010,運(yùn)算結(jié)果為提示“類型不匹配”。表達(dá)式"1"+2013,運(yùn)算結(jié)果為2014。4.2查詢條件的設(shè)置(5)特殊運(yùn)算符Access提供了一些特殊運(yùn)算符用于對(duì)記錄進(jìn)行過濾,常用的特殊運(yùn)算符如表所示。特殊運(yùn)算符含

義In指定值屬于列表中所列出的值Between…And…指定值的范圍在…到…之間Is與Null一起使用確定字段值是否為空值Like用通配符查找文本型字段是否與其匹配。通配符“?”匹配任意單個(gè)字符;“*”匹配任意多個(gè)字符;“#”匹配任意單個(gè)數(shù)字;“!”不匹配指定的字符;[字符列表]匹配任何在列表中的單個(gè)字符4.3選擇查詢選擇查詢是最常見的一類查詢,很多數(shù)據(jù)庫(kù)查詢功能均可以用它來實(shí)現(xiàn)。所謂“選擇查詢”就是從一個(gè)或多個(gè)有關(guān)系的表中將滿足要求的數(shù)據(jù)選擇出來,并把這些數(shù)據(jù)顯示在新的查詢數(shù)據(jù)表中。而其他的方法,如“交叉表查詢”、“參數(shù)查詢”和“操作查詢”等,都是“選擇查詢”的擴(kuò)展。使用選擇查詢可以從一個(gè)或多個(gè)表或查詢中檢索數(shù)據(jù),可以對(duì)記錄進(jìn)行分組,并進(jìn)行求總計(jì)、計(jì)數(shù)、平均值等運(yùn)算。選擇查詢產(chǎn)生的結(jié)果是一個(gè)動(dòng)態(tài)記錄集,不會(huì)改變?cè)磾?shù)據(jù)表中的數(shù)據(jù)。4.3.1使用向?qū)?chuàng)建

借助“簡(jiǎn)單查詢向?qū)А笨梢詮囊粋€(gè)表、多個(gè)表或已有查詢中選擇要顯示的字段,也可對(duì)數(shù)值型字段的值進(jìn)行簡(jiǎn)單匯總計(jì)算。如果查詢中的字段來自多個(gè)表,這些表之間應(yīng)已經(jīng)建立了關(guān)系。簡(jiǎn)單查詢的功能有限,不能指定查詢條件或查詢的排序方式。但它是學(xué)習(xí)建立查詢的基本方法,因此,使用“簡(jiǎn)單查詢向?qū)А眲?chuàng)建查詢,用戶可以在向?qū)У闹甘鞠逻x擇表和表中的字段,快速準(zhǔn)確地建立查詢。4.3.1使用向?qū)?chuàng)建1.建立單表查詢【例4.1】查詢學(xué)生的基本信息,并顯示學(xué)生的姓名、性別、出生日期等信息。具體操作步驟詳見教師演示。4.3.1使用向?qū)?chuàng)建2.建立多表查詢有時(shí),用戶所需查詢的信息來自兩個(gè)或兩個(gè)以上的表或查詢,因此,需要建立多表查詢。建立多表查詢必須有相關(guān)聯(lián)的字段,并且事先應(yīng)通過這些相關(guān)聯(lián)的字段建立起表之間的關(guān)系?!纠?.2】查詢學(xué)生的課程成績(jī),顯示的內(nèi)容包括:學(xué)號(hào)、姓名、課程編號(hào)、課程名稱、和分?jǐn)?shù)。具體操作步驟詳見教師演示。4.3.1使用向?qū)?chuàng)建3.查找重復(fù)項(xiàng)查詢向?qū)А安檎抑貜?fù)項(xiàng)查詢向?qū)А笨梢钥焖僬业奖碇械闹貜?fù)字段值的記錄。【例4.3】在“學(xué)生”表中查詢姓名重名的學(xué)生的所有信息。操作步驟如下:(1)打開“學(xué)生管理”數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)窗口中選擇“創(chuàng)建”選項(xiàng)卡中的“查詢”選項(xiàng)組;(2)單擊“查詢”選項(xiàng)組中的“查詢向?qū)А边x項(xiàng),彈出“新建查詢”對(duì)話框,在“新建查詢”對(duì)話框中選擇“查找重復(fù)項(xiàng)查詢向?qū)А边x項(xiàng),然后單擊“確定”按鈕,打開“查找重復(fù)項(xiàng)查詢向?qū)А睂?duì)話框,如圖所示;4.3.1使用向?qū)?chuàng)建(3)在彈出的“查找重復(fù)項(xiàng)查詢向?qū)А睂?duì)話框中選擇“學(xué)生表”,單擊“下一步”按鈕;4.3.1使用向?qū)?chuàng)建(4)在彈出的對(duì)話框中選擇“姓名”為重復(fù)字段,如圖所示,單擊“下一步”按鈕;4.3.1使用向?qū)?chuàng)建(5)選擇其它要顯示的字段,這里選擇對(duì)話框的“可用字段”列中的所有字段移動(dòng)到“另外的查詢字段”列中,如圖所示,單擊“下一步”按鈕;4.3.1使用向?qū)?chuàng)建(6)在彈出的對(duì)話框的“請(qǐng)指定查詢的名稱”文本框中輸入“重名學(xué)生信息查詢”,如圖所示。單擊“完成”按鈕,查看查詢結(jié)果。4.3.1使用向?qū)?chuàng)建4.查找不匹配項(xiàng)查詢向?qū)г贏ccess中,可能需要對(duì)數(shù)據(jù)表中的記錄進(jìn)行檢索,查看它們是否與其它記錄相關(guān),是否正真有實(shí)際意義。即用戶可以利用“查找不匹配項(xiàng)查詢向?qū)А痹趦蓚€(gè)表或查詢中查找不匹配的記錄。【例4.4】利用“查找不匹配項(xiàng)查詢向?qū)А眲?chuàng)建查詢,查找沒有學(xué)生選修的課程信息。具體操作步驟如下:(1)打開“學(xué)生管理”數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)窗口中選擇“創(chuàng)建”選項(xiàng)卡中的“查詢”選項(xiàng)組;(2)單擊“查詢”選項(xiàng)組中的“查詢向?qū)А边x項(xiàng),彈出“新建查詢”對(duì)話框,在“新建查詢”對(duì)話框中選擇“查找不匹配項(xiàng)查詢向?qū)А边x項(xiàng),然后單擊“確定”按鈕,打開“查找不匹配項(xiàng)查詢向?qū)А睂?duì)話框;4.3.1使用向?qū)?chuàng)建(3)在彈出的“查找不匹配項(xiàng)查詢向?qū)А睂?duì)話框中選擇“課程”表,如下左圖所示,單擊“下一步”按鈕。打開如下右圖所示的對(duì)話框;4.3.1使用向?qū)?chuàng)建(4)選擇與“課程”表中的記錄不匹配的“成績(jī)”表,單擊“下一步”按鈕打開如圖所示的對(duì)話框;(5)確定選取的兩個(gè)表之間的匹配字段。Access會(huì)自動(dòng)根據(jù)匹配的字段進(jìn)行檢索,查看不匹配的記錄。本例題選擇“課程編號(hào)”字段,再單擊“下一步”按鈕;4.3.1使用向?qū)?chuàng)建(6)選擇其它要顯示的字段,這里選擇對(duì)話框的“可用字段”列中的所有字段移動(dòng)到“選定字段”列中,如下圖所示,單擊“下一步”按鈕;(7)在彈出的對(duì)話框的“請(qǐng)指定查詢的名稱”文本框中輸入“沒有學(xué)生選修的課程查詢”。單擊“完成”按鈕,查看查詢結(jié)果。4.3.2使用設(shè)計(jì)視圖創(chuàng)建對(duì)于簡(jiǎn)單的查詢,使用向?qū)П容^方便,但是對(duì)于有條件的查詢,則無法使用向?qū)韯?chuàng)建,而是需要在“設(shè)計(jì)視圖”中創(chuàng)建。【例4.5】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,創(chuàng)建以下查詢。1.查詢1994年以后出生的學(xué)生的學(xué)號(hào)、姓名和出生日期。2.查詢姓名中有“國(guó)”字的學(xué)生的姓名、性別和出生日期。3.查詢學(xué)號(hào)第6位是2或者9的學(xué)生的學(xué)號(hào)、姓名和班級(jí)名稱。4.查詢“微積分”大于95分或“計(jì)算機(jī)文化基礎(chǔ)”大于90分的同學(xué)的姓名、課程和成績(jī)。5.查詢沒有聯(lián)系電話的教師的姓名、參加工作間和職稱。4.3.2使用設(shè)計(jì)視圖創(chuàng)建操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”選項(xiàng)組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開查詢?cè)O(shè)計(jì)器窗口,將所需表添加到查詢?cè)O(shè)計(jì)器的數(shù)據(jù)源窗格中。4.3.2使用設(shè)計(jì)視圖創(chuàng)建1.查詢1994年以后出生的學(xué)生的學(xué)號(hào)、姓名和出生日期。(1)將字段“學(xué)號(hào)”,“姓名”和“出生日期”添加到查詢定義窗口中,對(duì)應(yīng)“出生日期”字段,在“條件”行輸入“>=#1994-1-1#”,如下圖所示;(2)保存查詢。4.3.2使用設(shè)計(jì)視圖創(chuàng)建2.查詢姓名中有“國(guó)”字的學(xué)生的姓名、性別和出生日期。(1)將字段“姓名”、“性別”和“出生日期”加到查詢定義窗口中,對(duì)應(yīng)“姓名”字段,在“條件”行輸入“Like“*國(guó)*””,如下圖所示;(2)保存查詢。4.3.2使用設(shè)計(jì)視圖創(chuàng)建3.查詢學(xué)號(hào)第6位是2或者9的學(xué)生的學(xué)號(hào)、姓名和班級(jí)名稱。(1)將字段“學(xué)號(hào)”,“姓名”和“班級(jí)名稱”加到查詢定義窗口中,對(duì)應(yīng)“學(xué)號(hào)”字段,在“條件”行輸入“Mid([學(xué)號(hào)],6,1)=2OrMid([學(xué)號(hào)],6,1)=9”,如下圖4所示;(2)保存查詢。4.3.2使用設(shè)計(jì)視圖創(chuàng)建4.查詢“微積分”分?jǐn)?shù)在60-80之間的同學(xué)的姓名、課程名稱和分?jǐn)?shù)。(1)將字段“姓名”、“課程名稱”和“分?jǐn)?shù)”加到查詢定義窗口中,對(duì)應(yīng)“課程名稱”字段,在“條件”行輸入“微積分”,對(duì)應(yīng)“分?jǐn)?shù)”字段,在“條件”行輸入“Between60And80”,如下圖所示;(2)保存查詢。4.3.2使用設(shè)計(jì)視圖創(chuàng)建5.查詢沒有聯(lián)系電話的教師的姓名、參加工作時(shí)間和職稱。(1)將字段“姓名”、“參加工作時(shí)間”、“職稱”和“聯(lián)系電話”添加到查詢定義窗口中,將“聯(lián)系電話”字段的“顯示”復(fù)選按鈕取消,在“條件”行對(duì)應(yīng)“聯(lián)系電話”字段輸入“IsNull”,如下圖所示;(2)保存查詢。4.3.3運(yùn)行和修改查詢

1.運(yùn)行查詢查詢創(chuàng)建完成后,將保存在數(shù)據(jù)庫(kù)中。運(yùn)行查詢后才能看到查詢結(jié)果,運(yùn)行查詢的方法有以下幾種方式:(1)在上下文選項(xiàng)卡“查詢工具|設(shè)計(jì)”的“結(jié)果”組中單擊“運(yùn)行”按鈕。(2)在上下文選項(xiàng)卡“查詢工具|設(shè)計(jì)”的“結(jié)果”組中單擊“視圖”按鈕。(3)在導(dǎo)航窗口中選擇要運(yùn)行的查詢雙擊。(4)在導(dǎo)航窗口中選擇要運(yùn)行的查詢對(duì)象并右擊,在快捷菜單中選擇“打開”命令。(5)在查詢?cè)O(shè)計(jì)視圖窗口的標(biāo)題欄右擊,在快捷菜單中選擇“數(shù)據(jù)表視圖”。無論是利用向?qū)?chuàng)建的查詢,還是利用“設(shè)計(jì)視圖”建立的查詢,建立后均可以對(duì)查詢進(jìn)行編輯修改。4.3.3運(yùn)行和修改查詢2.編輯查詢中的字段在“設(shè)計(jì)視圖”中打開要修改的查詢,可以進(jìn)行添加字段、刪除字段、移動(dòng)字段和重命名查詢字段操作,具體操作步驟如下。(1)添加字段:從字段里表中選定一個(gè)或多個(gè)字段,并將其拖曳到查詢定義窗口的相應(yīng)列中。(2)刪除字段:?jiǎn)螕袅羞x定器選定相應(yīng)的字段,然后按Delete鍵。(3)移動(dòng)字段:先選定要移動(dòng)的列,可以單擊列選定器來選擇一列,也可以通過相應(yīng)的列選定器來選定相鄰的數(shù)列。然后再次單擊選定字段中任何一個(gè)選定器,將字段拖曳到新的位置。移走的字段機(jī)器右側(cè)的字段一起向右移動(dòng)。(4)重命名查詢字段:若希望在查詢結(jié)果中使用用戶自定義的字段名稱替代表中的字段名稱,可以對(duì)查詢字段進(jìn)行重新命名。將光標(biāo)移動(dòng)到查詢定義窗口中需要重命名的字段左邊,輸入新名后鍵入英文(:)即可。4.3.3運(yùn)行和修改查詢3.編輯查詢中的數(shù)據(jù)源(1)添加表或查詢(2)刪除表或查詢4.3.4設(shè)置查詢中的計(jì)算在設(shè)計(jì)選擇查詢時(shí),除了進(jìn)行條件設(shè)置外,還可以進(jìn)行計(jì)算和分類匯總。下面我們通過例子來說明如何設(shè)置查詢中的計(jì)算。【例4.6】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,創(chuàng)建以下查詢。1.查詢學(xué)生的學(xué)號(hào),姓名、出生日期并計(jì)算年齡。2.統(tǒng)計(jì)各班學(xué)生的平均年齡。3.統(tǒng)計(jì)學(xué)生的課程總分和平均分。操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中。4.3.4設(shè)置查詢中的計(jì)算1.查詢學(xué)生的學(xué)號(hào),姓名、出生日期并計(jì)算年齡。將學(xué)生表的字段“學(xué)號(hào)”,“姓名”、“出生日期”添加到查詢定義窗口中,然后在空白列中輸入“年齡:Year(Date())-Year([出生日期])”,其中“年齡”是計(jì)算字段,Year(Date())-Year([出生日期])是計(jì)算年齡的表達(dá)式。如圖所示,保存運(yùn)行查詢。4.3.4設(shè)置查詢中的計(jì)算2.統(tǒng)計(jì)各班學(xué)生的平均年齡。將“班級(jí)名稱”字段添加到查詢定義窗口中,并在空白列中輸入“平均年齡:Year(Date())-Year([出生日期])”,然后單擊工具欄上“匯總”按鈕,在查詢定義窗口中出現(xiàn)了“總計(jì)”行,如圖所示。對(duì)應(yīng)“班級(jí)名稱”字段,在“總計(jì)”下拉列表框中選擇“GroupBy”,對(duì)應(yīng)表達(dá)式“Year(Date())-Year([出生日期])”,在“總計(jì)”下拉列表框中選擇“平均值”,這表明按照“班級(jí)名稱”字段分組統(tǒng)計(jì)年齡的平均值。如圖所示,保存運(yùn)行查詢。4.3.4設(shè)置查詢中的計(jì)算3.統(tǒng)計(jì)學(xué)生的課程總分和平均分將學(xué)生表的字段“學(xué)號(hào)”,“姓名”,成績(jī)表的字段“分?jǐn)?shù)”添加到查詢定義窗口中,注意,將分?jǐn)?shù)字段添加2次。然后在“總計(jì)”行中,對(duì)應(yīng)“學(xué)號(hào)”和“姓名”字段,選擇“GroupBy”;對(duì)應(yīng)第1個(gè)“分?jǐn)?shù)”字段,選擇“合計(jì)”并添加標(biāo)題“總分”,對(duì)應(yīng)第2個(gè)“分?jǐn)?shù)”字段,選擇“平均值”并添加標(biāo)題“平均分”。如圖所示,保存運(yùn)行查詢。4.4參數(shù)查詢

參數(shù)查詢是一種動(dòng)態(tài)查詢,可以在每次運(yùn)行查詢時(shí)輸入不同的條件值,系統(tǒng)根據(jù)給定的參數(shù)值確定查詢結(jié)果,而參數(shù)值在創(chuàng)建查詢時(shí)不要定義。這種查詢完全由用戶控制,能在一定程度上適應(yīng)應(yīng)用的變化需求,提高查詢效率。參數(shù)查詢一般建立在選擇查詢基礎(chǔ)上,在運(yùn)行查詢時(shí)會(huì)出現(xiàn)一個(gè)或多個(gè)對(duì)話框,要求輸入查詢條件。根據(jù)查詢中參數(shù)個(gè)數(shù)的不同,參數(shù)查詢可以分為單參數(shù)查詢和多參數(shù)查詢。

4.4.1在設(shè)計(jì)視圖中創(chuàng)建單

參查詢【例4.7】在“學(xué)生管理”數(shù)據(jù)庫(kù)中創(chuàng)建以下單參數(shù)查詢。1.按輸入的學(xué)號(hào)查詢學(xué)生的所有信息。2.按輸入的教師姓名查詢?cè)摻處煹氖谡n情況,顯示教師姓名和課程名稱。操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中。4.4.1在設(shè)計(jì)視圖中創(chuàng)建單

參查詢1.按輸入的學(xué)號(hào)查詢學(xué)生的所有信息。將學(xué)生表的所有字段添加到查詢定義窗口中(選擇所有字段可直接在數(shù)據(jù)表中雙擊“*”),對(duì)應(yīng)“學(xué)號(hào)”字段,在“條件”行輸入“[請(qǐng)輸入學(xué)生學(xué)號(hào):]”,如下左圖所示。保存查詢并運(yùn)行,顯示“輸入?yún)?shù)值”對(duì)話框,如下右圖所示。輸入學(xué)號(hào)“201202010110”,系統(tǒng)將顯示“201202010110”的學(xué)生信息。4.4.1在設(shè)計(jì)視圖中創(chuàng)建單

參查詢2.按輸入的教師姓名查詢?cè)摻處煹氖谡n情況,顯示教師姓名和課程名稱。

將教師表“姓名”字段,課程表“課程名稱”字段添加到查詢定義窗口中,對(duì)應(yīng)“姓名”字段,在“條件”行輸入“[請(qǐng)輸入教師姓名]”。如圖所示,保存運(yùn)行查詢。4.4.2在設(shè)計(jì)視圖中創(chuàng)建多參查詢【例4.8】在“學(xué)生管理”數(shù)據(jù)庫(kù)中創(chuàng)建以下多參數(shù)查詢。1.按輸入的最低分和最高分,查詢學(xué)生的學(xué)號(hào)、姓名以及“微積分”課程成績(jī)。2.按輸入的性別和姓氏查詢學(xué)生的姓名和出生日期。操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中。4.4.2在設(shè)計(jì)視圖中創(chuàng)建多參查詢1.按輸入的最低分和最高分,查詢學(xué)生的學(xué)號(hào)、姓名以及“微積分”課程成績(jī)。將學(xué)生表的“學(xué)號(hào)”、“姓名”字段、課程表的“課程名稱”、“分?jǐn)?shù)”字段添加到查詢定義窗口中,對(duì)應(yīng)“課程名稱”字段,在“條件”行輸入“微積分”;對(duì)應(yīng)“分?jǐn)?shù)”字段,在“條件”行輸入“Between[最低分]And[最高分]”,如圖所示。4.4.2在設(shè)計(jì)視圖中創(chuàng)建多參查詢保存查詢并運(yùn)行,顯示第一個(gè)“輸入?yún)?shù)值”對(duì)話框,輸入最低分80,單擊“確定”按鈕打開第二個(gè)“輸入?yún)?shù)值”對(duì)話框,輸入最高分90,單擊“確定”按鈕,如下左圖、右圖所示。系統(tǒng)會(huì)顯示微積分成績(jī)介于80分到90分之間的學(xué)生信息。4.4.2在設(shè)計(jì)視圖中創(chuàng)建多參查詢2.按輸入的性別和姓氏查詢學(xué)生的所有信息。將學(xué)生表的所有字段添加到查詢定義窗口中,對(duì)應(yīng)“性別”和“姓名”字段,分別在“條件”行輸入“[請(qǐng)輸入性別:]”、“Like[請(qǐng)輸入姓氏:]&”*””。如圖所示,保存運(yùn)行查詢。4.5交叉表查詢交叉表查詢通常以一個(gè)字段作為表的行標(biāo)題,以另一個(gè)字段的取值作為列標(biāo)題,在行和列的交叉點(diǎn)單元格處獲得數(shù)據(jù)的匯總信息,以達(dá)到數(shù)據(jù)統(tǒng)計(jì)的目的。交叉表查詢既可以通過交叉表查詢向?qū)韯?chuàng)建,也可以在設(shè)計(jì)視圖中創(chuàng)建。4.5.1使用向?qū)?chuàng)建使用“交叉表查詢向?qū)А苯⒔徊姹聿樵儠r(shí),使用的字段必須屬于同一個(gè)表或同一個(gè)查詢。如果使用的字段不在同一個(gè)表或查詢中,則應(yīng)先建立一個(gè)查詢,將它們集中在一起。【例4.9】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,從教師表中統(tǒng)計(jì)各個(gè)學(xué)院的教師人數(shù)及其職稱分布情況,建立所需的交叉表。操作步驟如下:(1)選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢向?qū)А卑粹o,打開“新建查詢”對(duì)話框;(2)在“新建查詢”對(duì)話框中,選擇“交叉表查詢向?qū)А?,單擊“確定”,將出現(xiàn)“交叉表查詢向?qū)А睂?duì)話框,此時(shí),選擇“教師”表,如右圖所示,然后單擊下一步按鈕;4.5.1使用向?qū)?chuàng)建(3)選擇作為行標(biāo)題的字段。行標(biāo)題做多可選擇3個(gè)字段,為了在交叉表的每一行面顯示教師所屬學(xué)院,這里應(yīng)雙擊“可用字段”框中“學(xué)院”字段,將它添加到“選定字段”框中。如下圖所示,然后單擊“下一步”按鈕;4.5.1使用向?qū)?chuàng)建(4)選擇作為列標(biāo)題的字段。列標(biāo)題只能選擇一個(gè)字段,為了在交叉表的每一列的上面顯示職稱情況,單擊“職稱”字段。如下圖所示,然后單擊“下一步”按鈕;4.5.1使用向?qū)?chuàng)建(5)確定行,列交叉處的顯示內(nèi)容的字段。為了讓交叉表統(tǒng)計(jì)每個(gè)學(xué)院的教師職稱個(gè)數(shù),應(yīng)單擊字段框中的“姓名”字段,然后再“函數(shù)”框中選擇“計(jì)數(shù)(Count)”函數(shù)。若要在交叉表的每行前面顯示總計(jì)數(shù),還應(yīng)選中“是,包括各行小計(jì)”復(fù)選框。如下圖所示,然后單擊“下一步”按鈕;4.5.1使用向?qū)?chuàng)建(6)在彈出的對(duì)話框的“請(qǐng)指定查詢的名稱”文本框中輸入所需的查詢名稱,這里輸入“統(tǒng)計(jì)各學(xué)院教師職稱人數(shù)交叉表查詢”,如下圖所示。然后單擊“查看查詢”選項(xiàng)按鈕,再單擊“完成”按鈕。4.5.2使用設(shè)計(jì)視圖創(chuàng)建【例4.10】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,創(chuàng)建以下交叉表查詢。1.查詢學(xué)生的各門課成績(jī)。2.查詢各學(xué)院男、女教師的人數(shù)。操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中。1.查詢學(xué)生的各門課成績(jī)。將學(xué)生表的字段“學(xué)號(hào)”、“姓名”、課程表中的“課程名稱”以及成績(jī)表的字段“分?jǐn)?shù)”添加到查詢定義窗口中。選擇“查詢工具”選項(xiàng)卡的“查詢類型”組,單擊“交叉表”按鈕,查詢定義窗口中將出現(xiàn)“總計(jì)”和“交叉表”行。首先,在“交叉表”行,對(duì)應(yīng)“學(xué)號(hào)”和“姓名”字段選擇“行標(biāo)題”,對(duì)應(yīng)“課程名稱”字段選擇“列標(biāo)題”,對(duì)應(yīng)“分?jǐn)?shù)”字段,選擇“值”。然后,在“總計(jì)”行,對(duì)應(yīng)“學(xué)號(hào)”、“姓名”和“課程名稱”字段選擇“GroupBy”,對(duì)應(yīng)“分?jǐn)?shù)”字段,選擇“First”,如下圖所示。4.5.2使用設(shè)計(jì)視圖創(chuàng)建4.5.2使用設(shè)計(jì)視圖創(chuàng)建2.查詢各學(xué)院男、女教師的人數(shù)。將“學(xué)院”、“性別”和“教師編號(hào)”字段添加到查詢定義窗口中,在“總計(jì)”行,對(duì)應(yīng)“學(xué)院”和“性別”字段選擇“GroupBy”,對(duì)應(yīng)“教師編號(hào)”字段,選擇“計(jì)數(shù)”;在“交叉表”行,對(duì)應(yīng)“學(xué)院”字段選擇“行標(biāo)題”,對(duì)應(yīng)“性別”字段選擇“列標(biāo)題”,對(duì)應(yīng)“教師編號(hào)”字段,選擇“值”,如下圖所示。4.6操作查詢

前面介紹的查詢是按照用戶的需求,根據(jù)一定的條件從已有的數(shù)據(jù)源中選擇滿足特定準(zhǔn)則的數(shù)據(jù)形成一個(gè)動(dòng)態(tài)集,將已有的數(shù)據(jù)源再組織或增加新的統(tǒng)計(jì)結(jié)果,這種查詢方式不改變數(shù)據(jù)源中原有的數(shù)據(jù)狀態(tài)。操作查詢是在選擇查詢的基礎(chǔ)上創(chuàng)建的,可以對(duì)表中的記錄進(jìn)行追加、修改、刪除和更新。操作查詢包括生成表查詢、更新查詢、追加查詢和刪除查詢。4.6.1生成表查詢生成表查詢可以使查詢的運(yùn)行結(jié)果以表的形式存儲(chǔ),生成一個(gè)新表,這樣就可以利用一個(gè)或多個(gè)表或已知的查詢?cè)賱?chuàng)建表,從而使數(shù)據(jù)庫(kù)中的表可以創(chuàng)建新表,實(shí)現(xiàn)數(shù)據(jù)資源的多次利用及重組數(shù)據(jù)集合?!纠?.11】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,創(chuàng)建以下生成表查詢。1.查詢學(xué)生的學(xué)號(hào)、姓名、性別和成績(jī)并生成“學(xué)生成績(jī)生成表”。2.將學(xué)生成績(jī)生成表中不及格記錄生成一個(gè)“不及格表”。操作步驟如下:打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中。4.6.1生成表查詢1.查詢學(xué)生的學(xué)號(hào)、姓名、性別和分?jǐn)?shù)并生成“學(xué)生成績(jī)生成表”。將學(xué)生表的“學(xué)號(hào)”、“姓名”、“性別”和成績(jī)表的“分?jǐn)?shù)”字段添加到查詢定義窗口中,然后選擇上下文選項(xiàng)卡“查詢工具”的“查詢類型”組,單擊“生成表查詢”按鈕,則打開“生成表”對(duì)話框,如下圖所示,在“表名稱”文本框中輸入“學(xué)生成績(jī)生成表”,單擊確定按鈕,查詢?cè)O(shè)置完成。4.6.1生成表查詢2.將學(xué)生成績(jī)生成表中不及格記錄生成一個(gè)“不及格表”。將學(xué)生成績(jī)生成表的所有字段添加到查詢定義窗口中,對(duì)應(yīng)“分?jǐn)?shù)”字段下的“條件”行輸入“<60”,然后選擇上下文選項(xiàng)卡“查詢工具”的“查詢類型”組,單擊“生成表查詢”按鈕,則打開“生成表”對(duì)話框,在“表名稱”文本框中輸入“不及格”,單擊確定按鈕,查詢?cè)O(shè)置完成。4.6.2更新查詢?cè)跀?shù)據(jù)庫(kù)操作中,如果只對(duì)表中少量數(shù)據(jù)進(jìn)行修改,可以直接在表的“數(shù)據(jù)表視圖”下,通過手工進(jìn)行修改。如果需要成批修改數(shù)據(jù),可以使用Access提供的更新查詢功能來實(shí)現(xiàn)。更新查詢可以對(duì)一個(gè)或多個(gè)表中符合查詢條件的數(shù)據(jù)進(jìn)行批量的修改?!纠?.12】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,將所有專業(yè)課的學(xué)分增加0.5學(xué)分。操作步驟如下:(1)打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中;4.6.2更新查詢(2)將“課程類別”和“學(xué)分”字段添加到查詢定義窗口中,然后選擇上下文選項(xiàng)卡“查詢工具”的“查詢類型”組,單擊“生成表更新查詢”按鈕,則在查詢定義窗口中出現(xiàn)“更新到”行。對(duì)應(yīng)“課程類別”字段,在“條件行”輸入“專業(yè)課”,然后對(duì)應(yīng)“學(xué)分”字段,在“更新到”行輸入“[學(xué)分]+.5”,如下圖所示。保存查詢,輸入查詢名“將所有專業(yè)課的學(xué)分增加”,查詢?cè)O(shè)置完成。4.6.3追加查詢追加查詢可以從一個(gè)或多個(gè)表將一組記錄追加到一個(gè)或多個(gè)表的尾部,可以大大提高數(shù)據(jù)輸入的效率。追加記錄時(shí)只能追加匹配的字段,其它字段將被忽略,其次,被追加的數(shù)據(jù)表必須是存在的表,否則無法實(shí)現(xiàn)追加,系統(tǒng)將顯示相應(yīng)的錯(cuò)誤性息4.6.3追加查詢【例4.13】先根據(jù)“教師”表,通過生成表查詢?cè)凇皩W(xué)生管理”數(shù)據(jù)庫(kù)中建立一個(gè)新表,表名為“全校師生黨員信息”,表結(jié)構(gòu)包括“編號(hào)”、“姓名”、“性別”和“政治面貌”字段,表內(nèi)容為所有“政治面貌”為“中共黨員”的教師信息。然后通過追加查詢,將“學(xué)生”表中所有“政治面貌”為“中共黨員”的學(xué)生信息追加到“全校師生黨員信息”表中。操作步驟如下:

首先,通過生成表查詢創(chuàng)建“全校師生黨員信息”表,查詢?cè)O(shè)置如圖所示。4.6.3追加查詢其次,完成追加查詢。(1)打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中;(2)將“學(xué)號(hào)”、“姓名”、“性別”和“政治面貌”字段添加到查詢定義窗口中,然后選擇上下文選項(xiàng)卡“查詢工具”的“查詢類型”組,單擊“追加查詢”按鈕,在彈出的“追加”對(duì)話框的追加到“表名稱”文本框中輸入“全校師生黨員信息”,如右圖所示。單擊確定按鈕,則在查詢定義窗口中出現(xiàn)“追加到”行;4.6.3追加查詢(3)對(duì)應(yīng)“學(xué)號(hào)”字段,在“追加到”行的下拉列表中選擇“編號(hào)”,對(duì)應(yīng)“政治面貌”字段,在“條件行”輸入“中共黨員”。如下圖所示,保存查詢,運(yùn)行結(jié)果。4.6.4刪除查詢刪除查詢又稱為刪除記錄的查詢,可以從一個(gè)或多個(gè)數(shù)據(jù)表中刪除記錄。使用刪除查詢,將刪除整條記錄,而非只刪除記錄中的字段值。記錄一經(jīng)刪除將不能恢復(fù),因此在刪除記錄前要做好數(shù)據(jù)備份。刪除查詢?cè)O(shè)計(jì)完成后,需要運(yùn)行查詢才能將需要?jiǎng)h除的記錄刪除。如果要從多個(gè)表中刪除相關(guān)記錄,必須滿足以下幾點(diǎn):已經(jīng)定義了相關(guān)表之間的關(guān)系;在相應(yīng)的編輯關(guān)系對(duì)話框中選擇了“實(shí)施參照完整性”復(fù)選框和“級(jí)聯(lián)刪除相關(guān)記錄”復(fù)選框。4.6.4刪除查詢【例4.14】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,刪除“不及格”表中所有分?jǐn)?shù)大于等于50分的學(xué)生信息。操作步驟如下:(1)打開數(shù)據(jù)庫(kù)“學(xué)生管理”,選擇“創(chuàng)建”選項(xiàng)卡的“查詢”組,單擊“查詢?cè)O(shè)計(jì)”按鈕,打開“查詢?cè)O(shè)計(jì)器”窗口,將查詢所需要的表添加到查詢?cè)O(shè)計(jì)視圖的數(shù)據(jù)源窗格中;(2)選擇上下文選項(xiàng)卡“查詢工具”的“查詢類型”組,單擊“追加刪除查詢”按鈕;(3)將“分?jǐn)?shù)”字段添加到查詢定義窗口中,在對(duì)應(yīng)的“條件行”中輸入“>=50”,如右圖所示。保存查詢,運(yùn)行結(jié)果。4.7SQL查詢SQL查詢是使用SQL語言創(chuàng)建的一種查詢。在Access中每個(gè)查詢都對(duì)應(yīng)著一個(gè)SQL查詢命令。當(dāng)用戶使用查詢向?qū)Щ虿樵冊(cè)O(shè)計(jì)器創(chuàng)建查詢時(shí),系統(tǒng)會(huì)自動(dòng)生成對(duì)應(yīng)的SQL命令,可以在SQL視圖中查看,除此之外,用戶還可以直接通過SQL視圖窗口輸入SQL命令來創(chuàng)建查詢。4.7.1SQL簡(jiǎn)介SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語言是標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫(kù)語言。SQL語言的功能包括數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制4個(gè)部分。SQL語言具有以下特點(diǎn):1.高度的綜合SQL語言集數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制于一體,語言風(fēng)格統(tǒng)一,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的全部操作。2.高度非過程化。SQL語言在進(jìn)行數(shù)據(jù)操作時(shí),只需說明“做什么”,而不必指明“怎么做”,其它工作由系統(tǒng)完成。用戶無需了解對(duì)象的存取路徑,大大減輕了用戶負(fù)擔(dān)。3.交互式與嵌入式相結(jié)合用戶可以將SQL語句當(dāng)作一條命令直接使用,也可以將SQL語句當(dāng)作一條語句嵌入到高級(jí)語言程序中,兩種方式語法結(jié)構(gòu)一致,為程序員提供了方便。4.語言簡(jiǎn)潔,易學(xué)易用SQL語言結(jié)構(gòu)簡(jiǎn)潔,只用了9個(gè)動(dòng)詞就可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的所有功能,使用戶易于學(xué)習(xí)和使用。SQL命令動(dòng)詞功能分類命令動(dòng)詞命令動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)查詢

數(shù)據(jù)定義CREATE創(chuàng)建對(duì)象

DROP刪除對(duì)象

ALTER修改對(duì)象

數(shù)據(jù)操縱INSERT插入數(shù)據(jù)

UPDATE更新數(shù)據(jù)

DELETE刪除數(shù)據(jù)

數(shù)據(jù)控制GRANT定義訪問權(quán)限

REVOKE回收訪問權(quán)限

4.7.2數(shù)據(jù)查詢語句數(shù)據(jù)查詢是SQL的核心功能,SQL語言提供了SELECT語句用于檢索和顯示數(shù)據(jù)庫(kù)中表的信息,該語句功能強(qiáng)大,使用方式靈活,可用一個(gè)語句實(shí)現(xiàn)多種方式的查詢。1.SELECT語句的格式SELECT[ALL|DISTINCT][TOP<數(shù)值>[PERCENT]]<目標(biāo)列表達(dá)式1>[AS<列標(biāo)題1>][,<目標(biāo)列表達(dá)式2>[AS<列標(biāo)題2>]...]FROM<表或查詢1>[[AS]<別名1>][,<表或查詢2>[[AS]<別名2>]][[INNER|LEFT[OUTER]|RIGHT[OUTER]JOIN<表或查詢3>[[AS]<別名3>]ON<聯(lián)接條件>]...][WHERE<條件表達(dá)式1>[AND|OR<條件表達(dá)式2>...][GROUPBY<分組項(xiàng)>[HAVING<分組篩選條件>]][ORDERBY<排序項(xiàng)1>[ASC|DESC][,<排序項(xiàng)2>[ASC|DESC]...]]4.7.2數(shù)據(jù)查詢語句2.語法描述的約定說明“[]”內(nèi)的內(nèi)容為可選項(xiàng);“<>”內(nèi)的內(nèi)容為必選項(xiàng);“|”表示“或”,即前后的兩個(gè)值“二選一”。3.SELECT語句中各子句的意義(1)SELECT子句:指定要查詢的數(shù)據(jù),一般是字段名或表達(dá)式。ALL:表示查詢結(jié)果中包括所有滿足查詢條件的記錄,也包括值重復(fù)的記錄。默認(rèn)為ALL。DISTINCT:表示在查詢結(jié)果中內(nèi)容完全相同的記錄只能出現(xiàn)一次。TOP<數(shù)值>[PERCENT]:限制查詢結(jié)果中包括的記錄條數(shù)為當(dāng)前<數(shù)值>條或占記錄總數(shù)的百分比為<數(shù)值>。AS<列標(biāo)題1>:指定查詢結(jié)果中列的標(biāo)題名稱。4.7.2數(shù)據(jù)查詢語句(2)FROM子句:指定數(shù)據(jù)源,即查詢所涉及的相關(guān)表或已有的查詢。如果這里出現(xiàn)JOIN…ON子句則表示要為多表查詢指定多表之間的連接方式。(3)WHERE子句:指定查詢條件,在多表查詢的情況下也可用于指定連接條件。(4)GROUPBY子句:對(duì)查詢結(jié)果進(jìn)行分組,可選項(xiàng)HAVING表示要提取滿足HAVING子句指定條件的那些組。(5)ORDERBY子句:對(duì)查詢結(jié)果進(jìn)行排序。ASC表示升序排列,DESC表示降序排列。4.7.2數(shù)據(jù)查詢語句SQL數(shù)據(jù)查詢語句與查詢?cè)O(shè)計(jì)器中各選項(xiàng)間的對(duì)應(yīng)關(guān)系如下表所示。SELECT子句查詢?cè)O(shè)計(jì)器中的選項(xiàng)SELECT<目標(biāo)列>“字段”欄FROM<表或查詢>“顯示表”對(duì)話框WHERE<篩選條件>“條件”欄GROUPBY<分組項(xiàng)>“總計(jì)”欄ORDERBY<排序項(xiàng)>“排序”欄4.7.3單表查詢1.簡(jiǎn)單查詢只含有SELECT,F(xiàn)ROM基本子句,目標(biāo)字段為全部字段的查詢?!纠?.15】查詢學(xué)生表中的所有記錄。SELECT*FROM學(xué)生2.選擇字段查詢只含有SELECT,F(xiàn)ROM基本子句,目標(biāo)字段為指定字段的查詢?!纠?.15】從教室表中查詢教師編號(hào)、姓名、學(xué)院、職稱等信息。SELECT教師編號(hào),姓名,學(xué)院,職稱FROM教師【例4.16】查找學(xué)生的學(xué)號(hào)、姓名和年齡。SELECT學(xué)號(hào),姓名,Year(Date())-Year([出生日期])AS年齡FROM學(xué)生4.7.3單表查詢3.帶有條件的查詢是指在查詢中帶有簡(jiǎn)單條件的WHERE字句的查詢。【例4.17】從學(xué)生表中查詢出學(xué)號(hào)后2位是“02”的學(xué)生的學(xué)號(hào)、姓名、出生日期,并將結(jié)果按出生日期從大到小的順序排列。SELECT學(xué)號(hào),姓名,出生日期FROM學(xué)生WHERERight([學(xué);號(hào)],2)="02"ORDERBY出生日期DESC【例4.18】在成績(jī)表中查找課程編號(hào)為"CJ005"且分?jǐn)?shù)在80分到90分之間的學(xué)生的學(xué)號(hào)。SELECT學(xué)號(hào),課程編號(hào),分?jǐn)?shù)FROM成績(jī)WHERE課程編;號(hào)="Cj005"AND分?jǐn)?shù)>=80And分?jǐn)?shù)<=904.7.3單表查詢【例4.19】查找課程編號(hào)為“CJ001”和“CJ003”的兩門課的學(xué)生成績(jī)。SELECT學(xué)號(hào),課程編號(hào),分?jǐn)?shù)FROM成績(jī)WHERE課程編號(hào)In("CJ001","CJ003")【例4.20】在學(xué)生表中查找姓“馬”的且全名為三個(gè)漢字的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生WHERE姓名Like"馬??"【例4.21】在學(xué)生表中查找有興趣愛好的學(xué)生的學(xué)號(hào)、姓名和興趣愛好。SELECT學(xué)號(hào),姓名,興趣愛好FROM學(xué)生WHERE興趣愛好.ValueIsNotNull4.7.3單表查詢4.統(tǒng)計(jì)查詢?cè)谥付ǖ哪硞€(gè)(或多個(gè))字段上使用聚合函數(shù)進(jìn)行統(tǒng)計(jì)計(jì)算的查詢?!纠?.22】從教師表中統(tǒng)計(jì)教師人數(shù)。SELECTCount(教師編號(hào))AS教師總數(shù)FROM教師【例4.23】求選修課程編號(hào)為"CJ002"的學(xué)生的平均分。SELECTAvg(分?jǐn)?shù))AS平均分FROM成績(jī)WHERE課程編號(hào)="CJ002"【例4.24】求選修課程編號(hào)為"CJ002"的學(xué)生人數(shù)。SELECTCOUNT(*)FROM成績(jī)WHERE課程編號(hào)="CJ002"4.7.3單表查詢5.分組統(tǒng)計(jì)查詢可以根據(jù)指定的某個(gè)(或多個(gè))字段將查詢結(jié)果進(jìn)行分組,使指定字段上有相同值的記錄分在一組,再通過聚合函數(shù)等函數(shù)對(duì)查詢結(jié)果進(jìn)行統(tǒng)計(jì)計(jì)算?!纠?.25】從成績(jī)表中統(tǒng)計(jì)每個(gè)學(xué)生的所有選修課程的平均分。SELECT學(xué)號(hào),Avg(分?jǐn)?shù))AS平均分FROM成績(jī)GROUPBY學(xué)號(hào)【例4.26】從成績(jī)表中統(tǒng)計(jì)每個(gè)學(xué)生的所有選修課程的平均分,并且只列出平均分大于85分的學(xué)生學(xué)號(hào)和平均分。SELECT學(xué)號(hào),Avg(分?jǐn)?shù))AS平均分FROM成績(jī)GROUPBY學(xué)號(hào)HAVINGAvg(分?jǐn)?shù))>=85【例4.27】求每門課程的平均分。SELECT課程編號(hào),Avg(分?jǐn)?shù))AS平均分FROM成績(jī)GROUPBY課程編號(hào)【例4.28】查找選修課程超過3門課程的學(xué)生學(xué)號(hào)。SELECT學(xué)號(hào)FROM成績(jī)GROUPBY學(xué)號(hào)HAVINGCOUNT(*)>34.7.3單表查詢6.查詢排序按指定的某個(gè)(或多個(gè))字段對(duì)結(jié)果進(jìn)行排序的查詢?!纠?.29】從學(xué)生表中查詢學(xué)生的信息,并將查詢結(jié)果按出生日期升序排序。SELECT*FROM學(xué)生ORDERBY出生日期【例4.30】從成績(jī)表中查詢每個(gè)學(xué)生的選課信息,并將結(jié)果按成績(jī)從高到低排序。SELECT*FROM成績(jī)ORDERBY分?jǐn)?shù)DESC【例4.31】從成績(jī)表中查找課程編號(hào)為"CJ003"的學(xué)生學(xué)號(hào)和分?jǐn)?shù),并按分?jǐn)?shù)降序排序。SELECT學(xué)號(hào),分?jǐn)?shù)FROM成績(jī)WHERE課程編號(hào)="CJ003"ORDERBY分?jǐn)?shù)DESC4.7.3單表查詢7.包含謂詞的查詢?cè)诓樵冋Z句中包含有謂詞的查詢?!纠?.32】從成績(jī)表中查詢有選修課程的學(xué)生的學(xué)號(hào)(要求同一個(gè)學(xué)生只列出一次)。SELECTDISTINCT學(xué)號(hào)FROM成績(jī)4.7.4多表查詢

若查詢涉及兩個(gè)以上的表,即當(dāng)要查詢的數(shù)據(jù)來自多個(gè)表時(shí),必須采用多表查詢方法,該類查詢方法也稱為連接查詢。連接查詢是關(guān)系數(shù)據(jù)庫(kù)最主要的查詢功能。連接查詢可以是兩個(gè)表的連接,也可以是兩個(gè)以上的表的連接,也可以是一個(gè)表自身的連接。使用多表查詢時(shí)必須注意:(1)在FROM子句中列出參與查詢的表。(2)如果參與查詢的表中存在同名的字段,并且這些字段要參與查詢,必須在字段名前加表名。(3)必須在FROM子句中用JOIN或WHERE子句將多個(gè)表用某些字段或表達(dá)式連接起來,否則,將會(huì)產(chǎn)生笛卡兒積。4.7.4多表查詢有兩種方法可以實(shí)現(xiàn)多表的連接查詢。1.用WHERE子句寫連接條件格式為:SELECT<目標(biāo)列>FROM<表名1>[[AS]<別名1>],<表名2>[[AS]<別名2>],<表名3>[[AS]<別名3>]WHERE<聯(lián)接條件1>AND<聯(lián)接條件2>AND<篩選條件>【例4.33】查找學(xué)生信息以及所選修課的課程名稱及分?jǐn)?shù)。SELECTA.*,課程名稱,分?jǐn)?shù)FROM學(xué)生ASA,課程ASB,成績(jī)ASCWHEREB.課程編號(hào)=C.課程編號(hào)ANDA.學(xué)號(hào)=C.學(xué)號(hào)4.7.4多表查詢2.用JOIN子句寫連接條件在Access中JOIN連接主要分為INNERJOIN和OUTERJOIN。INNERJOIN是最常用類型的連接。此連接通過匹配表之間共有的字段值來從兩個(gè)或多個(gè)表中檢索行。OUTERJOIN用于從多個(gè)表中檢索記錄,同時(shí)保留其中一個(gè)表中的記錄,即使其他表中沒有匹配記錄。Access數(shù)據(jù)庫(kù)引擎支持OUTERJOIN有兩種類型:LEFTOUTERJOIN和RIGHTOUTERJOIN。想象兩個(gè)表彼此挨著:一個(gè)表在左邊,一個(gè)表在右邊。LEFTOUTERJOIN選擇右表中與關(guān)系比較條件匹配的所有行,同時(shí)也選擇左表中的所有行,即使右表中不存在匹配項(xiàng)。RIGHTOUTERJOIN恰好與LEFTOUTERJOIN相反,右表中的所有行都被保留。格式為:SELECT<目標(biāo)列>FROM<表名1>[[AS]<別名1>]INNER|LEFT[OUTER]|RIGHTJOIN[OUTER](<表名2>[[AS]<別名2>]ON<表名1>.<字段名1>=<表名2>.<字段名2>WHERE<篩選條件>4.7.4多表查詢【例4.34】根據(jù)教師表和授課表,查詢有授課信息的教師的教師編號(hào)、姓名、所授課程的課程編號(hào)和授課班級(jí)的班級(jí)編號(hào)。SELECT教師.教師編號(hào),姓名,課程編號(hào),班級(jí)編號(hào)FROM教師INNERJOIN授課ON教師.教師編號(hào)=授課.教師編號(hào)如果沒有授課信息的教師也顯示其教師編號(hào)和姓名信息,則需用左連接,如下語句所示。SELECT教師.教師編號(hào),姓名,課程編號(hào),班級(jí)編號(hào)FROM教師LEFTJOIN授課ON教師.教師編號(hào)=授課.教師編號(hào)4.7.5嵌套查詢?cè)赟QL語言中,當(dāng)一個(gè)查詢是另一個(gè)查詢的條件時(shí),即在一個(gè)SELECT語句的WHERE子句中出現(xiàn)另一個(gè)SELECT語句時(shí),這種查詢被稱為嵌套查詢。通常把內(nèi)層的查詢語句稱為子查詢,外層查詢語句稱為父查詢。嵌套查詢的運(yùn)行方式是由里向外,也就是說,每個(gè)子查詢都先于它的父查詢執(zhí)行,而子查詢的結(jié)果作為其父查詢的條件。子查詢的SELECT語句中不能使用ORDERBY子句,ORDERBY子句只能對(duì)最終查詢結(jié)果排序。4.7.5嵌套查詢1.帶關(guān)系運(yùn)算符的嵌套查詢父查詢與子查詢之間用關(guān)系運(yùn)算符(>、<、=、>=、<=、<>)進(jìn)行連接?!纠?.35】根據(jù)學(xué)生表,查詢年齡大于所有學(xué)生平均年齡的學(xué)生,并顯示其學(xué)號(hào)、姓名和年齡。SELECT學(xué)號(hào),姓名,YEAR(DATE())-YEAR(出生日期)AS年齡FROM學(xué)生WHEREYEAR(DATE())-YEAR(出生日期)>(SELECTAVG(YEAR(DATE())-YEAR(出生日期))FROM學(xué)生)4.7.5嵌套查詢2.帶有IN的嵌套查詢【例4.36】根據(jù)學(xué)生表和成績(jī)表查詢沒有選修課程編號(hào)為“CJ005”的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生WHERE學(xué)號(hào)NOTIN(SELECT學(xué)號(hào)FROM成績(jī)WHERE課程編號(hào)="CJ005")4.7.5嵌套查詢3.帶有ANY或ALL的嵌套查詢使用ANY或ALL謂詞時(shí)必須同時(shí)使用比較運(yùn)算符,即<比較運(yùn)算符>[ANY|ALL],ANY代表某一個(gè),ALL代表所有的?!纠?.37】根據(jù)“學(xué)生”表,查詢其他班中比“2012020101”班所有學(xué)生年齡都小的學(xué)生的學(xué)號(hào)、姓名、出生日期和班級(jí)編號(hào)。SELECT學(xué)號(hào),姓名,出生日期,班級(jí)編號(hào)FROM學(xué)生WHERE出生日期>ALL(SELECT出生日期FROM學(xué)生WHERE班級(jí)編號(hào)="2012020101")4.7.5嵌套查詢4.帶有EXISTS的嵌套查詢【例4.38】根據(jù)“學(xué)生”表和“成績(jī)”表,查詢所有選修了“CJ005”課程的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生WHEREEXISTS(SELECT*FROM成績(jī)WHERE成績(jī).學(xué)號(hào)=學(xué)生.學(xué)號(hào)AND課程編號(hào)="CJ005")4.7.6聯(lián)合查詢聯(lián)合查詢可以將兩個(gè)或多個(gè)獨(dú)立查詢的結(jié)果組合在一起。使用“UNION”連接的兩個(gè)或多個(gè)SQL語句產(chǎn)生的查詢結(jié)果要有相同的字段數(shù)目,但是這些字段的大小或數(shù)據(jù)類型不必相同。另外,如果需要使用別名,則僅在第一個(gè)SELECT語句中使用別名,別名在其他語句中將被忽略。如果在查詢中有重復(fù)記錄即所選字段值完全一樣的記錄,則聯(lián)合查詢只顯示重復(fù)記錄中的第一條記錄;要想顯示所有的重復(fù)記錄,需要在“UNION”后加上關(guān)鍵字“ALL”,即寫成“UNIONALL”?!纠?.39】查詢所有學(xué)生的學(xué)號(hào)和姓名以及所有教師的教師編號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生UNIONSELECT教師編號(hào),姓名FROM教師4.8其他SQL語句4.8.1數(shù)據(jù)定義語句數(shù)據(jù)定義功能是SQL的主要功能之一。利用數(shù)據(jù)定義功能可以完成建立、修改、刪除數(shù)據(jù)表結(jié)構(gòu)以及建立、刪除索引等操作。1.創(chuàng)建數(shù)據(jù)表數(shù)據(jù)表定義包含定義表名、字段名、字段數(shù)據(jù)類型、字段的屬性、主鍵、外鍵與參照表、表約束規(guī)則等。在SQL語言中使用CREATETABLE語句來創(chuàng)建數(shù)據(jù)表,使用CREATETABLE定義數(shù)據(jù)表的格式為:CREATETABLE<表名>(<字段名1><字段數(shù)據(jù)類型>[(<大小>)][NOTNULL][PRIMARYKEY|UNIQUE][REFERENCES<參照表名>[(<外部關(guān)鍵字>)]][,<字段名2>[…][,…]][,主鍵])4.8.1數(shù)據(jù)定義語句說明:(1)PRIMARYKEY將該字段創(chuàng)建為主鍵,被定義為主鍵的字段其取值唯一;UNIQUE為該字段定義無重復(fù)索引。(2)NOTNULL不允許字段取空值。(3)REFERENCES子句定義外鍵并指明參照表及其參照字段。(4)當(dāng)主鍵由多字段組成時(shí),必須在所有字段都定義完畢后再通過PRIMARYKEY子句定義主鍵。(5)所有這些定義的字段或項(xiàng)目用逗號(hào)隔開,同一個(gè)項(xiàng)目?jī)?nèi)用空格分隔。(6)字段數(shù)據(jù)類型是用SQL標(biāo)識(shí)符表示的4.8.1數(shù)據(jù)定義語句【例4.40】在“學(xué)生管理”數(shù)據(jù)庫(kù)中,使用SQL語句定義一個(gè)名為“Student”的表,結(jié)構(gòu)為:學(xué)號(hào)(文本,10字符)、姓名(文本,6字符)、性別(文本,2字符)、出生日期(日期/時(shí)間)、簡(jiǎn)歷(備注)、照片(OLE),學(xué)號(hào)為主鍵,姓名不允許為空值。CREATE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論