版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第四章查詢第四章查詢【本章主要掌握內(nèi)容】查詢的基本概念查詢的功能與分類查詢的創(chuàng)建與設(shè)計SQL查詢【本章主要掌握內(nèi)容】第一節(jié)查詢的概述第一節(jié)
在設(shè)計數(shù)據(jù)庫時,常常把數(shù)據(jù)分類,并分別存放在多個表中,但在使用時需要檢索一個或多個表中符合條件的數(shù)據(jù)。查詢實際上就是將這些分散的數(shù)據(jù)再集中起來。xhxmxb1001張三男………………xhkcdhcj10010185………………kcdhkcmc01數(shù)據(jù)庫應(yīng)用…………學(xué)生表成績表課程表xmkcmccj張三數(shù)據(jù)庫應(yīng)用85………………查詢結(jié)果在設(shè)計數(shù)據(jù)庫時,常常把數(shù)據(jù)分類,并分別存放在多個表中一、查詢的概念查詢是根據(jù)一定的條件,從一個或多個表中提取數(shù)據(jù)并進行加工處理,返回一個新的數(shù)據(jù)集合。利用查詢可以實現(xiàn)數(shù)據(jù)的統(tǒng)計分析與計算等操作。查詢結(jié)果可以作為其他查詢、窗體、報表的數(shù)據(jù)源。查詢是一張“虛表”,是動態(tài)的數(shù)據(jù)集合。一、查詢的概念查詢主要有以下幾個方面的功能1)選擇字段和記錄選擇字段:在查詢的結(jié)果中可以只含有表中的部分字段。查詢主要有以下幾個方面的功能選擇記錄:在查詢的結(jié)果中,只含有符合指定條件的記錄。2)編輯記錄即利用查詢添加、修改和刪除表中的記錄。3)統(tǒng)計和計算即在查詢中進行各種統(tǒng)計計算,也可以建立一個計算字段來保存計算的結(jié)果。4)建立新表利用查詢的結(jié)果創(chuàng)建一個新表。5)為其他數(shù)據(jù)庫對象提供數(shù)據(jù)源即以查詢的結(jié)果作為查詢、窗體或報表的數(shù)據(jù)源。選擇記錄:在查詢的結(jié)果中,只含有符合指定條件的記錄。2)編輯二、查詢的種類在Access2010中,可以創(chuàng)建5種類型的查詢:1、選擇查詢是根據(jù)指定的條件,從一個或多個表中獲取數(shù)據(jù)并顯示結(jié)果。選擇查詢可以對記錄進行分組,并且對分組的記錄進行求和、計數(shù)、求平均值以及其它類型的計算。選擇查詢產(chǎn)生的結(jié)果是一個動態(tài)的記錄集,不會改變源數(shù)據(jù)表中的數(shù)據(jù)。二、查詢的種類2、交叉表查詢交叉表查詢是對基表或查詢中的數(shù)據(jù)進行計算和重構(gòu),以方便分析數(shù)據(jù)。能夠匯總數(shù)字型字段的值,將匯總計算的結(jié)果顯示在行與列交叉的單元格中。2、交叉表查詢3、參數(shù)查詢是一種特殊的選擇查詢,即根據(jù)用戶輸入的參數(shù)作為查詢的條件。輸入不同的參數(shù),將得到不同的結(jié)果。執(zhí)行參數(shù)查詢時,將會顯示一個對話框,以提示輸入?yún)?shù)信息。參數(shù)查詢可作為窗體和報表的基礎(chǔ)。3、參數(shù)查詢4、操作查詢查詢除了按指定的條件從數(shù)據(jù)源中檢索記錄外,還可以對檢索的記錄進行編輯操作。操作查詢可以分為:刪除查詢從一個或多個表中刪除一組符合條件的記錄。更新查詢對一個或多個表中的一組符合條件的記錄進行批量修改某字段的值。4、操作查詢追加查詢將一個或多個表中的一組符合條件的記錄添加到另一個表的末尾。生成表查詢將查詢的結(jié)果轉(zhuǎn)存為新表。追加查詢5、SQL查詢SQL(StructuredQueryLanguage)是一種結(jié)構(gòu)化查詢語言,是數(shù)據(jù)庫操作的工業(yè)化標準語言,使用SQL語言可以對任何數(shù)據(jù)庫管理系統(tǒng)進行操作。所謂的SQL查詢就是通過SQL語言來創(chuàng)建的查詢。在查詢設(shè)計視圖中創(chuàng)建任何一個查詢時,系統(tǒng)都將在后臺構(gòu)建等效的SQL語句。大多數(shù)查詢功能也都可以直接使用SQL語句來實現(xiàn)。有一些無法在查詢設(shè)計視圖中創(chuàng)建的SQL查詢稱為“SQL特定查詢”。5、SQL查詢SQL特定查詢包括:聯(lián)合查詢
聯(lián)合查詢是將多個表或查詢中的字段合并到查詢結(jié)果的一個字段中。
使用聯(lián)合查詢可以合并多個表中的數(shù)據(jù),并可以根據(jù)聯(lián)合查詢生成一個新表。傳遞查詢
傳遞查詢可以直接將命令發(fā)送到ODBC數(shù)據(jù)庫服務(wù)器中,而不需要事先建立鏈接。
利用傳遞查詢可以直接使用其它數(shù)據(jù)庫管理系統(tǒng)中的表。P154SQL特定查詢包括:P154數(shù)據(jù)定義查詢利用數(shù)據(jù)定義查詢可以創(chuàng)建、刪除或更改表,或者在數(shù)據(jù)庫表中創(chuàng)建索引。子查詢是包含在另一個查詢之內(nèi)的SQL-SELECT語句,即嵌套在查詢中的查詢。數(shù)據(jù)定義查詢幾點說明:創(chuàng)建傳遞查詢、數(shù)據(jù)定義查詢和聯(lián)合查詢不能在設(shè)計視圖中創(chuàng)建,必須直接在SQL視圖中輸入相應(yīng)的SQL語句。創(chuàng)建子查詢可以直接在SQL視圖中輸入相應(yīng)的SQL語句,或在設(shè)計視圖的【字段】或【條件】行中輸入SQL語句,即將子查詢作為查詢的條件。幾點說明:選擇查詢參數(shù)查詢交叉表查詢操作查詢
SQL查詢查詢類型☆刪除查詢 ☆更新查詢☆追加查詢☆生成表查詢☆聯(lián)合查詢 ☆傳遞查詢☆數(shù)據(jù)定義查詢☆子查詢選擇查詢查詢類型☆刪除查詢 ☆聯(lián)合查詢 三、查詢視圖
查詢有5種視圖,分別是:
設(shè)計視圖
數(shù)據(jù)表視圖
SQL視圖
數(shù)據(jù)透視表視圖
數(shù)據(jù)透視圖視圖三、查詢視圖設(shè)計視圖
即為查詢設(shè)計器,通過該視圖可能創(chuàng)建除SQL之外的各種類型的查詢。數(shù)據(jù)表視圖
是查詢的數(shù)據(jù)瀏覽器,用于查看查詢運行的結(jié)果。SQL視圖
是查看和編輯SQL語句的窗口,用于查看和編輯用查詢設(shè)計器創(chuàng)建的查詢所產(chǎn)生的SQL語句。數(shù)據(jù)透視表視圖和數(shù)據(jù)圖視圖
在此兩種視圖中,可以根據(jù)需要生成數(shù)據(jù)透視表或數(shù)據(jù)透視圖,從而得到直觀的數(shù)據(jù)分析結(jié)果。設(shè)計視圖四、創(chuàng)建查詢的方法(界面方法)創(chuàng)建查詢(界面方法)有2種方法:
使用查詢設(shè)計視圖創(chuàng)建查詢
使用查詢向?qū)?chuàng)建查詢四、創(chuàng)建查詢的方法(界面方法)1、使用查詢設(shè)計視圖創(chuàng)建查詢
使用查詢設(shè)計視圖創(chuàng)建查詢首先要打開查詢的設(shè)計視圖窗口,然后根據(jù)需要進行查詢的定義。★操作步驟:①打開數(shù)據(jù)庫②在【創(chuàng)建】選項卡的【查詢】組中單擊【查詢設(shè)計】按鈕,打開查詢設(shè)計器窗口③在查詢設(shè)計器窗口中定義查詢④保存查詢1、使用查詢設(shè)計視圖創(chuàng)建查詢
查詢的設(shè)計視圖分為上下兩部分:上半部分用于顯示查詢的數(shù)據(jù)源(包括它們之間的關(guān)系)下半部分是定義查詢的表格,表格的列對應(yīng)查詢中的一個字段;行對應(yīng)字段的屬性或要求?!钭侄?查詢結(jié)果中所顯示的字段☆表
查詢數(shù)據(jù)源,即字段的來源☆排序 查詢結(jié)果中相應(yīng)字段的排序方式☆顯示 設(shè)置在數(shù)據(jù)表視圖中是否顯示該字段☆條件
查詢條件(同行之間為“與”關(guān)系)☆或
查詢條件(不同行之間為“或”關(guān)系)查詢的設(shè)計視圖分為上下兩部分:2、使用查詢向?qū)?chuàng)建查詢Access2010提供了4種類型的查詢向?qū)В?/p>
簡單查詢向?qū)?/p>
交叉表查詢向?qū)?/p>
查找重復(fù)項查詢向?qū)?/p>
查找不匹配項查詢向?qū)?、使用查詢向?qū)?chuàng)建查詢使用查詢向?qū)?chuàng)建查詢幾點說明:
不能對記錄進行篩選和排序
不能改變查詢中字段的順序
允許對數(shù)值字段進行匯總統(tǒng)計
允許按指定日期范圍分組匯總
匯總查詢必須包含且只能包含匯總統(tǒng)計的數(shù)值型字段和用于匯總依據(jù)的分組字段。其它字段的添加將無法得到期望的匯總效果使用查詢向?qū)?chuàng)建查詢幾點說明:匯總查詢必須包含且只能五、運行查詢
查詢創(chuàng)建完成后,將保存于數(shù)據(jù)庫中。運行查詢后,才能看到查詢的結(jié)果。通過以下方法之一,可以運行查詢:
▲在查詢的設(shè)計視圖下,單擊【查詢工具/設(shè)計】選項卡【結(jié)果】組中的【運行】按鈕
▲在查詢的設(shè)計視圖下,單擊【查詢工具/設(shè)計】選項卡【結(jié)果】組中的【視圖】按鈕
▲右擊查詢的設(shè)計視圖標題欄,并在快捷菜單中選擇【數(shù)據(jù)表視圖】命令
▲雙擊導(dǎo)航窗口中要運行的查詢
▲右擊導(dǎo)航窗口中要運行的查詢,并在快捷菜單中選擇【打開】命令五、運行查詢第二節(jié)選擇查詢第二節(jié)
選擇查詢是最常用的查詢類型,它是根據(jù)用戶所指定的查詢條件,從一個或多個數(shù)據(jù)源表中獲取數(shù)據(jù)并顯示結(jié)果。
選擇查詢可以對記錄進行分組,并進行各種統(tǒng)計,如:求和、計數(shù)、求平均值等。
選擇查詢產(chǎn)生的結(jié)果是一個動態(tài)的記錄集,不會改變數(shù)據(jù)源中的數(shù)據(jù)。選擇查詢是最常用的查詢類型,它是根據(jù)用戶所指定的查詢一、基于單數(shù)據(jù)源表的查詢
設(shè)計單數(shù)據(jù)源表查詢時,主要的操作是:
確定查詢的數(shù)據(jù)源(表或已建立的查詢)
確定查詢中要顯示的字段或表達式一、基于單數(shù)據(jù)源表的查詢
如果查詢的數(shù)據(jù)源是兩個或兩個以上的表(或查詢),則在設(shè)計查詢時需要創(chuàng)建數(shù)據(jù)源之間的連接關(guān)系。
如果相關(guān)聯(lián)的表已經(jīng)按照公共字段創(chuàng)建了索引,則在查詢視圖中可以看到作為數(shù)據(jù)源的表(或查詢)之間已經(jīng)通過相關(guān)字段建立了連接。
如果相關(guān)聯(lián)的表未按照公共字段創(chuàng)建索引,則需要在相關(guān)表之間建立連接。二、基于多數(shù)據(jù)源表的查詢?nèi)绻樵兊臄?shù)據(jù)源是兩個或兩個以上的表(或查詢),則在
Access有3種連接類型:
內(nèi)連接
左連接
右連接Access有3種連接類型:內(nèi)連接(INNERJOIN)
只包含來自兩張表的聯(lián)接字段相等的記錄。Xs.xh=Cj.xh內(nèi)連接(INNERJOIN)Xs.xh=Cj.xh左連接(LEFTJOIN)
包括左表中所有記錄和右表中聯(lián)接字段相等的記錄。Xs.xh=Cj.xh左連接(LEFTJOIN)Xs.xh=Cj.xh右連接包括右表中所有記錄和左表中聯(lián)接字段相等的記錄。Xs.xh=Cj.xh右連接Xs.xh=Cj.xh注意:如果進行多表查詢時,所使用的表或查詢之間沒有建立連接關(guān)系,則查詢將以笛卡爾積的形式,即左表中的每一條記錄均與右表所有記錄合并,形成一條記錄。也就是說,會在查詢結(jié)果中產(chǎn)生大量的數(shù)據(jù),而這樣的結(jié)果是沒有任何意義的。注意:雙擊表的關(guān)系連線可以編輯表之間的聯(lián)接屬性,包括:聯(lián)接的字段和連接的類型。內(nèi)連接左連接右連接雙擊表的關(guān)系連線可以編輯表之間的聯(lián)接屬性,包括:聯(lián)接三、條件查詢
在實際的查詢中,經(jīng)常需要查詢滿足某個條件的記錄。帶條件的查詢需要通過設(shè)置查詢條件來實現(xiàn)。查詢條件是運算符、常量、字段值、函數(shù)以及字段名和屬性等任意組合的關(guān)系表達式,其運算結(jié)果是一個邏輯值。三、條件查詢(1)運算符算術(shù)運算符【例】125+100/5^26*2/(2+1)
單價*0.8算術(shù)運算符說明算術(shù)運算符說明+加/除-減^乘方*乘(1)運算符【例】算術(shù)運算符說明算術(shù)運算符說關(guān)系運算符關(guān)系運算符說明關(guān)系運算符說明=等于<>不等于<小于<=小于等于>大于>=大于等于☆關(guān)系運算符主要用于數(shù)據(jù)之間的比較,其運算的結(jié)果是一個邏輯值:True或False?!罡麝P(guān)系運算符的運算級別相同?!纠?>8 xb="男"5+2<=5*2 xm>="張"
工作日期<出生日期P117關(guān)系運算符關(guān)系運算符說明關(guān)系運算符說明=等邏輯運算符邏輯運算符說明Not當(dāng)Not連接的表達式為真時,整個表達式的值為假And當(dāng)And連接的表達式均為真時,整個表達式的值為真,否則為假Or當(dāng)Or連接的表達式均為假時,整個表達式的值為假,否則為真☆邏輯運算符主要用于多個條件的判斷,其運算結(jié)果仍然是一個邏輯值?!钸壿嬤\算符運算級別依次為:Not、And、Or邏輯運算符邏輯運算符說明Not當(dāng)Not
邏輯運算符的真值表如下所示:XYNotXXAndYXOrYTrueTrueTrueFalseFalseTrueFalseFalseFalseTrueTrueFalseFalseTrueTrueFalseTrueTrueFalseFalse邏輯運算符的真值表如下所示:XYNotXX特殊運算符特殊運算符與比較運算相關(guān),也是根據(jù)是否符合運算符的限定條件返回邏輯值True或False。特殊運算符說明In用于指定一個字段值的列表,列表中的任意一個值都可與查詢的字段相匹配Between用于指定一個字段值的范圍。指定的范圍之間用And連接Like用于指定查找文本字段的字符模式。在所定義的字符模式中,可以使用統(tǒng)配符“?”、“*”、“#”、“[]”IsNull用于指定一個字段為空IsNotNull用于指定一個字段為非空特殊運算符特殊運算符說明In用于指定一幾點說明:☆所謂的Null是指該字段中沒有輸入任何值?!町?dāng)在文本字段中輸入了空字符串后,表中也無任何顯示,但該字段并不是Null值。☆A(yù)ccess提供的通配符有:
? 表示任意一個字符
* 表示任意多個字符
# 表示任意一個數(shù)字位
[字符表] 表示在字符表中的單一字符
[!字符表] 表示不在字符表中的單一字符方括號內(nèi)字符表中的各個字符間用“,”隔開字符表可以設(shè)置一個范圍,用連字符“-”分隔范圍的下界和上界。如:[1-5]、[!a-d]幾點說明:方括號內(nèi)字符表中的各個字符間用“,”隔開字符串運算符字符串運算符具有連接字符串的功能。字符串運算符說明+兩邊的操作數(shù)必須都是字符型&兩邊的操作數(shù)可以是字符型或數(shù)值型在進行連接操作前先進行操作數(shù)類型的轉(zhuǎn)換,即轉(zhuǎn)換為字符型字符串運算符字符串運算符說明+兩邊的操【例】"ABC"+"123""ABC"&123.4#2011-10-01#&12"123"+50.4"ABC"+123.4#2011-10-01#+20100+200100&200ABC123ABC123.42011-10-0112173.4出錯2011-10-21300100200【例】ABC123ABC123.42011-10-01121
在各類運算符混合運算的表達式中,各運算符的運算級別有高低之分:字符串運算符關(guān)系運算符【例】
NOT5>12/6AND"A"+"B"<"A"+"C"NOT5>2AND"AB"<"AC"NOT.T.AND.T..F.AND.T..F.數(shù)值運算符邏輯運算符在各類運算符混合運算的表達式中,各運算符的運算級別有【例】用文字表示使以下條件表達式為“真”的條件:學(xué)生表中:①
性別=-1And系名="信息工程學(xué)院"信息工程學(xué)院中所有的男生②
性別=-1Or系名="信息工程學(xué)院"所有的男生以及信息工程學(xué)院中所有的學(xué)生教師表中:③
性別=0And職稱="教授"Or民族<>"漢族"女性教授以及非漢族教師④
性別=0And(職稱="教授"Or民族<>"漢族")女性教授以及女性非漢族教師【例】用文字表示使以下條件表達式為“真”的條件:(2)條件查詢舉例
在查詢的設(shè)計視圖中,查詢條件應(yīng)使用查詢定義窗口中的條件選項來設(shè)置,即在相應(yīng)的字段的【條件】文本框中輸入條件?!鴹l件表達式中通常省略字段名?!卸鄠€條件,且涉及不同的字段時,則分別設(shè)置相應(yīng)字段的條件。▲同行的條件之間是“與”關(guān)系;不同行的條件之間是“或”關(guān)系(2)條件查詢舉例【例】查找每名學(xué)生“體育”課程的成績,要求顯示“學(xué)號”、“姓名”、“課程名稱”和“成績”4個字段?!纠坎檎颐棵麑W(xué)生“體育”課程的成績,要求顯示“學(xué)號”、“姓SELECT學(xué)生表.XH,學(xué)生表.XM,課程表.KCMC,成績表.CJFROM(學(xué)生表INNERJOIN成績表ON
學(xué)生表.XH=成績表.XH)INNERJOIN課程表ON
成績表.KCDM=課程表.KCDMWHERE(((課程表.KCMC)="體育"));說明:WHERE子句
用于指定查詢的條件SELECT學(xué)生表.XH,學(xué)生表.XM,課程表.KCM【例】查找成績在70至95分之間(含70和95分)的女生,以及成績大于等于80分的男生。要求顯示“姓名”、“性別”、“課程名稱”、“成績”4個字段并按性別升序、成績降序排序?!纠坎檎页煽冊?0至95分之間(含70和95分)的女生,以SELECT學(xué)生表.XM,學(xué)生表.XB,課程表.KCMC,成績表.CJFROM(學(xué)生表INNERJOIN成績表ON
學(xué)生表.XH=成績表.XH)INNERJOIN課程表ON
成績表.KCDM=課程表.KCDMWHERE(((學(xué)生表.XB)="女")AND((成績表.CJ)>=70And(成績表.CJ)<=95))OR(((學(xué)生表.XB)="男")AND((成績表.CJ)>=80))ORDERBY學(xué)生表.XB,成績表.CJDESC;ORDERBY子句
指定查詢結(jié)果的排序依據(jù)
DESC 降序排序
ASC 升序排序(默認排序)SELECT學(xué)生表.XM,學(xué)生表.XB,課程表.KCM【例】查找沒有選課學(xué)生的課程名稱。要求輸出:課程代碼和課程名稱?!痉治觥竣贈]有選課學(xué)生的課程,即意味著,該門課程在成績表中沒有記錄。②因此,必須kc表和cj表連接時采用左連接類型?!纠坎檎覜]有選課學(xué)生的課程名稱。要求輸出:課程代碼和課程名SELECT課程表.KCDM,課程表.KCMC,成績表.CJFROM課程表LEFTJOIN成績表ON
課程表.KCDM=成績表.KCDMWHERE(((成績表.CJ)IsNull));SELECT課程表.KCDM,課程表.KCMC,成績表【例】查找成績表中成績最高的10名學(xué)生。要求輸出:姓名、學(xué)號、課程名稱和成績?!痉治觥考矗簩⒊煽儼唇敌蚺判?,且只顯示前10條記錄。【例】查找成績表中成績最高的10名學(xué)生。要求輸出:姓名、學(xué)號SELECTTOP10學(xué)生表.XH,學(xué)生表.XM,課程表.KCMC,成績表.CJFROM(學(xué)生表INNERJOIN成績表ON學(xué)生表.XH=成績表.XH)INNERJOIN課程表ON成績表.KCDM=課程表.KCDMORDERBY成績表.CJDESC;SELECTTOP10學(xué)生表.XH,學(xué)生表.XM,【例】查找有補考學(xué)生的課程代碼和課程名稱(相同課程只顯示一次)。【分析】即:該門課程的成績有小于60分的記錄。【例】查找有補考學(xué)生的課程代碼和課程名稱(相同課程只顯示一次SELECTDISTINCTROW
課程表.KCDM,課程表.KCMCFROM課程表INNERJOIN成績表ON課程表.KCDM=成績表.KCDMWHERE(((成績表.CJ)<60));SELECTDISTINCTROW課程表.KCDM,課四、查詢中的計算和統(tǒng)計
在設(shè)計查詢時,不僅可以進行條件的設(shè)置,還可以進行計算和分類匯總(計數(shù)、求和、求平均值等)。(1)表達式
表達式是用運算符、常量、字段值、函數(shù)以及字段名和屬性等連接起來的一個式子。系統(tǒng)提供了算術(shù)運算、關(guān)系運算、字符運算和邏輯運算等4種基本運算表達式。四、查詢中的計算和統(tǒng)計(2)系統(tǒng)函數(shù)
函數(shù)是一個預(yù)先定義(系統(tǒng)預(yù)先定義或用戶自定義)的程序模塊。標準函數(shù)(系統(tǒng)預(yù)定義)自定義函數(shù)(用戶自定義)系統(tǒng)提供的標準函數(shù)包括:數(shù)值函數(shù)、字符函數(shù)、日期時間函數(shù)和聚合函數(shù)等。P126(2)系統(tǒng)函數(shù)P126求和函數(shù)格式:Sum(<字符串表達式>)功能:返回字段中值的總和返回值數(shù)據(jù)類型:數(shù)值型說明:字符串表達式可以是一個字段名,也可以是一個含字段名的表達式,但所含的字段必須是數(shù)值型字段。【例】Sum(Cj.cj)Sum(單價*數(shù)量)Sum((單價-進價)*數(shù)量)聚合函數(shù)求和函數(shù)【例】聚合函數(shù)求平均函數(shù)格式:Avg(<字符串表達式>)功能:返回字段中值的平均值返回值數(shù)據(jù)類型:數(shù)值型說明:☆字符串表達式可以是一個字段名,也可以是一個含字段名的表達式,但所含的字段必須是數(shù)值型字段?!預(yù)vg函數(shù)不計算任何Null值字段【例】Avg(Cj.cj)Avg(單價)Avg(應(yīng)發(fā)工資-扣款)求平均函數(shù)【例】統(tǒng)計記錄個數(shù)函數(shù)格式:Count(<字符串表達式>)功能:統(tǒng)計記錄個數(shù)返回值數(shù)據(jù)類型:數(shù)值型說明:☆字符串表達式可以是一個字段名,也可以是一個含字段名的表達式(該字段不一定是數(shù)值型)?!钍褂酶袷紺ount(<字符串表達式>)時,系統(tǒng)將統(tǒng)計指定字段值不為Null值的記錄的個數(shù);而使用格式Count(*)時,系統(tǒng)將統(tǒng)計所有記錄的個數(shù),包括含Null值字段的所有記錄個數(shù)?!纠縎um(Cj.cj)/Count(Cj.cj)
單價*Count(單價)統(tǒng)計記錄個數(shù)函數(shù)【例】最大、最小值函數(shù)格式:Max(<字符表達式>)Min(<字符表達式>)功能:返回一組指定字段中的最大、最小值說明:字符表達式可以是一個字段名,也可以是一個含字段名的表達式,(該字段并不一定是數(shù)值型)。【例】
Max(Cj.cj)Min(出生日期)最大、最小值函數(shù)【例】(3)查詢中的計算功能舉例▲預(yù)定義計算利用設(shè)計視圖網(wǎng)格的【總計】行進行各種統(tǒng)計▲自定義計算
創(chuàng)建計算字段進行任意類型的計算當(dāng)需要統(tǒng)計的數(shù)據(jù)在表中沒有相應(yīng)的字段,或者用于計算的數(shù)據(jù)值來源于多個字段時,應(yīng)在查詢中使用計算字段。計算字段是指根據(jù)一個或多個字段使用表達式建立的新字段(查詢中的顯示字段)。創(chuàng)建計算字段是在查詢設(shè)計視圖的【字段】行中直接輸入計算表達式。(3)查詢中的計算功能舉例當(dāng)需要統(tǒng)計的數(shù)據(jù)在表中沒有相應(yīng)的【例】統(tǒng)計各門課程的成績。要求輸出“課程名稱”、“總分”、“平均分”、“最高分”和“最低分”。【分析】
本題輸出的字段中含有4個統(tǒng)計字段,因此將利用設(shè)計視圖網(wǎng)格的中【總計】行進行統(tǒng)計。
【總計】行的打開方式:單擊【查詢工具/設(shè)計】選項卡【顯示/隱藏】組中的【匯總】按鈕?!A(yù)定義計算【例】統(tǒng)計各門課程的成績。要求輸出“課程名稱”、“總分”、“【總計】下拉列表框中含以下各選項:
合計
平均值
最小值
最大值
計數(shù)
Var(方差)
StDev(標準差)(方差的平方根就是標準差)【總計】下拉列表框中含以下各選項:
GroupBy 定義要執(zhí)行計算的組
First 求在表或查詢中第一條記錄的 字段值
Last 求在表或查詢中最后一條記錄 的字段值
Expression 在字段中自定義計算公式
Where 指定用于分組的字段的條件GroupBy 定義要執(zhí)行計算的組【例】統(tǒng)計各門課程的平均分。要求輸出“課程名稱”、“平均分”、“最高分”和“最低分”??梢詾轱@示的各個字段分別設(shè)置其屬性?!纠拷y(tǒng)計各門課程的平均分。要求輸出“課程名稱”、“平均分”SELECT課程表.KCMC,Sum(成績表.CJ)AS總分,Avg(成績表.CJ)AS平均分,Min(成績表.CJ)AS最低分,Max(成績表.CJ)AS最高分FROM課程表INNERJOIN成績表ON課程表.KCDM=成績表.KCDMGROUPBY課程表.KCMC;SELECT課程表.KCMC,Sum(成績表.CJ)A當(dāng)查詢的輸出字段含有聚合函數(shù)時,通常情況下應(yīng)設(shè)置分組字段。所謂分組字段即為:進行數(shù)據(jù)統(tǒng)計時的分組依據(jù)。當(dāng)查詢中含有統(tǒng)計字段,而某一字段既不是統(tǒng)計字段,也不是分組字段,其值是無意義的?!究傆嫛啃性O(shè)為【W(wǎng)here】的字段不能出現(xiàn)在查詢的結(jié)果中。當(dāng)查詢的輸出字段含有聚合函數(shù)時,通常情況下應(yīng)設(shè)置分組字段?!纠坎樵償?shù)學(xué)系平均成績在75分以上,且各門課程的成績不得低于60分的學(xué)生的學(xué)號、姓名、平均分和最低分,并按照平均分從高到低排列(平均分精確到1位小數(shù))?!纠坎樵償?shù)學(xué)系平均成績在75分以上,且各門課程的成績不得低SELECT學(xué)生表.XH,學(xué)生表.XM,Avg(成績表.CJ)AS平均分,Min(成績表.CJ)AS最低分FROM院系代碼表INNERJOIN(學(xué)生表INNERJOIN成績表ON學(xué)生表.XH=成績表.XH)ON院系代碼表.YXZYDM=學(xué)生表.YXZYDMWHERE(((院系代碼表.YXMC)="數(shù)學(xué)系"))GROUPBY學(xué)生表.XH,學(xué)生表.XMHAVING(((Avg(成績表.CJ))>75)AND((Min(成績表.CJ))>60))ORDERBYAvg(成績表.CJ)DESC;SELECT學(xué)生表.XH,學(xué)生表.XM,Avg(成績表WHERE與HAVING的區(qū)別:▲WHERE子句是從數(shù)據(jù)源中提取數(shù)據(jù)時,對記錄的篩選?!鳫AVING子句必須位于GROUPBY子句之后,是對統(tǒng)計結(jié)果的篩選?!鳫AVING子句中通常應(yīng)該含有聚合函數(shù),否則應(yīng)該使用WHERE子句。WHERE與HAVING的區(qū)別:▲自定義計算
在設(shè)計視圖中創(chuàng)建新的計算字段,并將表達式輸入到字段行中,表達式可以由多個計算組成?!纠拷y(tǒng)計學(xué)生表中不同姓氏的學(xué)生的人數(shù),輸出字段為:姓氏和人數(shù),并且按人數(shù)降序排序。(假設(shè)姓氏為姓名的第1個漢字)?!痉治觥?/p>
本題中分組依據(jù)為姓氏的第1個字,并且作為輸出的字段。為此需要創(chuàng)建一個新的計算字段,該字段使用了字符串截取函數(shù)Left()。▲自定義計算▲
Left()函數(shù)格式:Left(String,Length)功能:從字符表達式String左側(cè)的第一個字符開始,截取由Length的值所指定的若干個字符返回值數(shù)據(jù)類型:字符型說明:☆String為被截取的字符串,當(dāng)其值為Null時,則返回Null值?!頛ength為返回的字符數(shù)。其值必須為正,若Length的值為小數(shù),則四舍五入至整數(shù)值后即為返回的字符個數(shù);若Length的值為負數(shù),則出錯?!頛ength的值為0時,則返回空字符串;Length的值大于String的長度時,則返回全部字符。字符串截取函數(shù)▲Left()函數(shù)字符串截取函數(shù)▲Right()函數(shù)格式:Right(String,Length)功能:從字符表達式String右側(cè)的第一個字符開始,截取由Length的值所指定的若干個字符返回值數(shù)據(jù)類型:字符型字符串截取函數(shù)▲Right()函數(shù)字符串截取函數(shù)▲Mid()函數(shù)格式:Mid(String,Start[
,Length])功能:從字符表達式String返回一個子字符串返回值數(shù)據(jù)類型:字符型說明:☆Start為長整型,用于指定所取的字符串在String中的開始位置;☆
Length為長整型,指定要返回的字符個數(shù),缺省時指所取字符串直至String的最后一個字符;☆Start的值大于指定字符串的長度,則返回一個空字符串;Start的值為0或負數(shù),則均出錯;☆Length的值大于所能取的字符數(shù)目,則取至最后一個字符。字符串截取函數(shù)▲Mid()函數(shù)字符串截取函數(shù)【例】
Left("ABCD中國",8-5)
ABC
Left("ABCD中國",0)
(空字符串)
Left("ABCD中國",8)
ABCD中國
Right("ABCD中國",4)
CD中國
Right("ABCD中國",2.4)
中國字符串截取函數(shù)【例】字符串截取函數(shù)【例】
Mid("ABCD中國",3,8)
CD中國
Mid("ABCD中國",12,2)
(空字符串)
Mid("ABCD中國",0,4)
出錯
Mid("ABCD中國",3,-1)
出錯字符串截取函數(shù)【例】字符串截取函數(shù)【例】統(tǒng)計學(xué)生表中不同姓氏的學(xué)生的人數(shù),輸出字段為:姓氏和人數(shù),并且按人數(shù)降序排序。(假設(shè)姓氏為姓名的第1個漢字)?!纠拷y(tǒng)計學(xué)生表中不同姓氏的學(xué)生的人數(shù),輸出字段為:姓氏和人SELECTLeft([xm],1)AS姓氏,Count(學(xué)生表.XH)AS人數(shù)FROM學(xué)生表GROUPBYLeft([xm],1)ORDERBYCount(學(xué)生表.XH)DESC;SELECTLeft([xm],1)AS姓氏,Cou【例】統(tǒng)計學(xué)生表中“王”姓和“李”姓的學(xué)生人數(shù),輸出字段為:姓氏和人數(shù),并按姓氏升序排序?!纠拷y(tǒng)計學(xué)生表中“王”姓和“李”姓的學(xué)生人數(shù),輸出字段為:SELECTLeft([xm],1)AS姓氏,Count(學(xué)生表.XH)AS人數(shù)FROM學(xué)生表GROUPBYLeft([xm],1)HAVING(((Left([xm],1))="王"))OR(((Left([xm],1))="張"))ORDERBYLeft([xm],1);SELECTLeft([xm],1)AS姓氏,Cou【例】統(tǒng)計學(xué)生表中不同年齡的學(xué)生人數(shù)。輸出時按年齡升序排序?!痉治觥?/p>
年齡計算方法:當(dāng)前的年份–出生日期的年份因此在創(chuàng)建的計算字段,需要使用相關(guān)的日期函數(shù)?!纠拷y(tǒng)計學(xué)生表中不同年齡的學(xué)生人數(shù)。輸出時按年齡升序排序。截取日期分量函數(shù)格式: Year(Date)
Month(Date)
Day(Date)功能:分別返回日期表達式年份、月份和日期的整數(shù)。返回值數(shù)據(jù)類型:整型說明:☆Date為任何能夠表示日期的表達式(日期或字符表達式等)?!顓?shù)中若略去年份,則返回系統(tǒng)日期的年份?!顓?shù)中若含有Null值,則返回Null。
相類似的函數(shù)有:Hour()函數(shù)、Minute()函數(shù)和Second()函數(shù)。日期函數(shù)截取日期分量函數(shù)相類似的函數(shù)有:Hour()【例】
Year(#2011-10-01#)
2011Year(Null)
NullYear("Oct,15")
(系統(tǒng)日期的年份)
Month("2012-09-20")
9Day(3-2)
31Access將1899年12月31日作為數(shù)值1。日期函數(shù)【例】Access將1899年12月31日作為數(shù)值1獲取系統(tǒng)日期/時間函數(shù)格式: Date(
)
Time()
Now()功能:分別返回當(dāng)前系統(tǒng)日期、當(dāng)前系統(tǒng)時間和當(dāng)前系統(tǒng)日期和時間。返回值數(shù)據(jù)類型:日期型
返回的日期格式由操作系統(tǒng)設(shè)置的日期格式?jīng)Q定。日期函數(shù)獲取系統(tǒng)日期/時間函數(shù)返回的日期格式由操作系統(tǒng)【例】統(tǒng)計學(xué)生表中不同年齡的學(xué)生人數(shù)。輸出時按年齡升序排序。【例】統(tǒng)計學(xué)生表中不同年齡的學(xué)生人數(shù)。輸出時按年齡升序排序。SELECTYear(Date())-Year([csrq])AS年齡,Count(學(xué)生表.XH)AS人數(shù)FROM學(xué)生表GROUPBYYear(Date())-Year([csrq])ORDERBYYear(Date())-Year([csrq]);SELECTYear(Date())-Year([csrq【例】統(tǒng)計各院系女生人數(shù)及所占比例。要求輸出:院系名稱、女生人數(shù)、女生比例;輸出時按女生比例降序排序,比例相同時則按院系名稱升序排序(女生比例保留1位小數(shù))?!痉治觥?/p>
由于需要統(tǒng)計女生所占的比例,因此不能用Where子句進行性別篩選。本題需要用到一個條件函數(shù)IIf()?!纠拷y(tǒng)計各院系女生人數(shù)及所占比例。要求輸出:院系名稱、女生▲IIf()函數(shù)格式:IIF(Expression,Truepart,F(xiàn)alsepart)功能:根據(jù)Expression的值,返回Truepart和Falsepart兩個值中的一個。說明:
當(dāng)邏輯表達式Expression的值為真時,返回Truepart的值,否則返回Falsepart的值。【例】根據(jù)成績輸出相應(yīng)的分數(shù)等級:不及格、及格和優(yōu)秀。IIf(cj.cj>=90,
"優(yōu)秀",_ IIf(cj.cj<60,"不及格","及格"))▲IIf()函數(shù)【例】統(tǒng)計各院系女生人數(shù)及所占比例。要求輸出:院系名稱、女生人數(shù)、女生比例;輸出時按女生比例降序排序,比例相同時則按院系名稱升序排序(女生比例保留1位小數(shù))?!纠拷y(tǒng)計各院系女生人數(shù)及所占比例。要求輸出:院系名稱、女生SELECT院系代碼表.YXMC,Sum(IIf([xb]="女",1,0))AS女生人數(shù),Sum(IIf([xb]="女",1,0))/Count([xh])AS女生所占比例FROM院系代碼表INNERJOIN學(xué)生表ON院系代碼表.YXZYDM=學(xué)生表.YXZYDMGROUPBY院系代碼表.YXMCORDERBYSum(IIf([xb]="女",1,0))/Count([xh])DESC,院系代碼表.YXMC;SELECT院系代碼表.YXMC,Sum(IIf([xb第三節(jié)交叉表查詢第三節(jié)交叉表查詢是以行和列的字段作為標題和條件選取數(shù)據(jù),并在行與列的交叉處對數(shù)據(jù)進行匯總和統(tǒng)計計算。交叉表查詢是以行和列的字段作為標題和條件選取數(shù)據(jù),并設(shè)計交叉表查詢需要字義3種字段:
處于數(shù)據(jù)表最左端的行標題字段把某一字段或相關(guān)數(shù)據(jù)放入指定的一行中。
處于數(shù)據(jù)表最上邊的列標題字段對每一列指定的字段進行統(tǒng)計,并將統(tǒng)計結(jié)果放在該列。
處于行和列交叉位置的值字段可以為該字段指定總計項。在交叉表查詢中:只能指定一個列字段和一個總計類型的字段。可以通過設(shè)置一個或多個行標題,創(chuàng)建多級交叉表查詢。設(shè)計交叉表查詢需要字義3種字段:在交叉表查詢中:一、使用向?qū)?chuàng)建交叉表查詢【例】基于xsb表創(chuàng)建一個交叉表查詢,要求統(tǒng)計各班的男女生人數(shù)?!锊僮鞑襟E:①單擊【創(chuàng)建】選項卡【查詢】組中的【查詢向?qū)А堪粹o,并在對話框中選擇【交叉表查詢向?qū)А竣诎聪驅(qū)崾疽来未_定數(shù)據(jù)源、行字段、列字段、匯總項及是否包括各行小計③為查詢命名并保存所設(shè)計的查詢一、使用向?qū)?chuàng)建交叉表查詢
交叉表查詢向?qū)У臄?shù)據(jù)源只能來自于一張表或查詢。若來自多個表,可先建立一個查詢,而后以此查詢作為數(shù)據(jù)源使用向?qū)?chuàng)建,或者直接在設(shè)計視圖下創(chuàng)建。行標題最多3個,列標題1個,值字段1個。交叉表查詢向?qū)У臄?shù)據(jù)源只能來自于一張表或查詢。若TRANSFORMCount(xsb.[XH])ASXH之計數(shù)SELECTxsb.[BJBH]FROMxsbGROUPBYxsb.[BJBH]PIVOTxsb.[XB];TRANSFORMCount(xsb.[XH])ASX二、在設(shè)計視圖下創(chuàng)建交叉表查詢使用設(shè)計視圖可創(chuàng)建基于多表的交叉表查詢?!纠恳越徊姹淼男问讲樵兠總€學(xué)生的各門課程成績及平均分。要求:輸出時平均分保留一位小數(shù)。
在查詢的設(shè)計視圖下,單擊【查詢工具/設(shè)計】選項卡【查詢類型】組中【交叉表】按鈕,可以在設(shè)計網(wǎng)格中增加【交叉表】行。二、在設(shè)計視圖下創(chuàng)建交叉表查詢在查詢的設(shè)計視圖下,單。★操作步驟:①打開查詢設(shè)計視圖,并添加數(shù)據(jù)源及顯示字段②單擊【查詢工具/設(shè)計】選項卡【查詢類型】組中【交叉表】按鈕,使查詢類型為交叉表查詢③在【交叉表】行上設(shè)置:行字段、列字段④在【交叉表】行上設(shè)置:值字段(將該字段的【總計】行改為:第一條記錄)⑤添加匯總字段并設(shè)置匯總函數(shù)(將該字段的【交叉表】行設(shè)置為:行標題)。Access查詢設(shè)計匯總課件行標題列標題值行標題列標題值TRANSFORMFirst(成績表.CJ)ASCJ之FirstSELECT學(xué)生表.XM,Avg(成績表.CJ)AS平均分FROM(學(xué)生表INNERJOIN成績表ON學(xué)生表.XH=成績表.XH)INNERJOIN課程表ON成績表.KCDM=課程表.KCDMGROUPBY學(xué)生表.XMPIVOT
課程表.KCMC;TRANSFORMFirst(成績表.CJ)ASCJ之如果在【交叉表】行中,設(shè)置某個字段的選項為:“值
”,則在【總計】行中可以有多種選擇。如果獲取的是單一數(shù)據(jù),則應(yīng)該選擇“First”或“Last”。ORDERBY子句中不能含有聚合函數(shù)。如果在【交叉表】行中,設(shè)置某個字段的選項為:“值”,則創(chuàng)建交叉表查詢時,使用交叉表查詢向?qū)Ш驮O(shè)計視圖的比較:☆數(shù)據(jù)源來自于一個表或查詢時,使用交叉表查詢向?qū)?chuàng)建;☆數(shù)據(jù)源來自于多個表或查詢時,使用設(shè)計視圖創(chuàng)建;☆如果【行標題】或【列標題】需要建立新字段得到,則使用設(shè)計視圖創(chuàng)建。創(chuàng)建交叉表查詢時,使用交叉表查詢向?qū)Ш驮O(shè)計視圖的比較:第四節(jié)參數(shù)查詢第四節(jié)
所謂參數(shù)查詢是在運行查詢的過程中,系統(tǒng)提示用戶輸入?yún)?shù),并根據(jù)參數(shù)的值來檢索符合條件的記錄。在Access中,可以建立單參數(shù)查詢,也可以建立多參數(shù)查詢。
參數(shù)查詢是一個特殊的選擇查詢,具有較大的靈活性,常作為窗體、報表的數(shù)據(jù)源。所謂參數(shù)查詢是在運行查詢的過程中,系統(tǒng)提示用戶輸入?yún)⒁?、單參?shù)查詢【例】設(shè)計一個能夠查詢指定課程代碼的學(xué)生成績查詢,要求輸出:學(xué)號、姓名、課程代碼、課程名稱、成績。(運行時課程代碼分別取:60001、60011)★操作步驟:①打開查詢的設(shè)計視圖②添加數(shù)據(jù)源③設(shè)置顯示字段④在作為參數(shù)字段的【條件】行上輸入提示文本(注:提示文本需要用方括號括起來)一、單參數(shù)查詢Access查詢設(shè)計匯總課件SELECT學(xué)生表.XH,學(xué)生表.XM,課程表.KCMC,課程表.KCDM,成績表.CJFROM學(xué)生表INNERJOIN(課程表INNERJOIN成績表ON課程表.KCDM=成績表.KCDM)ON學(xué)生表.XH=成績表.XHWHERE課程表.KCDM=[請輸入需要查詢的課程代碼:];SELECT學(xué)生表.XH,學(xué)生表.XM,課程表.KCM二、多參數(shù)查詢【例】設(shè)計一個能夠查詢指定課程代碼、指定班級編號的學(xué)生成績查詢,要求輸出:學(xué)號、姓名、班級編號、課程代碼、課程名稱、成績。(運行時課程代碼同上例,班級編號?。?4020)二、多參數(shù)查詢SELECT學(xué)生表.XH,學(xué)生表.XM,成績表.KCDM,課程表.KCMC,成績表.CJFROM學(xué)生表INNERJOIN(課程表INNERJOIN成績表ON課程表.KCDM=成績表.KCDM)ON學(xué)生表.XH=成績表.XHWHERE
成績表.KCDM=[請輸入課程代碼:]AND學(xué)生表.BJBH=[請輸入班級編號:];SELECT學(xué)生表.XH,學(xué)生表.XM,成績表.KCD【例】查詢指定省份學(xué)生的信息(jg字段的前兩個字符為該學(xué)生所屬省份)。輸出字段為:省份、jg、xm、xb和yxmc,查詢結(jié)果先按jg升序排列,jg相同時按xm降序排列。【例】查詢指定省份學(xué)生的信息(jg字段的前兩個字符為該學(xué)生所SELECTLeft([jg],2)AS省份,學(xué)生表.JG,學(xué)生表.XM,學(xué)生表.XB,院系代碼表.ZYMCFROM院系代碼表INNERJOIN學(xué)生表ON院系代碼表.YXZYDM=學(xué)生表.YXZYDMWHERELeft([jg],2)=[請輸入省份:]ORDERBY學(xué)生表.JG,學(xué)生表.XMDESC;SELECTLeft([jg],2)AS省份,學(xué)生表【例】查詢指定城市(jg字段中的第3、4個字符)男女學(xué)生的人數(shù),要求輸出字段為:城市名、性別和人數(shù)?!纠坎樵冎付ǔ鞘校╦g字段中的第3、4個字符)男女學(xué)生的人SELECTMid([jg],3,2)AS城市名,學(xué)生表.XB,Count(學(xué)生表.XB)AS人數(shù)FROM學(xué)生表GROUPBYMid([jg],3,2),學(xué)生表.XBHAVINGMid([jg],3,2)=[城市名:];Access查詢設(shè)計匯總課件第五節(jié)操作查詢第五節(jié)
操作查詢是在選擇查詢的基礎(chǔ)上創(chuàng)建的,可以對表中符合符合條件的記錄進行追加、修改、刪除和生成新表操作。操作查詢包括:追加查詢更新查詢刪除查詢生成表查詢操作查詢是在選擇查詢的基礎(chǔ)上創(chuàng)建的,可以對表中符合符一、刪除查詢刪除查詢是從表中刪除與查詢結(jié)果中相對應(yīng)的記錄?!锊僮鞑襟E:①打開查詢的設(shè)計視圖②添加數(shù)據(jù)源③更改查詢的類型為刪除查詢④設(shè)置刪除的條件查詢運行后將從原表中永久刪除指定的記錄,且無法恢復(fù)!為避免誤刪除,可以先預(yù)覽查詢的結(jié)果或?qū)υ瓟?shù)據(jù)表進行備份。刪除查詢刪除的是整個記錄,而不是指定的字段或字段中的數(shù)據(jù)。一、刪除查詢查詢運行后將從原表中永久刪除指定的記錄,且無法【例】
將“成績表”表中成績小于60分的記錄刪除。(成績表)【例】將“成績表”表中成績小于60分的記錄刪除。(成績表)DELETE成績表.*,成績表.CJFROM成績表WHERE成績表.CJ<60;DELETE成績表.*,成績表.CJ【例】從cj表中刪除姓名為“史建平”的記錄?!痉治觥?/p>
此刪除查詢涉及兩張表:學(xué)生表和成績表。刪除的是成績表表中的記錄;條件設(shè)置來自于學(xué)生表。若刪除查詢的數(shù)據(jù)源來自多表,則:刪除的只能是子表中的記錄;主表中的字段用于條件設(shè)置;與兩表之間是否建立參照完整性規(guī)則無關(guān)?!纠繌腸j表中刪除姓名為“史建平”的記錄。若刪除查詢的數(shù)據(jù)設(shè)計視圖中的【刪除】行:☆From 指定刪除記錄的表☆Where 指定刪除的條件設(shè)計視圖中的【刪除】行:DELETE
學(xué)生表.XM,成績表.*FROM學(xué)生表INNERJOIN成績表ON學(xué)生表.XH=成績表.XHWHERE學(xué)生表.XM="史建平";DELETE學(xué)生表.XM,成績表.*二、更新查詢更新查詢是根據(jù)查詢的結(jié)果,對一個或多個表中相關(guān)記錄的字段值進行更新。
更新查詢的最大優(yōu)勢在于:用相同的表達式批量修改多條記錄的字段值。二、更新查詢★操作步驟:
●打開查詢的設(shè)計視圖
●添加數(shù)據(jù)源
●選擇查詢類型
●設(shè)置更新的字段、字段的值及更新的條件【例】
計算教師工資表中的住房補貼(應(yīng)是基本工資和綜合津貼之和的5%。(工資表)UPDATE工資表SET工資表.ZFBT=([工資表]![JBGZ]+[工資表]![ZHJT])*0.05;
更新的字段可以是一個或多個?!锊僮鞑襟E:【例】UPDATE工資表SET工資表.ZFAccess查詢設(shè)計匯總課件三、追加查詢追加查詢是把查詢的結(jié)果添加到另一個表的末尾(查詢的數(shù)據(jù)源可以是一個或多個表)?!纠?/p>
將學(xué)生表中“性別”為“男”的記錄追加到學(xué)生ACCESS表中。(學(xué)生表)★操作步驟:①打開查詢的設(shè)計視圖,并添加數(shù)據(jù)源②更改查詢類型及設(shè)置目標表③設(shè)置追加字段及追加條件三、追加查詢【例】★操作步驟:目標表必須是已經(jīng)存在的表。查詢輸出和目標表對應(yīng)字段的字段名必須相同。查詢輸出和目標表對應(yīng)字段的數(shù)據(jù)類型如果不相同,系統(tǒng)將先進行類型轉(zhuǎn)換;如果不能進行類型轉(zhuǎn)換,則將出錯。目標表必須是已經(jīng)存在的表。INSERTINTO學(xué)生ACCESS(XH,XM,XB)SELECT學(xué)生表.XH,學(xué)生表.XM,學(xué)生表.XBFROM學(xué)生表WHERE學(xué)生表.XB="男";INSERTINTO學(xué)生ACCESS(XH,XM,四、生成表查詢生成表查詢是對一個或多個表中的記錄進行檢索,將查詢的結(jié)果創(chuàng)建新表。將成績在90分以上學(xué)生的基本信息存儲到90分以上的學(xué)生信息表中(多條相同記錄只保存一條)。(學(xué)生表和成績表)【例】★操作步驟:①打開查詢的設(shè)計視圖②添加數(shù)據(jù)源③更改查詢類型并命名新表的表名④選擇新表中的字段及設(shè)置查詢的條件四、生成表查詢將成績在90分以上學(xué)生的基本信息存儲到90分以切換到數(shù)據(jù)表視圖可預(yù)覽新建的表。運行查詢后,才創(chuàng)建新表(創(chuàng)建新表前,系統(tǒng)將有提示)。切換到數(shù)據(jù)表視圖可預(yù)覽新建的表。SELECTDISTINCTROW
學(xué)生表.*INTO90分以上的學(xué)生信息FROM學(xué)生表INNERJOIN成績表ON學(xué)生表.XH=成績表.XHWHERE成績表.CJ=90;SELECTDISTINCTROW學(xué)生表.*INTO
操作查詢不僅選擇表中數(shù)據(jù),還對表中數(shù)據(jù)進行修改。因此,為了避免因誤操作引起的不必要的改變,在數(shù)據(jù)庫窗口中的每個操作查詢圖標之后顯示一個感嘆號,以引起注意。操作查詢不僅選擇表中數(shù)據(jù),還對表中數(shù)據(jù)進行修改。因此第六節(jié)使用向?qū)?chuàng)建查詢第六節(jié)一、查找重復(fù)項查詢向?qū)?/p>
數(shù)據(jù)表中除設(shè)置為主鍵的字段不能有重復(fù)的值外,其它的各個字段均允許有重復(fù)的值。查找重復(fù)項查詢即從表中查找具有相同字段值的記錄。一、查找重復(fù)項查詢向?qū)А纠坎檎覍W(xué)生表中班級編號和民族代碼均相同的記錄。要求輸出:xh、xm、bjbh和mzdm?!锊僮鞑襟E:①打開查找重復(fù)項查詢向?qū)В▌?chuàng)建新查詢)②選擇數(shù)據(jù)源③選取設(shè)為重復(fù)值的字段④可以選擇另外查詢的字段【例】查找學(xué)生表中班級編號和民族代碼均相同的記錄。要求輸出:Access查詢設(shè)計匯總課件SELECT學(xué)生表.bjbh,學(xué)生表.MZDM,學(xué)生表.XH,學(xué)生表.XMFROM學(xué)生表WHERE(((學(xué)生表.bjbh)In(SELECT[bjbh]FROM[學(xué)生表]AsTmpGROUPBY[bjbh],[MZDM]HAVINGCount(*)>1And[MZDM]=[學(xué)生表].[MZDM])))ORDERBY學(xué)生表.bjbh,學(xué)生表.MZDM;SELECT學(xué)生表.bjbh,學(xué)生表.MZDM,學(xué)生表二、查找不匹配項查詢向?qū)?/p>
不匹配項查詢就是在一個表中搜索另一個表中沒有相關(guān)記錄的行?!纠坎樵儧]有選課的課程信息★操作步驟:①打開查找不匹配項查詢向?qū)В▌?chuàng)建新查詢)②選擇參考表③選擇不匹配表④選擇兩表的聯(lián)接字段二、查找不匹配項查詢向?qū)ccess查詢設(shè)計匯總課件SELECT課程表.KCDM,課程表.KCMCFROM課程表LEFTJOIN成績表ON課程表.[KCDM]=成績表.[KCDM]WHERE成績表.KCDMIsNull;SELECT課程表.KCDM,課程表.KCMC第七節(jié)SQL查詢第七節(jié)SQL查詢SQL結(jié)構(gòu)化查詢語言是標準的關(guān)系型數(shù)據(jù)語言。查詢的本質(zhì)是一條SQL語句,即每個查詢都對應(yīng)著一條SQL查詢命令。保存查詢時,保存的是一條SQL語句,而不是查詢的結(jié)果。創(chuàng)建查詢,既可以在其設(shè)計視圖中實現(xiàn),也可以在其SQL視圖中直接輸入SQL語句實現(xiàn)。某些特殊的查詢不能在設(shè)計視圖中進行,只能通過SQL語句才能實現(xiàn)。SQL結(jié)構(gòu)化查詢語言是標準的關(guān)系型數(shù)據(jù)語言。SQL(結(jié)構(gòu)化查詢語言)是一種數(shù)據(jù)庫查詢語言,它的功能包括:
☆數(shù)據(jù)定義
☆數(shù)據(jù)查詢
☆數(shù)據(jù)操縱
☆數(shù)據(jù)控制SQL(結(jié)構(gòu)化查詢語言)是一種數(shù)據(jù)庫查詢語言,它的功一、SQL語言的特點
高度的綜合
高度非過程化
交互式與嵌入式相結(jié)合
語言簡潔,易學(xué)易用一、SQL語言的特點二、SQL語言的數(shù)據(jù)定義功能
SQL語言的數(shù)據(jù)定義功能包括定義表、定義視圖、定義索引。即對表、視圖和索引的創(chuàng)建、修改和刪除。數(shù)據(jù)定義的CREATE語句是定義基本表的結(jié)構(gòu)、定義視圖和定義索引。SQL語句用途CREATETABLE創(chuàng)建表ALTERTABLE在已有表中添加新字段或約束DROPTABLE從數(shù)據(jù)庫中刪除表,或者從字段或字段組中刪除索引CREATEINDEX為字段或字段組創(chuàng)建索引DROPINDEX刪除指定索引二、SQL語言的數(shù)據(jù)定義功能SQL語句用途CREAT1、定義基本表語法格式:CREATETABLE<表名>(<字段名1><數(shù)據(jù)類型>[<寬度>][<字段級約束條件>][,<字段名2><數(shù)據(jù)類型>[<寬度>][<字段級約束條件>]…][,CONSTRAINT<記錄級約束條件>])功能:創(chuàng)建表的結(jié)構(gòu)說明:字段名不能缺?。粩?shù)據(jù)類型使用指定的英語單詞;部分數(shù)據(jù)類型有其固定的長度,不需要設(shè)置。
注意教材P150該命令的語法格式。1、定義基本表注意教材P150該命令的語法格式。CONSTRAINT子句用于設(shè)置記錄級完整性約束條件。完整性約束條件有兩類:☆字段級完整性約束條件☆記錄級完整性約束條件
如果約束條件涉及到多個字段時,則必須用CONSTRAINT定義為記錄級約束條件如果單字段既可以定義為字段級約束條件,也可以使用CONSTRAINT定義為記錄級約束條件。CONSTRAINT子句用于設(shè)置記錄級完整性約束條件。完整性約束是定義相關(guān)字段間的約束條件。約束條件有以下幾種設(shè)置:
☆NotNull
字段不能為空值。
☆PrimaryKey 設(shè)置主鍵。設(shè)置單個字段為主 鍵時,應(yīng)該將該字設(shè)置為字段
級約束條件。
☆Unique 創(chuàng)建唯一索引。語法格式:
CONSTRAINT
索引名
PrimaryKey(主鍵字段1[,主鍵字段2,…])|
索引名Unique(索引字段1[,索引字段2,…])注意:單字段可以放在字段后,不需要CONSTRAINT完整性約束是定義相關(guān)字段間的約束條件。約束條件有以下幾種設(shè)【例】創(chuàng)建xs表,結(jié)構(gòu)如下表所示:字段名數(shù)據(jù)類型字段寬度空值支持xh文本型10
主鍵xm文本型8否xb是否型是csrq日期時間是zpOLE對象型是jl備注型是【例】創(chuàng)建xs表,結(jié)構(gòu)如下表所示:字段名數(shù)據(jù)類型字段寬度空值CREATETABLExs(xhChar(10)PrimaryKey,xmChar(8)NotNull,xbLogical,csrqDate,zpGeneral,jlMemo)CREATETABLExs【例】創(chuàng)建cj表,結(jié)構(gòu)如下表所示:
并將xh+kcdm設(shè)置為主鍵,索引名為xhkcdm。CREATETABLEcj(xhString(10),kcdmChar(6),cjSmallIntNotNull,
CONSTRAINTxhkcdmPrimaryKey(xh,kcdm))字段名數(shù)據(jù)類型字段寬度空值支持xh文本型10
kcdm文本型6cj整型否【例】創(chuàng)建cj表,結(jié)構(gòu)如下表所示:并將xh+kc【例】創(chuàng)建ts表,結(jié)構(gòu)如下表所示:
并將isbn+gch設(shè)置為唯一索引,索引標識abc字段名數(shù)據(jù)類型字段寬度空值支持ID自動編號
isbn文本型20sm文本型20否rkrq日期型dj單精度型gch文本型15【例】創(chuàng)建ts表,結(jié)構(gòu)如下表所示:并將isbn+CREATETABLEts(IDCounter,isbnChar(20),smString(20),rkrqDate,cbsString(20),djSingle,gchChar(15),
CONSTRAINTabcUnique(isbn,gch))CREATETABLEts2、修改基本表
ALTERTABLE用于修改已經(jīng)建立的表的結(jié)構(gòu)。修改基本表的結(jié)構(gòu)包括:增加字段和字段級完整性約束條件、修改原有字段的定義、刪除原有的字段和完整性約束條件等。語法格式一:(增加字段)ALTERTABLE<表名>
ADD<新字段名><數(shù)據(jù)類型>[<大小>][<約束條件>][,……]功能:增加字段或索引2、修改基本表【例】在xs表中增加一個字段,字段名:byxx數(shù)據(jù)類型:文本型字段大小:20。ALTERTABLExsADDbyxxChar(20)【例】在ts表中增加一個由字段isbn和gch組成的唯一索引,索引名:isbngch。ALTERTABLEtsADD
CONSTRAINTisbngchUNIQUE(isbn,gch)【例】在xs表中增加一個字段,字段名:byxx數(shù)據(jù)類語法格式二:(刪除字段或刪除索引)ALTERTABLE<表名>DROP[<字段名>[,……]][CONSTRAINT<索引名稱>]功能:刪除字段或索引語法格式二:(刪除字段或刪除索引)【例】刪除xs表中的byxx和rxrq字段。ALTERTABLExsDROPbyxx,rxrq【例】刪除ts表中的唯一索引isbngch。ALTERTABLEtsDROPCONSTRAINTisbngch【例】刪除xs表中的byxx和rxrq字段。語法格式三:(修改字段)ALTERTABLE<表名>
ALTER<字段名><數(shù)據(jù)類型>[<大小>]功能:修改字段的數(shù)據(jù)類型、大小和約束條件。使用ALTER語句對表的結(jié)構(gòu)進行修改時,一次只能修改一個字段。思考:
如何對字段重命名?語法格式三:(修改字段)使用ALTER語句對表的結(jié)構(gòu)進行【例】將xs表中xb字段的數(shù)據(jù)類型修改為字符型且只含一個字符。ALTERTABLExsALTERxbChar(1)【例】將ts表中isbn字段的數(shù)據(jù)類型修改為可含20個字符的文本型,且字段不支持空值、是表的主鍵。ALTERTABLEtsALTERisbnChar(20)NotNullPrimaryKey【例】將xs表中xb字段的數(shù)據(jù)類型修改為字符型且只含一個字符3、刪除表刪除表使用DROPTABLE語句。語法格式:DROPTABLE<表名>功能:刪除指定的表說明:基本表一旦刪除,表中的數(shù)據(jù)、索引都將自動被刪除,而建立在此表上的查詢雖然仍然存在,但已無法使用?!纠縿h除數(shù)據(jù)庫中的x
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024影視劇《逆時光》化妝團隊外包協(xié)議
- 3 《鴻門宴》(說課稿)-2024-2025學(xué)年高一語文下學(xué)期同步教學(xué)說課稿專輯(統(tǒng)編版必修下冊)
- 七夕節(jié)的歷史脈絡(luò)
- 科學(xué)探索之門
- 綠色農(nóng)業(yè):致未來
- 塔式起重機造價協(xié)議書(2篇)
- 多人租車協(xié)議書(2篇)
- 專業(yè)化櫥柜工程服務(wù)安裝協(xié)議2024參考資料版B版
- 2025版蟲草養(yǎng)生產(chǎn)品研發(fā)與銷售合作協(xié)議范本3篇
- 2024年設(shè)備購買協(xié)議模板大全實操版版B版
- 天津市部分區(qū)2023-2024學(xué)年六年級上學(xué)期期末數(shù)學(xué)試卷
- 員工年度工作計劃范文
- 洗衣店行業(yè)創(chuàng)業(yè)計劃書
- 醫(yī)院規(guī)劃發(fā)展部社會工作科職責(zé)
- 2024抗菌藥物分級管理及臨床合理應(yīng)用考核試題及答案
- 樁身完整性考試試題及完整答案(包括低應(yīng)變、鉆芯、聲波透射法)
- 儲能系統(tǒng)的應(yīng)急預(yù)案措施
- 大學(xué)生心理健康教育教學(xué)進度計劃表
- 班主任育人故事(通用17篇)
- 類文閱讀:一起長大的玩具(金波)
- 食品公司冷庫崗位風(fēng)險告知卡
評論
0/150
提交評論