《數(shù)據(jù)庫原理和應(yīng)用(Access)》第4章:建立和使用查詢.ppt
《《數(shù)據(jù)庫原理和應(yīng)用(Access)》第4章:建立和使用查詢.ppt》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫原理和應(yīng)用(Access)》第4章:建立和使用查詢.ppt(80頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第 4 章 建立和使用查詢 1、 各種查詢的創(chuàng)建及使用方法 2、 SQL 查詢語句的基本格式 3、 用 Access中的工具進(jìn)行 SQL查詢 。 知識重點 4.1 查詢對象的概述 4.1.1 查詢對象的概念 查詢是 Access進(jìn)行數(shù)據(jù)查找并對數(shù)據(jù)進(jìn)行分析、計算、更新及其 他加工處理的數(shù)據(jù)庫對象。查詢是通過從一個或多個表中提取數(shù)據(jù)并進(jìn) 行加工處理而生成的。查詢本身也是一個表結(jié)構(gòu),僅僅是一個結(jié)構(gòu),也 就是說并不占有相應(yīng)的物理空間,它在使用的時候是根據(jù)結(jié)構(gòu)從相應(yīng)的 表中提取數(shù)據(jù)。當(dāng)對應(yīng)表中的數(shù)據(jù)發(fā)生變化時,查詢也進(jìn)行相應(yīng)的更新 。查詢結(jié)果可以作為窗體、報表或是數(shù)據(jù)訪問頁等其他數(shù)據(jù)庫對象的數(shù) 據(jù)源。
2、 查詢分為 4類: 選擇查詢:可以進(jìn)行數(shù)據(jù)的檢索和統(tǒng)計; 參數(shù)查詢:根據(jù)用戶提供的數(shù)據(jù)參數(shù)進(jìn)行數(shù)據(jù)的檢索; 動作查詢:在選擇查詢的基礎(chǔ)上,對查詢出的結(jié)果進(jìn)行更新操作; SQL查詢:通過編寫 SQL語句進(jìn)行數(shù)據(jù)的檢索。 4.1.2 查詢對象的功能 查詢在數(shù)據(jù)庫的管理與使用中的作用: 使用查詢可以快速準(zhǔn)確的將注意力放到目標(biāo)數(shù)據(jù)上,將其他無關(guān)數(shù)據(jù)排除 到查詢之外。通過查詢游覽表中的數(shù)據(jù),分析數(shù)據(jù)或修改數(shù)據(jù)。 通過操作查詢可以對查詢結(jié)果,也就是目標(biāo)數(shù)據(jù)進(jìn)行操作,方便了用戶操 作。 查詢雖然本身只是一個結(jié)構(gòu),并不真正具有數(shù)據(jù),但和表一樣可以作為數(shù) 據(jù)源為其他數(shù)據(jù)庫對象,例如窗體、報表等服務(wù)。 查詢是一個
3、固定的結(jié)構(gòu),可以將某個經(jīng)常處理的數(shù)據(jù)或統(tǒng)計定義為查詢,可以 減少操作的步驟,不用每次都從原始數(shù)據(jù)中進(jìn)行查詢,提高效率。 通過查詢,用戶可以對數(shù)據(jù)進(jìn)行統(tǒng)計和計算。 查詢的結(jié)果有一定生存期。當(dāng)一個查詢關(guān)閉后,其結(jié)果就不存在了。 所有記錄都是保存在原來的表中。 這樣處理有兩個好處: 節(jié)約外存空間。對查詢的要求是多種多樣的,長期使用數(shù)據(jù)庫,必 然會生成大批量的、種類繁多的查詢,如果將這些查詢的結(jié)果都保存下 來,必然會占用巨大的外存空間。另外,許多查詢用過之后可能再也不 會使用了,也沒有必要長期保存。 當(dāng)記錄數(shù)據(jù)信息的基本表發(fā)生變化時,仍可用這些查詢進(jìn)行同樣的 查找,并且獲得的是變化之后的實際數(shù)據(jù)。也就
4、是說,可以使查詢結(jié)果 與表的更改保持同步。 4.2選擇查詢 選擇查詢就是按設(shè)定的條件從數(shù)據(jù)源中查找目標(biāo)數(shù)據(jù)的操作。查詢 的結(jié)果是一個二維表結(jié)構(gòu),但這個二維表結(jié)構(gòu)并不實際存在,只是一個 數(shù)據(jù)記錄的動態(tài)集,可以進(jìn)行查看、修改等操作。選擇查詢是數(shù)據(jù)庫應(yīng) 用技術(shù)中使用頻率最高的一種查詢。此外,選擇查詢還可以對數(shù)據(jù)進(jìn)行 分組等復(fù)雜操作,并針對分組進(jìn)后的數(shù)據(jù)進(jìn)行求和、計數(shù)、求平均值等 匯總計算。 4.2.1 簡單查詢 簡單查詢是指對于查詢的結(jié)果沒有條件的限制,只是從一個數(shù)據(jù)源或多個 數(shù)據(jù)源中提取感興趣的字段組成一個新的記錄集的查詢方式。 簡單查詢的創(chuàng)建主要有兩種方式:設(shè)計視圖和查詢向?qū)?。新建?單查詢的步
5、驟如下: 第一步:在數(shù)據(jù)庫窗口中選擇 【 查詢 】 模塊。 第二步:單擊工具欄上的 【 新建 】 按鈕,然后在彈出的對話框中 選擇新建的方式,如圖 4 1所示。 圖 4 1選擇創(chuàng)建查詢方式窗口 第三步:在新建查詢對話框中可以選擇“使用設(shè)計視圖”或“者向?qū)Х?式”來創(chuàng)建簡單查詢,其中向?qū)Х绞礁鶕?jù)查詢類型的不同還可以分成:簡單查 詢向?qū)А⒔徊姹聿樵兿驅(qū)?、查找重?fù)項查詢向?qū)?、查找不匹配項查詢向?qū)А?查詢的創(chuàng)建可以由一個查詢設(shè)計器或 4個查詢向?qū)Ч?5種方式來完成,在 向?qū)У闹笇?dǎo)下可以完成不同功能的簡單查詢設(shè)計。 1.使用查詢設(shè)計器創(chuàng)建查詢 使用查詢設(shè)計器創(chuàng)建查詢,具有很高的靈活性。 【 例 4 1】
6、 使用查詢設(shè)計器創(chuàng)建查詢,查詢所有讀者借閱圖書的“書 名”、“價格”與“讀者姓名”。 第一步:打開 tushu數(shù)據(jù)庫,選擇 【 查詢 】 模塊, 【 在設(shè)計視圖中創(chuàng)建查 詢 】 命令或者單擊 【 新建 】 按鈕,在如圖 4 1的窗體中選擇 【 設(shè)計視圖 】 命令。 圖 4 1選擇創(chuàng)建查詢方式窗口 第二步:選擇查詢涉及到的表。在如圖 4 2所示的 【 顯示表 】 窗體中選擇 查詢所涉及到的表。雙擊需要添加的表名,或是選中表后單擊 【 添加 】 按鈕就 可以將目標(biāo)表添加到這次查詢中。添加結(jié)束后單擊 【 關(guān)閉 】 按鈕,進(jìn)入設(shè)計視 圖。這里將“圖書”、“讀者”和“借還記錄”三個表添加到設(shè)計器中。 圖
7、 4 2創(chuàng)建查詢添加相關(guān)表 第三步:選擇查詢涉及的字段。 如果事先對表之間的關(guān)系進(jìn)行了正確的配置,三個表之間會自動建立連接。如 果表之間沒有建立連接則需要手動連接相關(guān)表格,連接的方法與創(chuàng)建關(guān)系時相 同。如圖 4 3所示。 圖 4 3 相關(guān)表自動創(chuàng)建連接 將查詢相關(guān)字段添加到字段列表中,添加字段的方法有兩種:第一種,從 表單中雙擊目標(biāo)字段,字段會自動添加到窗體下方的字段列表中;第二種,選 中目標(biāo)字段,然后按住左鍵,將目標(biāo)字段拖動到字段列表的相應(yīng)位置松開。這 里添加讀者表的“ dzxm”字段、圖書表的“ tsm”和“ jiage”字段。 視圖下方的各種欄目根據(jù)查詢類型的不同有不同的組合。常用的是:
8、 字段:添加與查詢有關(guān)系的字段。 表:設(shè)定字段所在的表。 顯示:設(shè)定在最后的查詢結(jié)果中是否顯示該字段,如果該字段只是作為查 詢條件,而不是最終用戶感興趣的字段,可將該欄目的“ ”號勾掉。 條件:設(shè)定查詢的條件。 第三步:完成創(chuàng)建 設(shè)定結(jié)束后對查詢對象進(jìn)行保存,并設(shè)定查詢的名稱。 2.使用向?qū)?chuàng)建選擇查詢 使用向?qū)?chuàng)建查詢的優(yōu)點是方法比較簡單、直觀,但是缺少靈活性。選擇 查詢向?qū)Ц鶕?jù)查詢類型的不同還可以分成:簡單查詢向?qū)А⒔徊姹聿樵兿驅(qū)А?查找重復(fù)項查詢向?qū)?、查找不匹配項查詢向?qū)А?1.簡單查詢向?qū)?簡單查詢向?qū)е荒苓M(jìn)行簡單查詢的創(chuàng)建,通常在后期仍然需要對向?qū)?chuàng) 建的查詢進(jìn)行補(bǔ)充和調(diào)整。 第一步
9、:在打開的數(shù)據(jù)庫中,選擇 【 查詢 】 模塊,單擊工具欄上的 【 新 建 】 。在如圖 4 1所示的“新建查詢”對話框中選擇“簡單查詢向?qū)А辈螕?【 確定 】 按鈕。 圖 4 1選擇創(chuàng)建查詢方式窗口 第二步:設(shè)定查詢涉及的表與字段 , 如圖 4 4示 。 對話框要有三個部分 , 首先從 “ 表 /查詢 ” 下拉控件中選擇某個與查詢有關(guān)的表 , 例如 “ 借還記錄 ” 表 。 此時下方 “ 可用字段 ” 列表框中會列出該表中的所有字段 。 然后依次將本次查 詢需要的字段通過動作按鈕添加到右側(cè)的 “ 選定的字段 ” 列表框中 。 選定結(jié)束 后單擊 【 下一步 】 。 圖 4 4創(chuàng)建查詢向?qū)нx擇相
10、關(guān)字段 注意 , 首先保證相關(guān)表之間建立了正確的表關(guān)系 , 否則可能出現(xiàn)不 能正確使用向?qū)У那闆r 。 第三步:彈出的對話框要求指定查詢的名稱以及向?qū)ЫY(jié)束后進(jìn)行的 工作 。 這里使用默認(rèn)的查詢名稱 “ 借閱信息 查詢 ” 。 設(shè)定結(jié)束后單擊 【 完成 】 按鈕 。 2.查找重復(fù)項查詢向?qū)?查找重復(fù)項是指從某字段中查找重復(fù)的數(shù)據(jù),并可以將這些數(shù)據(jù)對應(yīng)的其 他字段顯示出來。 【 例 4 2】 查找那些用戶借閱了 2本以上的圖書,并顯示借還的日期。 實際就是查找那些在“借還記錄”表“ jszh(借書證)”字段中存在重復(fù)情 況的記錄。 第一步:打開 tushu數(shù)據(jù)庫,選擇 【 查詢 】 模塊,單擊工具欄
11、中的 【 新建 】 按鈕,在如圖 4 1的窗體中選擇“查找重復(fù)項查詢向?qū)А泵睢?圖 4 1選擇創(chuàng)建查詢方式窗口 第二步:彈出的窗體要求用戶選擇重復(fù)數(shù)據(jù)字段所在的表或查詢 , 如圖 4 5 所示 。 選擇 “ 借還記錄 ” , 單擊 【 下一步 】 。 圖 4 5 查找重復(fù)項查詢向?qū)?shù)據(jù)源設(shè)定 第 三步:彈出的“查找重復(fù)項查詢向?qū)?字段設(shè)定”對話框要求設(shè)定查找 重復(fù)數(shù)據(jù)的目標(biāo)字段,將左側(cè)“可用字段”中列表中的“ jszh”字段添加到右側(cè) 的“重復(fù)值字段”列表中,單擊 【 下一步 】 。 第四步:彈出的“查找重復(fù)項查詢向?qū)?其它字段設(shè)定”對話框要求輸入 除了重復(fù)字段外還顯示什么字段,如圖 4 6
12、所示。這里將左側(cè)“可用字段”列 表中的“ jhrq”、“ jhzh”兩字段添加到右側(cè)“另外的查詢字段”列表中。單擊 【 下一步 】 。 圖 4 6查找重復(fù)項查詢向?qū)渌侄卧O(shè)定 第五步:設(shè)定查詢的名稱以及向?qū)ЫY(jié)束后的工作。向?qū)ЫY(jié)束后 有兩種選擇:查看查詢和修改設(shè)計。如果對查詢結(jié)構(gòu)還需要調(diào)整, 則選擇“修改設(shè)計”,并進(jìn)入到“查詢設(shè)計器”窗口對查詢結(jié)構(gòu)進(jìn) 行調(diào)整??梢赃x擇“查看查詢”,查看本次查詢的結(jié)果。設(shè)定后單 擊 【 完成 】 按鈕。 3.查找不匹配項查詢向?qū)?查找不匹配項查詢是對兩個表中的兩個字段進(jìn)行比較,查找存在于一 個字段中而另一個表中對應(yīng)字段沒有的數(shù)據(jù)。 【 例 4 3】 查找沒有人借
13、閱的圖書名稱。 沒有人借閱的圖書就是“圖書”表中有,而“借還記錄”表中沒有的 圖書。 第一步:打開 tushu數(shù)據(jù)庫,選擇 【 查詢 】 模塊,單擊工具欄中的 【 新建 】 按鈕,在如圖 4 1的窗體中選擇“查找不匹配項查詢”命令。打開后如圖 4 7 所示。要求設(shè)定兩個表中的基本表。因為查找圖書表中存在,而借還記錄表中沒 有的圖書,所以基本表應(yīng)該是“圖書”表。單擊 【 下一步 】 。 圖 4 7創(chuàng)建查找不匹配項查詢向?qū)Щ颈碓O(shè)定 第二步:在彈出的“創(chuàng)建查找不匹配項查詢向?qū)П容^表設(shè)定”對話框中 選擇用來比較的表,所以這里選擇“借閱信息”表。 第三步:彈出的“創(chuàng)建查找不匹配項查詢向?qū)гO(shè)定比較字段”
14、對話框中 設(shè)定用來比較的兩個字段,如圖 4 8所示。這進(jìn)而使用“圖書”表的“ tsgtm”字 段與“借還記錄”表中的“ txm”字段進(jìn)行比較,如果“圖書”表中有的“ tsgtm” 而“借還記錄”表的“ tsm”字段中沒有,就說明這本書沒有人借閱。設(shè)定后單擊 【 下一步 】 。 圖 4 8創(chuàng)建查找不匹配項查詢向?qū)гO(shè)定比較字段 第四步:在“創(chuàng)建查找不匹配項查詢向?qū)гO(shè)定顯示字段”對話框 中設(shè)定最后顯示的字段,這里選擇將“可用字段”列表中的“ tsm”字段 添加到“選定字段”列表中。設(shè)定結(jié)束后單擊 【 下一步 】 。 第五步:設(shè)定查詢的名稱以及向?qū)ЫY(jié)束后的工作。向?qū)ЫY(jié)束后有兩 種選擇:查看查詢和修改設(shè)
15、計。設(shè)定后單擊 【 完成 】 按鈕。 4.2.2 條件查詢 條件查詢是在簡單查詢的基礎(chǔ)上,通過查詢條件的設(shè)置來達(dá)到查找目標(biāo)數(shù) 據(jù)的操作。條件查詢通常都是通過查詢設(shè)計器來完成的。 條件查詢可以分為單條件查詢和多條件查詢。 1.單條件查詢 單條件查詢是在查詢中只有一個條件約束查詢結(jié)果。 【 例 4 4】 在“圖書”表中查詢“清華大學(xué)出版社”出版的圖書的圖書名 和價格。 第一步:根據(jù)前面介紹的簡單查詢創(chuàng)建方法,將涉及到的“圖書”表添加 到查詢設(shè)計器中。 第二步:將查詢涉及到的字段添加到設(shè)計器的字段列表中,這里將“ tsm”、 “ jiage”和“ cbs”添加到列表中,如圖 4 9所示。 第三步:設(shè)
16、定查詢需要的條件。在需要設(shè)定條件的字段下方的“條件”欄目中 進(jìn)行設(shè)定。這里直接設(shè)定“ cbs”字段的條件為“清華大學(xué)出版社”,如圖 4 9所示。 注意,用戶只需要直接輸入“清華大學(xué)出版社”即可,兩端的雙引號由系統(tǒng)自 動生成。 圖 4 9 條件查詢設(shè)置條件 第四步:單擊工具欄中的 【 (運(yùn)行) 】 按鈕來查看查詢的結(jié)果。如果沒 有問題保存查詢。 2.多條件查詢 有多個條件來約束查詢結(jié)果的稱為多條件查詢 。 要求在 “ 條件 ” 欄目和 “ 或 ” 欄目中對條件進(jìn)行設(shè)置 。 如果在多個“條件”欄目和“或”欄目中都輸入了條件表達(dá)式, Access 自動判斷使用 And運(yùn)算符或者 Or運(yùn)算符進(jìn)行條件組
17、合,組合的原則如下: 在“條件”欄目中的條件使用 And連接,查詢時需要全部滿足。 在“或”欄目中的不同行的條件使用 Or連接,查詢時只需滿足其中一個 條件。同行的使用 And連接。 【 例 4 5】 建立同時滿足“ flh(分類號)”為“ A”,“ jiage(價格 )”大小 50元,“清華出版社”的圖書信息查詢。 第一步:將“圖書”表添加到查詢設(shè)計器中。 第二步:三個條件都寫在“條件”欄目中。如圖 4 10所示。等同于: flh=“A” and jianjie50 and cbs=“清華大學(xué)出版社”。 圖 4 10 多條件設(shè)置( a) 圖 4 10 多條件設(shè)置( b) 第三步:保存查詢。
18、如果一個條件寫在“條件”欄目中,另兩個條件行分別寫在同一行的“或” 欄目上如圖 4 11所示。如說明結(jié)果中的數(shù)據(jù),滿足“ jiage”大于 50,或者同時 滿足“ flh”為“ A”和“ cbs”為“清華出版社”。 圖 4 11 查詢條件表達(dá)式生成器 三個條件寫在了不同的行中 , 說明這三個條件為或的關(guān)系 。 結(jié)果集只要 “ flh”為 “ A”, “ jiage”大于 50和 “ cbs”為 “ 清華出版社 ” 這三個條件中的一個 就可以 。 4.2.3 查詢條件 1.條件的使用 查詢條件是對查詢結(jié)果的一種限制與約束,得到想看到的數(shù)據(jù)。例如,想 查詢某個出版社出版的圖書資料,就可以通過對“
19、cbs”字段的限制來實現(xiàn)。 條件的實現(xiàn)是通過表達(dá)式完成的。這些表達(dá)式多數(shù)很簡單,例如“男”, 指定只顯示該字段的值為“男”的記錄;“ Between 10 And 20”,指定顯示該 字段的值在 1020之間的記錄。在一個查詢中,可以在一列中或多列中使用條 件。 條件表達(dá)式的輸入有兩種方式:直接輸入與使用表達(dá)式生成器輸入。直接 輸入就是指按照一定的格式將表達(dá)式直接填入對應(yīng)字段的“條件”欄目中。表 達(dá)式生成器是 Access中專門用來生成表達(dá)式的一種工具,包含著各種格式、對 象和函數(shù)等,使用它可以準(zhǔn)確的生成表達(dá)式。 表達(dá)式生成器的打開方法: 打開查詢設(shè)計器,單擊要設(shè)置條件的字段的“條件”行網(wǎng)格,
20、將插入點移 入其中。 單擊工具欄上的 【 (生成器) 】 按鈕,或右鍵單擊并選擇快捷菜單的 【 生成器 】 命令,打開表達(dá)式生成器,如圖 4 11所示。 圖 4 11 查詢條件表達(dá)式生成器 如果在啟動“表達(dá)式生成器”的網(wǎng)格或“條件”列中已經(jīng)包含了一個值, 該值將自動復(fù)制到其中的表達(dá)式框中。標(biāo)準(zhǔn)的表達(dá)式具有很多的格式要求,而 “表達(dá)式生成器”中提供的選擇式輸入很好的解決了這個問題,由“表達(dá)式生 成器”提供的條件或函數(shù)都具有準(zhǔn)確的結(jié)構(gòu)格式。 2.條件表達(dá)式 查詢的條件表達(dá)式與設(shè)計表時字段的有效性規(guī)則比較相近。如果只是以 一個值為條件,只需將這個值輸入到對應(yīng)字段的“ 【 條件 】 ”欄中。如果查詢條
21、 件比較復(fù)雜,就要使用條件表達(dá)式了。 下面介紹條件表達(dá)式的書寫方法。 表達(dá)式中的運(yùn)算符 在條件表達(dá)式中,除了使用常規(guī)的 +、等算術(shù)運(yùn)算符之外,還經(jīng)常使用 以下幾種特殊的運(yùn)算符。 And運(yùn)算符 “邏輯與”運(yùn)算符。條件表達(dá)式 : And 。 要求查詢結(jié)果集中的記錄必須同時滿足由 And所連接的兩個條件。 Or運(yùn)算符 “邏輯或”運(yùn)算符。條件表達(dá)式: Or 。 查詢結(jié)果集中的記錄只需要滿足由 Or所連接的兩個條件中的一個。 In運(yùn)算符 要求從一個值域中選擇某一值。例如, In(“男”,“女”)等價于 “男” Or“女”。如果備選內(nèi)容較多,使用 In運(yùn)算符要比使用 Or更加簡單。 Between And
22、 指定一個數(shù)字范圍 。 主要用于數(shù)字型 、 貨幣型 、 日期型字段 。 條件表達(dá)式: Between And 。 要求查詢結(jié)果記錄集中的記錄值介于條件一與條件二之間,包括兩個臨 界點。 Like 用于按照某種約定的格式進(jìn)行查找,可使用不同含義的通配符來實現(xiàn)不 同程度的模糊查詢。例如, Like“張 *”,查找以字符“張”開頭,后面任意長度 字符的記錄,而 Like “張 _”則指定查找以“張”開頭,后面一個字符的記錄。 可以使用的通配符如表 4 1所示。 表 4 1 字符樣式中的通配符 通配符 匹配的內(nèi)容 ? 一個字符 * 零個或多個字符 # 一個數(shù)字( 0 9) 字符表 字符表中的一個字符
23、!字符表 字符表中不包含的一個字符 字符表為字符設(shè)置一個取值范圍, a-z、 0-9、! 0-9等, 用“”來隔開范圍的上下界。例如,表達(dá)式: Like “ 0-9 *”的含義為 : 查找以 0 9的某一個數(shù)字開頭,后面任意字符的字符串。 又如,表達(dá)式: Like“DataBase? a-z #! 0-9 *”的含義為: 查找以“ DataBase”開頭,第二個為任意字符,第三個為 a z中的任意一個 字符,第四個為數(shù)字,第五個為非 0 9的任何字符,其后為任意字符的字符串。 表達(dá)式的例子 表 4 2是一些條件表達(dá)式的例子。 表 4 2 表達(dá)式示例 表達(dá)式 意義 定價 50 定價大于 50 B
24、etween #1/2/2007#And#12/30/2007 2007年 1月 2日到 2007年 12月 30日 圖書名稱 Like “*數(shù)據(jù)庫 *” “圖書名稱”包含“數(shù)據(jù)庫”字符 In(“黨員”,“團(tuán)員”, “ 群眾” ) 黨員、團(tuán)員或群眾 Len(出版社 ) Val(5) 出版社字段長度在 5個字符以上 借閱日期 Date( ) 10 借閱日期在 30天之前 身份證號 Is Not Null “身份證號”字段不為空 4.3 參數(shù)查詢 前面章節(jié)介紹的查詢條件都是在創(chuàng)建查詢時設(shè)定好的,是一種固定的條件。例如 查詢條件為“清華大學(xué)出版社”,只能固定的查詢“清華大學(xué)出版社”的圖書,如果 想查
25、詢其他出版社的圖書就需要回到查詢設(shè)計器中進(jìn)行條件的修改。于是 Access提供 了智能參數(shù)查詢功能。 參數(shù)查詢就是在運(yùn)行查詢的時候,首先需要輸入?yún)?shù),在根據(jù)參數(shù)進(jìn)行查詢的操 作。 參數(shù)查詢根據(jù)其查詢形式分為 兩種: 單參數(shù)查詢:執(zhí)行查詢時只需要輸入一個條件參數(shù)。 多參數(shù)查詢:執(zhí)行查詢時,針對多組條件,需要輸入多個參數(shù)條件。 4.3.1 單參數(shù)查詢 使用參數(shù)查詢時,數(shù)據(jù)庫系統(tǒng)首先要求輸入查詢的參數(shù),再根據(jù)參數(shù)進(jìn)行相應(yīng)的 參數(shù)查詢,這種查詢方式具有更好的靈活性。 【 例 4 5】 查詢某本圖書的價格。 第一步:進(jìn)入“查詢設(shè)計器”,“圖書”表添加到查詢中。 第二步:將涉及到的字段添加到下方的字段列表
26、中。這里需要顯示圖書的 書名和價格,所以添加“ tsm”和“ jiage”。 第三步:在窗體上方灰色部分單擊鼠標(biāo)右鍵,從彈出的菜單中選擇 【 參數(shù) 】 命令,如圖 4 12所示。 圖 4 12參數(shù)查詢參數(shù)菜單 第四步:在彈出的參數(shù)窗口中對參數(shù)進(jìn)行設(shè)計。本題根據(jù)書名進(jìn)行查詢,所以 創(chuàng)建一個名為“請輸入書名”的參數(shù),如圖 4 13所示。 注意:第一,參數(shù)的數(shù)據(jù)類型必須與參數(shù)字段的數(shù)據(jù)類型相同,這里需要和“ tsm” 的數(shù)據(jù)類型相同;第二,這里的參數(shù)名稱會出現(xiàn)在進(jìn)行查詢時的參數(shù)輸入框中,如 圖 4 30所示,所以要根據(jù)要求輸入。 圖 4 13參數(shù)查詢參數(shù)設(shè)定 第五步:將設(shè)定好的參數(shù)名填入相應(yīng)字段的“
27、條件”欄目中?!罢堓斎霑眳?數(shù)填入到“ tsm”字段的“條件”欄中,如圖 4 14所示。 注意,參數(shù)的名稱需要用方括號“ ”擴(kuò)起來。 圖 4 14參數(shù)查詢參數(shù)與字段綁定 第六步:保存查詢,并命名。 第七步:每次使用的時候,系統(tǒng)會首先要求輸入?yún)?shù),如圖 4 15所示。 注意:窗體中的提示語句就是參數(shù)名稱“請輸入書名”,所以參數(shù)的名稱應(yīng) 該根據(jù)實際情況設(shè)定。 圖 4 15參數(shù)查詢輸入?yún)?shù) 4.3.2 多參數(shù)查詢 多參數(shù)查詢的創(chuàng)建方式與單參數(shù)查詢的創(chuàng)建方式相同。只是當(dāng)建立參數(shù)的時候 需要建立多個參數(shù),而運(yùn)行查詢的時候也需要輸入多個條件參數(shù)。 【 例 4 5】 依出版社和類別查詢圖書信息。 第一步
28、:打開查詢設(shè)計器,將“圖書”表添加到設(shè)計器中。 第二步:打開參數(shù)設(shè)計窗口,并將查詢中設(shè)計的字段添加到設(shè)計器中。這里添 加“ tsm”、“ jiage”、“ cbs”和“ flh”4個字段。 第三步:創(chuàng)建多個參數(shù)。在圖 4 13中輸入“請輸入出版社”和“請輸入類別” 兩個參數(shù)。 第四步:在“ cbs”和“ flh”字段的“條件”欄目中輸入相應(yīng)參數(shù),保存退出。 當(dāng)使用多參數(shù)查詢的時候,系統(tǒng)會按參數(shù)順序依次要求用戶輸入查詢參數(shù)的值。 4.4 操作查詢 在前面的內(nèi)容中介紹過,查詢除了對數(shù)據(jù)有檢索功能外,還是數(shù)據(jù)庫其他操作 的一個基礎(chǔ)。例如對數(shù)據(jù)的修改、刪除,甚至是添加都有可能是以查詢?yōu)橄葲Q條件 的。下
29、面介紹的幾種操作查詢就是在查詢的基礎(chǔ)上對查詢的結(jié)果進(jìn)行操作。操作查 詢同樣具有選擇和參數(shù)查詢的特征,只是在二者的基礎(chǔ)上增加了操作功能。 操作查詢除了可以操作數(shù)據(jù)外,還可以添加表。 Access數(shù)據(jù)庫系統(tǒng)允許創(chuàng)建 4中操 作查詢:生成表查詢、更新查詢、追加查詢和刪除查詢。 4.4.1 生成表查詢 生成表查詢是指從一個或多個表中查詢出目標(biāo)數(shù)據(jù),并將這些數(shù)據(jù)存儲到一個 新的表中。生成新表中的字段屬性及主鍵屬性會繼承源表中字段的屬性。每次運(yùn)行 該查詢都會生成新表。 【 例 4 6】 在 tushu數(shù)據(jù)庫中創(chuàng)建“高價圖書”表,將價格超過 50元的圖書書名及 價格保存到新表中。 第一步:打開“查詢設(shè)計器”
30、,并將“圖書”表添加到查詢中。 第二步:單擊菜單 【 查詢 】 中的 【 生成表查詢 】 命令,如圖 4 16所示。 圖 4 16 生成表查詢選擇生成表查詢 第三步:彈出的對話框要求設(shè)定新表的名稱以及新表保存的數(shù)據(jù)庫,如圖 4 17 所示。將表的名稱設(shè)定為“高價圖書”,保存在當(dāng)前數(shù)據(jù)庫中,單擊 【 確定 】 。 圖 4 17生成表查詢新表名稱設(shè)定 第四步:回到“查詢設(shè)計器”后,利用條件查詢的方法將價格高于 50元的書名與 價格查詢出來,保存該查詢并退出。 第五步:雙擊剛才保存的查詢,彈出如圖 4 18所示的提示窗口,要求確 認(rèn)操作。單擊 【 是 】 ,系統(tǒng)會生成題中要求建立的“高價圖書”表。
31、圖 4 18生成表查詢確認(rèn)生成新表 4.4.2 刪除查詢 刪除查詢可以將查詢出來的數(shù)據(jù)進(jìn)行刪除操作。刪除后的數(shù)據(jù)是不能被恢復(fù)的, 所以在進(jìn)行刪除前應(yīng)切換到“數(shù)據(jù)表視圖”進(jìn)行查看,確定查詢出來的數(shù)據(jù)是需要 刪除的數(shù)據(jù)。 【 例 4 6】 刪除價格大于 10的圖書的資料。 第一步:打開“查詢設(shè)計器”,并將“圖書”表添加到查詢中。 第二步:單擊菜單 【 查詢 】 中的 【 刪除查詢 】 命令。 第三步:將涉及到的字段添加到字段列表中。因為根據(jù)價格進(jìn)行刪除,所以添加 “ jiage”字段,并在“條件”欄中輸入“ 10”,如圖 4 19所示。 注意:刪除查詢并不是選擇什么字段就只刪除該字段的內(nèi)容,而是將
32、符合該條 件的所有記錄刪除,所以這里雖然只設(shè)置了“ jiage”字段,但是運(yùn)行該查詢會將所有 10元以上的圖書都刪除。 圖 4 19刪除查詢 第四步:保存查詢。雙擊查詢可以進(jìn)行刪除操作。 4.4.3 更新查詢 更新查詢可以將查詢出來的結(jié)果進(jìn)行批量的修改。使用更新查詢首先將要修 改的數(shù)據(jù)查詢出來,然后使用一個表達(dá)式將數(shù)據(jù)進(jìn)行修改。更新查詢會改變數(shù)據(jù) 的物理信息,所以在使用前一定要確認(rèn)沒有錯誤,以免造成數(shù)據(jù)的破壞。 【 例 4 7】 將“圖書”表中清華大學(xué)出版社的所有圖書的價格增加 10元。 第一步:打開“查詢設(shè)計器”,并將“圖書”表添加到查詢中。 第二步:單擊菜單 【 查詢 】 中的 【 更新查
33、詢 】 命令,此時“查詢設(shè)計器”下方的 字段列表結(jié)構(gòu)會發(fā)生一些改變,出現(xiàn)了一個“更新到”欄目。 第三步:將查詢涉及到的字段添加到字段列表中,本題需要添加“ cbs”和“ jiage” 兩個字段。 第四步:條件設(shè)定。首先在“ cbs”字段的“條件”中設(shè)定“清華大學(xué)出版社”。 然后在“ jiage”字段的“更新到”欄目中設(shè)定“ jiage+10”,將價格在原有基礎(chǔ) 上增加 10元,如圖 4 20所示。 圖 4 20更新查詢 第五步:保存查詢,并雙擊保存后的查詢。 4.4.4 追加查詢 追加查詢是將查詢出來的結(jié)果添加到另一個表中的操作,這些記錄將 被保存在目標(biāo)表中的結(jié)尾。執(zhí)行追加查詢的前提是,追加部
34、分的數(shù)據(jù)必須 在目標(biāo)表中存在對應(yīng)字段。 【 例 4 8】 將 40元到 50元的圖書的書名和價格追加到 【 例 4 6】 建立的 “高級圖書”表中。 第一步:打開“查詢設(shè)計器”,并將“圖書”表添加到查詢中。 第二步:單擊菜單 【 查詢 】 中的 【 追加查詢 】 命令。 第三步:彈出的窗體要求設(shè)定數(shù)據(jù)要追加的目標(biāo)表。根據(jù)題意,將數(shù)據(jù)追 加到“高價圖書”表。設(shè)定后單擊 【 確定 】 。 第四步:回到“查詢設(shè)計器”后,將目標(biāo)字段添加到字段列表中。這里添 加“ tsm”和“ jiage”字段。然后設(shè)定查詢條件:價格介于 40到 50之間,就是在 “ jiage”的“條件”欄目里添加條件:“ 40 A
35、nd =50”,然后在“追加到”欄 目中設(shè)置分別將字段追加到那些新字段中,如圖 4 21所示。單擊“追加到”欄 目,從彈出的下拉框中選擇對應(yīng)表的相應(yīng)字段。 第五步:保存查詢,并雙擊查詢執(zhí)行。 圖 4 21 追加查詢設(shè)計視圖 4.5 交叉表查詢 4.5.1 認(rèn)識交叉表查詢 在數(shù)據(jù)庫的實際應(yīng)用當(dāng)中,一些數(shù)據(jù)的統(tǒng)計需要首先將數(shù)據(jù)按照一定規(guī)律分 組后再操作,例如,查詢各出版社的圖書數(shù)量、查詢各類圖書的平均價格等。 交叉表查詢就是首先按照一個或一組屬性對數(shù)據(jù)進(jìn)行分組,然后對分組后的 數(shù)據(jù)進(jìn)行操作的查詢。 4.5.2 交叉表查詢向?qū)?交叉表查詢是一種比較特殊的查詢方式,是將表或其他查詢中的一些數(shù)據(jù)作 為新
36、的字段,用另一種方式來查看數(shù)據(jù),通常用來進(jìn)行數(shù)據(jù)的各種計算,例 如:求和、平均值、最大值、最小值和計數(shù)等。 【 例 4 9】 在 tushu數(shù)據(jù)庫中查詢各類圖書的平均價格 第一步:實際是要求將圖書按照類別進(jìn)行分組,然后求每組的平均價格。在新建查 詢窗體中雙擊 【 交叉表查詢向?qū)?】 ,進(jìn)入到數(shù)據(jù)源設(shè)定窗口,如圖 4 22所示。 第二步:在窗體內(nèi)設(shè)置需要使用的數(shù)據(jù)源。 注意,交叉表查詢的記錄源必須是唯一的,所以窗體中聲明:如果包含多個表 的字段,需要先創(chuàng)建一個包含這些字段的查詢。 本題設(shè)計到的字段都來源于“圖書表”,所以這里選中“圖書表”,單擊 【 下 一步 】 。 圖 4 22交叉表查詢數(shù)據(jù)源
37、設(shè)定 第三步:彈出的窗體要求設(shè)定分組的依據(jù)字段,也就是行標(biāo)題,如圖 4 23所示。 題意是按照類別統(tǒng)計平均價格,所以這里按照圖書的類別分組。將“可用字段”列 表中的“ flh”字段添加到“選定字段”列表中作為分組依據(jù)。設(shè)定結(jié)束單擊 【 下一 步 】 。 第四步:彈出的窗體要求設(shè)定除了顯示平均價格外,還需要顯示什么字段作為 依據(jù),也就是列標(biāo)題,這里選擇書名作為列標(biāo)題。設(shè)定后單擊 【 下一步 】 。 圖 4 23創(chuàng)建交叉表查詢行標(biāo)題設(shè)定 第五步:彈出的窗體要求設(shè)定具體統(tǒng)計的數(shù)據(jù)內(nèi)容,如圖 4 24所示。因為題中要 求統(tǒng)計每組的平均價格,所以在中部的“字段”列表中選中“ jiage”字段,然后在 右
38、側(cè)的“函數(shù)”字段中選中“平均”選項。設(shè)定結(jié)束后單擊 【 下一步 】 。 第六步:向?qū)ЫY(jié)束后有兩種選擇:查看查詢和修改設(shè)計。如果對查詢結(jié)構(gòu)還需要調(diào)整, 則可以選擇“修改設(shè)計”,并進(jìn)入到“查詢設(shè)計器”窗口對查詢結(jié)構(gòu)進(jìn)行調(diào)整。否則 可以選擇“查看查詢”。單擊 【 完成 】 按鈕。 圖 4 24創(chuàng)建交叉表查詢統(tǒng)計項設(shè)定 4.5.3 交叉表查詢的設(shè)計視圖 可以使用靈活性更大的設(shè)計窗體方式自行創(chuàng)建交叉表查詢。 【 例 4 10】 在“設(shè)計視圖”中重新設(shè)計查詢各類圖書的平均價格 第一步:創(chuàng)建一個新的查詢,打開查詢設(shè)計器,并將圖書表添加到查詢設(shè)計器中。 第二步:在“查詢設(shè)計器”中單擊 【 查詢 】 菜單中的
39、【 交叉表查詢 】 命令。 第三步:使用設(shè)計器創(chuàng)建表查詢必需要設(shè)置 3項內(nèi)容,分別是:行標(biāo)題、列標(biāo)題、 統(tǒng)計列。 行標(biāo)題:用作分組的字段,通常由兩個字段組成,一個作為分組依據(jù),一個作 為分組后統(tǒng)計的值。 列標(biāo)題:除了行標(biāo)題和統(tǒng)計結(jié)果外顯示的字段。 值列:用來統(tǒng)計的字段,需要設(shè)置統(tǒng)計的類型。 根據(jù)題意,對字段進(jìn)行如下設(shè)置,如圖 4 25所示。: 使用“ flh”作為行標(biāo)題中的分組字段,將“總計”項設(shè)置為“分組”,“交叉表” 項設(shè)置為“行標(biāo)題”; 使用“ jiage”作為行標(biāo)題中的統(tǒng)計值,并將“總計”項設(shè)置為“平均值”,“交 叉表”項設(shè)置為“行標(biāo)題”; 使用“ tsm”作為列標(biāo)題,將“總計”項設(shè)置
40、為“分組”,“交叉表”項設(shè)置為 “列標(biāo)題”; 使用“ jiage”作為值列,將“總計”項設(shè)置為“平均值”,“交叉表”項設(shè)置為 “值”。 圖 4 25 交叉表查詢的字段設(shè)置 第四步:保存退出 4.6 在查詢中進(jìn)行計算 4.6.1 查詢中的計算功能 查詢除了可以查找數(shù)據(jù)庫中保存的數(shù)據(jù)外,還可以進(jìn)行計算。例如,計算一個 字段值的總和或平均值,對兩個字段進(jìn)行算術(shù)運(yùn)算。查詢中有常規(guī)計算和自定義計 算兩種基本計算。 1.常規(guī)計算 常規(guī)計算是指利用現(xiàn)有字段,對記錄組進(jìn)行統(tǒng)計或匯總,包括求和、求平均值、 記錄數(shù)、最小值、最大值等。 2.自定義計算 自定義計算就是使用一個或多個字段中的數(shù)據(jù)在進(jìn)行計算,并使用一個
41、新創(chuàng)建 的字段顯示出來。 4.6.2 總計查詢 1.總計查詢的創(chuàng)建 Access的某些特定功能,如分組、求和、求平均值等,在查詢設(shè)計器中是無 法直接使用的。必須單擊查詢設(shè)計工具欄上的 【 (總計) 】 按鈕,通過 Access系統(tǒng)在查詢設(shè)計器下部設(shè)計網(wǎng)格中插入的一個“總計”行進(jìn)行計算。 在查詢設(shè)計器中的 【 總計 】 欄目中,可以為某個字段指定一個用于總計計算 的匯總函數(shù),包括“總和”、“平均值”、“計數(shù)”、“最大值”、“最小 值”、“標(biāo)準(zhǔn)偏差”、“方差”等。 【 例 4 11】 統(tǒng)計所有圖書的平均價格。 第一步:打開查詢設(shè)計器,將目標(biāo)表“圖書”添加到查詢中。 第二步:將涉及到的“ jiage
42、”字段添加到窗體下方的“字段”欄目中。 第三步:單擊查詢設(shè)計工具欄上的按鈕,系統(tǒng)會在在查詢設(shè)計器下半部的設(shè) 計網(wǎng)格中插入一個“總計”行。 第四步:題目要求統(tǒng)計所有圖書的平均價格,先將“ jiage”字段添加到下方的欄 目中,然后單擊“ jiage”字段的“總計”欄目,并在下拉列表中選擇平均值“平 均值”,如圖 4 26所示。 圖 4 26總計查詢設(shè)計視圖 圖 4 27 總計查詢結(jié)果 第六步:設(shè)置結(jié)束,保存退出。運(yùn)行可得到查詢結(jié)果,如圖 4 27所示。 在總計查詢中,因為計算字段是根據(jù)原有字段計算或統(tǒng)計得來,所以沒有自己的字 段名稱,如圖 4 27所示,得到的平均價格系統(tǒng)默認(rèn)生成的名稱為“ ji
43、age之 Avg”。 生成的名稱說明了字段的來源,但是不美觀,所以通常在總計查詢中對新字段重新 命名。如果不想使用 Access自動命名的字段標(biāo)題,可以用以下兩種方法指定查詢 中某個字段的標(biāo)題。 1)在設(shè)計視圖中,在計算字段的“字段”欄目中自己命名新字段。方法是在該字 段名稱前自己輸入一個新名稱,并用英文冒號隔開。例如上題的“ jiage”字段改成 “平均價格 :jiage”。 這樣,在顯示結(jié)果的時候,該字段不會使用系統(tǒng)默認(rèn)名稱,而使用“平均價格”。 2)單擊要指定標(biāo)題的字段欄任意位置,選擇快捷菜單中的 【 屬性 】 命令,彈出 “字段屬性”對話框,在其中的“標(biāo)題”屬性欄中輸入自定義的字段標(biāo)題
44、,如圖 4 28所示。 圖 4 28新字段字段屬性窗體 2.總計統(tǒng)計的分類 “總計”欄目中包含 12個選項,其中 9個為匯總函數(shù),其他為非函數(shù)選項。 1)匯總函數(shù) 用于創(chuàng)建總計字段的匯總函數(shù)如表 4 3所示。 表 4 3 查詢使用的匯總函數(shù) 英文名 含義 適用的數(shù)據(jù)類型 Sum 總計 數(shù)值、日期 /時間、貨幣、自動編號 Avg 平均值 數(shù)值、日期 /時間、貨幣、自動編號 Min 最小值 文本、日期 /時間、貨幣、自動編號 Max 最大值 文本、數(shù)值、日期 /時間、貨幣、自動編號 Count 計數(shù) 文本、備注、數(shù)值、日期 /時間、貨幣、自動編號、 是 /否、 OLE對象 StDev 標(biāo)準(zhǔn)差 數(shù)值
45、、日期 /時間、貨幣、自動編號 Var 方差 數(shù)值、日期 /時間、貨幣、自動編號 First 第一條記錄 所有類型 Last 最后一條記錄 所有類型 其中,“計數(shù)”函數(shù)用于統(tǒng)計記錄的個數(shù),也就是行數(shù)。對于空白值也統(tǒng)計在內(nèi), 但空值不進(jìn)行統(tǒng)計。 2)非函數(shù)選項 分組( Group By) 分組字段。 表達(dá)式( Expression) 創(chuàng)建表達(dá)式包含總計函數(shù)的計算字段。通常,在表達(dá)式中使用多個函數(shù)時,將創(chuàng) 建計算字段。 條件( Where) 指定不用于分組的字段準(zhǔn)則。如果選擇了這一項 Access將清除“顯示”復(fù)選框, 隱藏查詢結(jié)果中的這個字段。 4.6.3 分組總計查詢 分組總計查詢是指在統(tǒng)計計
46、算之前,先將數(shù)據(jù)按照要求進(jìn)行分組,對分組 后的數(shù)據(jù)進(jìn)行計算統(tǒng)計。 【 例 4 12】 創(chuàng)建一個具有分類統(tǒng)計功能的查詢。查詢各個出版社圖書的平均價格, 顯示出版社的名稱和平均價格。 第一步:打開查詢設(shè)計器,將目標(biāo)表“圖書”添加到查詢中。 第二步:將涉及到的“ cbs”和“ jiage”字段添加到窗體下方的“字段”欄目中。 第三步:單擊查詢設(shè)計工具欄上的 【 (總計) 】 按鈕,進(jìn)入總計查詢狀態(tài)。 第四步:題目要求按照出版社統(tǒng)計平均價格,也就是按出版社分組,所以單擊“ cbs” 字段的“總計”欄目,并在下拉列表中選擇分組“分組”。 第五步:題目要求按出版社統(tǒng)計平均價格,所以單擊“ jiage”字段
47、的“總計”欄目, 并在下拉列表中選擇“平均值”,如圖 4 29所示。 圖 4 29 總計查詢設(shè)計視圖 第六步:設(shè)置結(jié)束,保存退出。運(yùn)行可得到查詢結(jié)果。 4.6.4 添加計算字段 在設(shè)計表時,一些可以通過其他字段計算或統(tǒng)計得到的字段是不會直接作為字 段保存在表中的,如果需要這些字段的值,則可以在查詢設(shè)計設(shè)器中通過添加計算 字段來實現(xiàn)。這樣可以節(jié)省存儲空間,減少系統(tǒng)維護(hù)表格的代價。利用新計算字段, 可以用一個或多個字段的值進(jìn)行數(shù)值、日期及文本等各種計算。 計算字段是對表或查詢中的數(shù)值型字段進(jìn)行橫向計算產(chǎn)生結(jié)果的字段,是在查 詢中自定義的字段。創(chuàng)建計算字段的方法是將表達(dá)式直接輸入到查詢設(shè)計網(wǎng)格中的
48、【 字段 】 格中。格式為: 新字段名稱:字段計算表達(dá)式 【 例 4 13】 創(chuàng)建一個具有計算字段的查詢。假設(shè)圖書的每頁有 1000字,查詢每本 圖書的圖書名和大致字?jǐn)?shù)。 使用“圖書”表中的 “ ys” 字段乘上 1000,即可以計算出圖書的大致字?jǐn)?shù)。新 字段的表達(dá)式應(yīng)該是:“字?jǐn)?shù) : ys*1000”。 圖 4 30 新字段設(shè)定 表達(dá)式填寫在一個空白的“字段”欄目中,如圖 4 30所示。注 意,表達(dá)式中的冒號為半角符號。 創(chuàng)建結(jié)束后,運(yùn)行查詢便可以看見新字段。 4.7 SQL查詢 4.7.1 SELECT語句簡介 SQL( Structured Query Language)語言是一種被關(guān)系
49、數(shù)據(jù)庫產(chǎn)品廣泛 使用的標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言。結(jié)構(gòu)化查詢語言是一種介于關(guān)系代數(shù)與關(guān)系演算 之間的語言,其功能包括查詢、操縱、定義和控制四個方面,是一個通用的、 功能極強(qiáng)的關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言。目前, SQL語言已經(jīng)被確定為關(guān)系數(shù)據(jù)庫系 統(tǒng)的國際標(biāo)準(zhǔn),被絕大多數(shù)商品化的關(guān)系數(shù)據(jù)庫系統(tǒng)采用,受到用戶的普遍接 受。 SQL語言可以對數(shù)據(jù)庫進(jìn)行多種操作,例如定義、查詢等等,其中數(shù)據(jù)查 詢是數(shù)據(jù)庫的核心操作,其功能是指根據(jù)用戶的需要以一種可讀的方式從數(shù)據(jù) 庫中提取所需數(shù)據(jù),由 SQL的數(shù)據(jù)操縱語言的 SELECT語句實現(xiàn)。 SELECT語 句是 SQL中用途最廣泛的一條語句,具有靈活的使用方式和豐富的功能。
50、4.7.2 查詢語句的格式 一個完整的 SELECT語句包括 SELECT、 FROM、 WHERE、 GROUP BY和 ORDER BY子句。它具有數(shù)據(jù)查詢、統(tǒng)計、分組和排序的功能。它的語法及各子句 的功能如下。 SELECT ALL DISTINCT目標(biāo)列表達(dá)式, n FROM表名或視圖名,表名或視圖名 n WHERE條件表達(dá)式 GROUP BY 列名 l HAVING 條件表達(dá)式 ORDER BY 列名 2 ASC DESC; 從指定的基本表或視圖中,選擇滿足條件的元組數(shù)據(jù),并對它們進(jìn)行分組、統(tǒng)計、 排序和投影,形成查詢結(jié)果集。 1)各子句的說明 ( 1)其中 SELECT和 FROM
51、語句為必選子句,而其他子句為任選子句; ( 2) SELECT子句 該子句用于指明查詢結(jié)果集的目標(biāo)列,目標(biāo)列表達(dá)式 是指查詢結(jié)果集中包 含的列名,可以是直接從基本表或視圖中投影得到的字段,或是與字段相關(guān)的表達(dá)式 或數(shù)據(jù)統(tǒng)計的函數(shù)表達(dá)式,目標(biāo)列還可以是常量。 DISTINCT說明要去掉重復(fù)的元組, ALL表示所有滿足條件的元組。省略目標(biāo)列表達(dá)式表示結(jié)果集中包含表名或視 圖名中的所有列,此時目標(biāo)列表達(dá)式可以使用 *代替。 如果目標(biāo)列中使用了兩個基本表或與視圖中相同的列名,要在列名前加表名限 定,即使用“表名 .列名”表示。 ( 3) FROM子句 該子句用于指明要查詢的數(shù)據(jù)來自哪些基本表。查詢操作
52、需要的基本表名之間 用“,”分割。 ( 4) WHERE子句 該子句通過條件表達(dá)式描述對基本表或視圖中元組的選擇條件。該語句執(zhí)行時, 以元組為單位,逐個考察每個元組是否滿足 WHERE子句中給出的條件,將不滿足 條件的元組篩選掉,所以 WHERE子句中的表達(dá)式也稱為元組的過濾條件。 ( 5) GROUP BY子句 該子句的作用是將結(jié)果集按列名 1的值進(jìn)行分組,即將該列值相等的元組分 為一組,每個組產(chǎn)生結(jié)果集中的一個元組,可以實現(xiàn)數(shù)據(jù)的分組統(tǒng)計。當(dāng) SELECT 子句后的目標(biāo)列表達(dá)式中有統(tǒng)計函數(shù),且查詢語句中有分組子句時,則統(tǒng)計為 分組統(tǒng)計,否則為對整個結(jié)果集進(jìn)行統(tǒng)計。 GROUP BY子句后可
53、以使用 HAVING條件表達(dá)式短語,它用來限定分組必 須滿足的條件。 HAVING必須跟隨 GROUP BY子句使用。 ( 6) ORDER BY子句 該子句的作用是對結(jié)果集按列名 2的值的升序( ASC)或降序( DESC)進(jìn) 行排序。查詢結(jié)果集可以按多個排序列進(jìn)行排序,根據(jù)各排序列的重要性從左向右 列出。 2) SELECT語句的執(zhí)行過程 根據(jù) WHERE子句的條件表達(dá)式,從 FROM子句指定的基本表或視圖中 找出滿足條件的元組,再按 SELECT子句中的目標(biāo)列表達(dá)式,選出元組中的 列值形成結(jié)果集。如果有 GROUP子句,則將結(jié)果集按列名 l的值進(jìn)行分 組,該屬性列值相等的元組為一個組,每
54、個組產(chǎn)生結(jié)果集中的一個元組。如 果 GROUP BY子句后帶 HAVING短語,則只有滿足指定條件的組才予以輸出。 如果有 ORDER BY子句,則結(jié)果集還要按列名 2的值的升序或降序排序。 SQL語言的所有查詢都是利用 SELECT語句完成的,它對數(shù)據(jù)庫的操作 十分方便靈活,原因在于 SELECT語句中的成分豐富多彩,有許多可選形式, 尤其是目標(biāo)列和條件表達(dá)式。下面以學(xué)生管理數(shù)據(jù)庫為例,分別介紹使用 SELECT語句進(jìn)行單表查詢、連接查詢、嵌套查詢和組合查詢。 4.7.3 SQL查詢窗體 在 Access數(shù)據(jù)庫系統(tǒng)中,執(zhí)行任何 SQL語句都是在查詢的設(shè)計窗體內(nèi)完成。 首先進(jìn)入查詢分析器,關(guān)閉
55、用來添加表的 【 顯示表 】 窗體。然后通過工具欄左端 的 【 (SQL視圖 )】 按鈕或者是視圖菜單中的 【 SQL視圖 】 命令,將編輯窗體切換 到 SQL視圖,如圖 4 32所示。 4.7.4 單表查詢 單表查詢指在查詢過程中只涉及一個表的查詢語句。單表查詢是最基本的查 詢語句。 【 例 4 14】 查詢清華大學(xué)出版社圖書的資料。 具體操作方法: 第一步:打開數(shù)據(jù)庫 tushu主窗口,單擊“對象”列表中的“查詢”,單擊工具 欄上的 【 新建 】 ,選擇“設(shè)計視圖”,單擊 【 確定 】 按鈕。 第二步:關(guān)閉“顯示表”對話框,選擇菜單欄 【 視圖 】 |【 SQL 視圖 】 ,如圖 4 31
56、所示 圖 4 31 SQL菜單 圖 4 32 選擇查詢 SQL輸入窗口 第三步:在圖 4 32所示的窗口中輸入如下命令: Select * From 圖書 Where cbs=“清華大學(xué)出版社” 切換到設(shè)計視圖,可以看到“字段”中增加一了個“ cbs”,“表”中為“圖書”, 條件為“清華大學(xué)出版社”,如圖 4 33所示。 圖 4 33 設(shè)計視圖選擇查詢 第四步:保存查詢,查看查詢結(jié)果。 提示: 例中的 from語句用于設(shè)置查詢的數(shù)據(jù)源來,而 where語句用于設(shè)置顯示字段 的條件。 【 例 4 15】 在圖書表中查詢價格在 20 50(包括 20與 50)之間的圖書的書名和 出版社。 操作步驟
57、: 前兩步同 【 例 4 15】 ,第三步,在 SQL窗口中輸入如下命令: Select tsm, cbs From 圖書 Where jiage between 20 and 50 4.7.5 多表查詢 在一個數(shù)據(jù)庫中多個基本表之間一般都存在著某種內(nèi)在的聯(lián)系,它們?yōu)橛脩艄餐峁?相應(yīng)的信息。因此在對數(shù)據(jù)庫的一個查詢中經(jīng)常需要同時涉及多個基本表中的相關(guān)內(nèi) 容。把這種在一個查詢中同時涉及兩個以上的基本表的查詢稱為連接查詢,實際上它 是數(shù)據(jù)庫最主要的查詢功能 1)條件連接查詢的一般格式: 當(dāng)一個查詢涉及到數(shù)據(jù)庫的多個基本表時,必須要按照一定的條 件將這些表連接在一起,以便共同為用戶提供相應(yīng)信息。用
58、來連接兩 個基本表的條件稱為連接條件或連接謂詞,一般格式為: Select From Where 表名 l列名 l =表名 2列名 2 連接條件中的列名稱為連接字段。連接條件中,連接字段類型必 須是可比的,但名稱不一定是相同的。 條件通過 WHERE子句表達(dá)。在 WHERE子句中,有時既有連接 條件又有元組選擇條件,這時它們之間用 AND(與)操作符銜接。 【 例 4 16】 查詢有借還記錄的每個讀者的姓名、借還記錄情況。 (學(xué)生信息表中的“ xh”字段與借還記錄表中的“ jszh”相對應(yīng) ) 前兩步同 【 例 4 14】 ,第三步,在 SQL窗口中輸入如下命令: Select 學(xué)生信息 .x
59、m , 借還記錄 .* From 學(xué)生信息,借還記錄 Where 學(xué)生信息 .xh=借還記錄 .jszh; 運(yùn)行結(jié)果如下圖 4 34所示。 圖 4 34 例 4 16的查詢結(jié)果 在“設(shè)計視圖”下看的效果如圖 4 35所示。 圖 4 35 例 4 16在設(shè)計視圖下的效果 如果在 where語句中,既有連接條件又有查詢條件,一定要首先書寫連接條件。 例如:查詢借閱了定價大于 50元圖書的讀者信息。 Select 讀者 .* From 讀者,借還記錄,圖書 Where讀者 .jszh=選課 .jszh and 圖書 .tsgtm=借還記錄 .txm and 圖 書 .jiage50 2)通過 JOI
60、N連接查詢的格式: 聯(lián)接格式為: Select From Inner Join | Left Join | Right Join On .=. INNER JOIN 表示內(nèi)部聯(lián)接,即查詢結(jié)果中只包含兩個表中聯(lián)接字段值相等 的記錄。 LEFT JOIN表示左外部聯(lián)接,即查詢結(jié)果中包含 JOIN關(guān)鍵字左邊表中的所 有記錄,如果右邊表中有符合聯(lián)接條件的記錄,則該表返回相應(yīng)值,否則返回空值。 RIGHT JOIN表示右外部聯(lián)接,即查詢結(jié)果返回包含 JOIN關(guān)鍵字右邊表中的 所有記錄,如果左邊表中有符合條件的記錄,則該表返回相應(yīng)值,否則返回空值。 【 例 4 17】 查詢學(xué)生的班級名,姓名,學(xué)生。 前兩
61、步同 【 例 4 14】 ,第三步,在 SQL窗口中輸入如下命令: SELECT 班級 .bjmc, 學(xué)生信息 .xm, 學(xué)生信息 .xh FROM 班級 INNER JOIN 學(xué)生信息 ON 班級 .bjdm = 學(xué)生信息 .bjdm; 圖 4 36 例 4 17運(yùn)行結(jié)果 運(yùn)行結(jié)果如下圖 4 36所示。 選擇菜單欄 【 視圖 】 下的 【 設(shè)計視圖 】 ,得到如圖 4 37所示查詢。 圖 4 37 例 4。 37在設(shè)計視圖下的效果 雙擊兩表之間的“關(guān)聯(lián)線”,或選擇兩表之間的“關(guān)聯(lián)線”單擊右鍵,彈出如圖 4 38所示的兩表聯(lián)接屬性對話框。 圖 4 38 例 4 37兩表聯(lián)接屬性對話框 班級和學(xué)
62、生信息兩表中聯(lián)接字段“ bjdm”相等的記錄全部在查詢結(jié)果中出現(xiàn)。 如果使用左外部聯(lián)接,應(yīng)輸入如下 SQL語句: SELECT 班級 .bjmc, 學(xué)生信息 .xm, 學(xué)生信息 .xh FROM 班級 LEFT JOIN 學(xué)生信息 ON 班級 .bjdm = 學(xué)生信息 .bjdm; 其查詢結(jié)果包括“班級”表中的所有記錄和“學(xué)生信息”表中聯(lián)接字段相等 的那些記錄。其聯(lián)接屬性為圖 4 38中的第二個選項。 如果使用右外部聯(lián)接,應(yīng)輸入如下 SQL語句: SELECT 班級 .bjmc, 學(xué)生信息 .xm, 學(xué)生信息 .xh FROM 班級 RIGHT JOIN 學(xué)生信息 ON 班級 .bjdm =
63、學(xué)生信息 .bjdm; 其查詢結(jié)果包括“學(xué)生信息”中的所有記錄和“班級”中聯(lián)接字段相等的那 些記錄。其聯(lián)接屬性為圖 4 38中的第三個選項。 4.7.6 函數(shù)查詢 函數(shù)查詢也稱聚集查詢或統(tǒng)計查詢。函數(shù)查詢就是把基本表中的某一列的值經(jīng) 過函數(shù)運(yùn)算得到一個單一值的過程。在數(shù)據(jù)庫很多應(yīng)用,并不是只要求能將基本表 中的元組原樣取出,而是要在原有數(shù)據(jù)的基礎(chǔ)上,能夠通過計算,輸出統(tǒng)計結(jié)果。 SQL提供了許多統(tǒng)計函數(shù),通過它們可以進(jìn)行綜合信息的統(tǒng)計。 函數(shù)可作為列標(biāo)識符出現(xiàn)在 SELECT子句的目標(biāo)列或 HAVING子句的條件中。 在 SQL查詢語句中,如果有 GROUP BY分組子句,則語句中的函數(shù)為分組
64、統(tǒng)計函數(shù); 如果沒有 GROUP BY分組子句,則語句中的函數(shù)為全部結(jié)果集的統(tǒng)計函數(shù)?;镜?SQL函數(shù)及功能見表 4 4。其中如果指定 DISTINCT短語,則表示在計算時要取消 指定列中的重復(fù)值。如果不指定 DISTINCT短語和 ALL短語,則取默認(rèn)值 ALL,表示 不取消重復(fù)值 表 4 4基本 SQL函數(shù) 函數(shù) 功能 COUNT( DISTINCT ALL *) COUNT( DISTINCT ALL列名 ) SUM( DISTINCT ALL列名) AVG( DISTINCT ALL列名) MAX( DISTINCT ALL列名) MIN( DISTINCT ALL列名) 統(tǒng)計元組個
65、數(shù) 計算一列中值的個數(shù) 計算一列值的總和(此列必須是數(shù)值型 ) 計算一列值的平均值(此列必須是數(shù)值 型) 求一列值中的最大值 求一列值中的最小值 【 例 4 18】 統(tǒng)計“讀者”表中讀者數(shù)量。 使用語句為: Select count( *) from 讀者 【 例 4 18】 統(tǒng)計“讀者”表中各班級的讀者數(shù)量。 需要對讀者按班級分組進(jìn)行統(tǒng)計,使用語句為: Select count(*) from 讀者 group by bjdm 【 例 4 19 】 統(tǒng)計借閱過圖書的讀者人數(shù)。 可以通過對借還記錄表中的“借書證號”進(jìn)行不重復(fù)計數(shù)統(tǒng)計,使用語句為: Select count( distinct jszh) From 借還記錄 實例:求各個類別讀者的人數(shù)。使用語句如下所示, Select jszh, count( *) From 讀者 Group by dzlb; 本章小結(jié) 通過本章的學(xué)習(xí) , 學(xué)會各種查詢的創(chuàng)建及使用方法 , 例如選擇查詢 、 參數(shù)查詢和總計查詢等;學(xué)會 SQL查詢 語句的基本格式 , 并可以用過 Access中的工具進(jìn)行 SQL 查詢 。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩