版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用第5章查詢2023年1月29日教師:周浪部門(mén):信息工程學(xué)院第5章查詢5.1查詢概述5.2查詢準(zhǔn)則5.3使用向?qū)?chuàng)建查詢5.4選擇查詢P355.5計(jì)算、匯總查詢第5章查詢5.7交叉表概述5.8操作查詢5.9結(jié)構(gòu)化查詢語(yǔ)言SQLP355.6參數(shù)查詢【本章主要掌握的內(nèi)容】查詢的基本概念查詢的功能與分類熟練掌握創(chuàng)建各種類型的查詢結(jié)構(gòu)化查詢語(yǔ)言SQL第5章查詢第一節(jié)查詢概述第5章查詢
在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),常常把數(shù)據(jù)分類,并分別存放在多個(gè)表中,但在使用時(shí)需要檢索一個(gè)或多個(gè)表中符合條件的數(shù)據(jù)。查詢實(shí)際上就是將這些分散的數(shù)據(jù)再集中起來(lái)。xhxmxb1001張三男………………xhkcdhcj10010185………………kcdhkcmc01數(shù)據(jù)庫(kù)應(yīng)用…………學(xué)生表成績(jī)表課程表xmkcmccj張三數(shù)據(jù)庫(kù)應(yīng)用85………………查詢結(jié)果5.1查詢概述查詢是根據(jù)一定的條件,從一個(gè)或多個(gè)表中提取數(shù)據(jù)并進(jìn)行加工處理,返回一個(gè)新的數(shù)據(jù)集合。利用查詢可以實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)計(jì)分析與計(jì)算等操作。查詢結(jié)果可以作為其他查詢、窗體、報(bào)表的數(shù)據(jù)源。查詢是一張“虛表”,是動(dòng)態(tài)的數(shù)據(jù)集合。5.1.1查詢的概念選擇字段:在查詢的結(jié)果中可以只含有表中的部分字段。5.1.2查詢的功能選擇記錄:在查詢的結(jié)果中,只含有符合指定條件的記錄。查詢主要有以下幾個(gè)方面的功能1.選擇表中的字段和記錄對(duì)符合條件的記錄進(jìn)行更新操作,主要包括添加記錄、修改記錄和刪除記錄等操作。利用查詢可以對(duì)數(shù)據(jù)進(jìn)行一系列的統(tǒng)計(jì)和計(jì)算。5.1.2查詢的功能2.更新記錄3.統(tǒng)計(jì)和計(jì)算5.1.2查詢的功能可以利用查詢得到的結(jié)果建立一個(gè)新表。查詢的運(yùn)行結(jié)果可以作為窗體和報(bào)表的數(shù)據(jù)源,也可以作為其他查詢的數(shù)據(jù)源。4.產(chǎn)生新表5.為其他數(shù)據(jù)庫(kù)對(duì)象提供數(shù)據(jù)源選擇查詢參數(shù)查詢交叉表查詢操作查詢
SQL查詢查詢的類型☆刪除查詢 ☆更新查詢☆追加查詢☆生成表查詢☆聯(lián)合查詢 ☆傳遞查詢☆數(shù)據(jù)定義查詢☆子查詢5.1.3查詢的類型在Access2010中,可以創(chuàng)建5種類型的查詢:1、選擇查詢是根據(jù)指定的條件,從一個(gè)或多個(gè)表中獲取數(shù)據(jù)并顯示結(jié)果。選擇查詢可以對(duì)記錄進(jìn)行分組,并且對(duì)分組的記錄進(jìn)行求和、計(jì)數(shù)、求平均值以及其它類型的計(jì)算。選擇查詢產(chǎn)生的結(jié)果是一個(gè)動(dòng)態(tài)的記錄集,不會(huì)改變?cè)磾?shù)據(jù)表中的數(shù)據(jù)。5.1.3查詢的類型2、參數(shù)查詢是一種特殊的選擇查詢,即根據(jù)用戶輸入的參數(shù)作為查詢的條件。輸入不同的參數(shù),將得到不同的結(jié)果。執(zhí)行參數(shù)查詢時(shí),將會(huì)顯示一個(gè)對(duì)話框,以提示輸入?yún)?shù)信息。參數(shù)查詢可作為窗體和報(bào)表的基礎(chǔ)。5.1.3查詢的類型3、交叉表查詢交叉表查詢是對(duì)基表或查詢中的數(shù)據(jù)進(jìn)行計(jì)算和重構(gòu),以方便分析數(shù)據(jù)。能夠匯總數(shù)字型字段的值,將匯總計(jì)算的結(jié)果顯示在行與列交叉的單元格中。5.1.3查詢的類型4、操作查詢查詢除了按指定的條件從數(shù)據(jù)源中檢索記錄外,還可以對(duì)檢索的記錄進(jìn)行編輯操作。操作查詢可以分為:刪除查詢從一個(gè)或多個(gè)表中刪除一組符合條件的記錄。更新查詢對(duì)一個(gè)或多個(gè)表中的一組符合條件的記錄進(jìn)行批量修改某字段的值。5.1.3查詢的類型追加查詢將一個(gè)或多個(gè)表中的一組符合條件的記錄添加到另一個(gè)表的末尾。生成表查詢將查詢的結(jié)果轉(zhuǎn)存為新表。5.1.3查詢的類型5、SQL查詢SQL(StructuredQueryLanguage)是一種結(jié)構(gòu)化查詢語(yǔ)言,是數(shù)據(jù)庫(kù)操作的工業(yè)化標(biāo)準(zhǔn)語(yǔ)言,使用SQL語(yǔ)言可以對(duì)任何數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行操作。所謂的SQL查詢就是通過(guò)SQL語(yǔ)言來(lái)創(chuàng)建的查詢。在查詢?cè)O(shè)計(jì)視圖中創(chuàng)建任何一個(gè)查詢時(shí),系統(tǒng)都將在后臺(tái)構(gòu)建等效的SQL語(yǔ)句。大多數(shù)查詢功能也都可以直接使用SQL語(yǔ)句來(lái)實(shí)現(xiàn)。有一些無(wú)法在查詢?cè)O(shè)計(jì)視圖中創(chuàng)建的SQL查詢稱為“SQL特定查詢”。5.1.3查詢的類型SQL特定查詢包括:聯(lián)合查詢
聯(lián)合查詢是將多個(gè)表或查詢中的字段合并到查詢結(jié)果的一個(gè)字段中。
使用聯(lián)合查詢可以合并多個(gè)表中的數(shù)據(jù),并可以根據(jù)聯(lián)合查詢生成一個(gè)新表。傳遞查詢
傳遞查詢可以直接將命令發(fā)送到ODBC數(shù)據(jù)庫(kù)服務(wù)器中,而不需要事先建立鏈接。
利用傳遞查詢可以直接使用其它數(shù)據(jù)庫(kù)管理系統(tǒng)中的表。P1545.1.3查詢的類型數(shù)據(jù)定義查詢利用數(shù)據(jù)定義查詢可以創(chuàng)建、刪除或更改表,或者在數(shù)據(jù)庫(kù)表中創(chuàng)建索引。子查詢是包含在另一個(gè)查詢之內(nèi)的SQL-SELECT語(yǔ)句,即嵌套在查詢中的查詢。5.1.3查詢的類型幾點(diǎn)說(shuō)明:創(chuàng)建傳遞查詢、數(shù)據(jù)定義查詢和聯(lián)合查詢不能在設(shè)計(jì)視圖中創(chuàng)建,必須直接在SQL視圖中輸入相應(yīng)的SQL語(yǔ)句。創(chuàng)建子查詢可以直接在SQL視圖中輸入相應(yīng)的SQL語(yǔ)句,或在設(shè)計(jì)視圖的【字段】或【條件】行中輸入SQL語(yǔ)句,即將子查詢作為查詢的條件。5.1.3查詢的類型查詢視圖
查詢有5種視圖,分別是:
設(shè)計(jì)視圖
數(shù)據(jù)表視圖
SQL視圖
數(shù)據(jù)透視表視圖
數(shù)據(jù)透視圖視圖5.1.4查詢視圖設(shè)計(jì)視圖
即為查詢?cè)O(shè)計(jì)器,通過(guò)該視圖可能創(chuàng)建除SQL之外的各種類型的查詢。數(shù)據(jù)表視圖
是查詢的數(shù)據(jù)瀏覽器,用于查看查詢運(yùn)行的結(jié)果。SQL視圖
是查看和編輯SQL語(yǔ)句的窗口,用于查看和編輯用查詢?cè)O(shè)計(jì)器創(chuàng)建的查詢所產(chǎn)生的SQL語(yǔ)句。數(shù)據(jù)透視表視圖和數(shù)據(jù)圖視圖
在此兩種視圖中,可以根據(jù)需要生成數(shù)據(jù)透視表或數(shù)據(jù)透視圖,從而得到直觀的數(shù)據(jù)分析結(jié)果。5.1.4查詢視圖創(chuàng)建查詢的方法(界面方法)創(chuàng)建查詢(界面方法)有2種方法:
使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢
使用查詢向?qū)?chuàng)建查詢5.1查詢的概述運(yùn)行查詢
查詢創(chuàng)建完成后,將保存于數(shù)據(jù)庫(kù)中。運(yùn)行查詢后,才能看到查詢的結(jié)果。通過(guò)以下方法之一,可以運(yùn)行查詢:
▲在查詢的設(shè)計(jì)視圖下,單擊【查詢工具/設(shè)計(jì)】選項(xiàng)卡【結(jié)果】組中的【運(yùn)行】按鈕
▲在查詢的設(shè)計(jì)視圖下,單擊【查詢工具/設(shè)計(jì)】選項(xiàng)卡【結(jié)果】組中的【視圖】按鈕
▲右擊查詢的設(shè)計(jì)視圖標(biāo)題欄,并在快捷菜單中選擇【數(shù)據(jù)表視圖】命令
▲雙擊導(dǎo)航窗口中要運(yùn)行的查詢
▲右擊導(dǎo)航窗口中要運(yùn)行的查詢,并在快捷菜單中選擇【打開(kāi)】命令5.1查詢的概述第二節(jié)查詢準(zhǔn)則第5章查詢5.2.1
Access常量Access常量就是指在程序運(yùn)行過(guò)程中固定不變的量。
有數(shù)字型常量、文本型常量、日期/時(shí)間型常量和是/否型常量。Access常量的表示方法如下:數(shù)字型常量分為整數(shù)和實(shí)數(shù),其表示方法和數(shù)學(xué)中的表示方法相似。文本型常量用英文雙引號(hào)作為定界符,如"江蘇南京"、"男"。日期/時(shí)間型常量用“#”作為定界符,如2015年3月16日可表示成#2015-3-16#或#2015/3/16#。是/否型常量有兩個(gè),用True、Yes或-1表示“是”(邏輯真),用False、No或0表示“否”(邏輯假)。5.2.2
查詢條件中使用的運(yùn)算符Access的運(yùn)算符是構(gòu)成查詢條件的基本元素。算術(shù)運(yùn)算符:其優(yōu)先順序和數(shù)學(xué)中的算術(shù)運(yùn)算規(guī)則完全相同。關(guān)系運(yùn)算符:用于表示兩個(gè)操作數(shù)之間的比較,其結(jié)果是邏輯值。邏輯運(yùn)算符:用于將邏輯型數(shù)據(jù)連接起來(lái),以表示更復(fù)雜的條件,其結(jié)果仍然是邏輯值。字符運(yùn)算符:可以將兩個(gè)字符串連接起來(lái)得到一個(gè)新的字符串。特殊運(yùn)算符:數(shù)據(jù)庫(kù)操作中,還經(jīng)常用到一組特殊的運(yùn)算符,其結(jié)果為邏輯值。算術(shù)運(yùn)算符【例】125+100/5^26*2/(2+1)[單價(jià)]*0.8算術(shù)運(yùn)算符說(shuō)明算術(shù)運(yùn)算符說(shuō)明+加/除-減^乘方*乘5.2.2
查詢條件中使用的運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符說(shuō)明關(guān)系運(yùn)算符說(shuō)明=等于<>不等于<小于<=小于等于>大于>=大于等于☆關(guān)系運(yùn)算符主要用于數(shù)據(jù)之間的比較,其運(yùn)算的結(jié)果是一個(gè)邏輯值:True或False?!罡麝P(guān)系運(yùn)算符的運(yùn)算級(jí)別相同?!纠?>8 xb="男"5+2<=5*2 xm>="張"
工作日期<出生日期5.2.2
查詢條件中使用的運(yùn)算符邏輯運(yùn)算符說(shuō)明示例運(yùn)算結(jié)果Not邏輯非。當(dāng)Not連接的表達(dá)式為真時(shí),整個(gè)表達(dá)式的值為假,否則為真Not(16<14)真And邏輯與。當(dāng)And兩邊的表達(dá)式都為真時(shí),整個(gè)表達(dá)式的值為真,否則為假6>=6And15<28假OR邏輯或。只要Or兩邊的表達(dá)式其中之一為真,整個(gè)表達(dá)式的值為真,否則為假10>=10Or200<100真表5-1邏輯運(yùn)算符及其含義5.2.2
查詢條件中使用的運(yùn)算符☆邏輯運(yùn)算符主要用于多個(gè)條件的判斷,其運(yùn)算結(jié)果仍然是一個(gè)邏輯值?!钸壿嬤\(yùn)算符運(yùn)算級(jí)別依次為:Not、And、Or
邏輯運(yùn)算符的真值表如下所示:XYNotXXAndYXOrYTrueTrueTrueFalseFalseTrueFalseFalseFalseTrueTrueFalseFalseTrueTrueFalseTrueTrueFalseFalse5.2.2
查詢條件中使用的運(yùn)算符字符運(yùn)算符說(shuō)明示例運(yùn)算結(jié)果+將兩個(gè)字符串連接起來(lái)形成一個(gè)新字符串,要求操作數(shù)必須是字符"南京"+"財(cái)大"南京財(cái)大&操作數(shù)可以是字符、數(shù)值或日期/時(shí)間型數(shù)據(jù);當(dāng)操作數(shù)不是字符時(shí),先轉(zhuǎn)換為字符,再進(jìn)行連接運(yùn)算"南京"&2015123&4*5南京201512320表5-2字符運(yùn)算符及含義5.2.2
查詢條件中使用的運(yùn)算符【例】"ABC"+"123""ABC"&123.4#2015-10-01#&12"123"+50.4"ABC"+123.4#2015-10-01#+20100+200100&200ABC123ABC123.42015-10-0112173.4出錯(cuò)2015-10-213001002005.2.2
查詢條件中使用的運(yùn)算符特殊運(yùn)算符說(shuō)明示例含義In判斷左側(cè)表達(dá)式的值是否在右側(cè)的各個(gè)值中。如果在,結(jié)果為T(mén)rue,否則為FalseIn("張芳","陳偉")姓名為張芳或陳偉BetweenAAndB判斷左側(cè)表達(dá)式的值是否介于A和B之間(包括A和B,A≤B)Between60And8060~80之間Like判斷左側(cè)表達(dá)式的值是否符合右指定的字符模式。在所定義的字符模式中,用“?”表示該位置可匹配任何一個(gè)字符;用“*”表示該位置可匹配任何多個(gè)字符;用“#”表示該位置可匹配一個(gè)數(shù)字;用方括號(hào)描述一個(gè)范圍,用于可匹配的字符范圍Like"王?"
Like"張*"Like"#系"
Like"[AC]班"姓王且姓名只有2個(gè)字的所有姓張的0~9之間任一數(shù)字字符的系A(chǔ)班或C班Is與Null一起使用確定字段值是否為空值IsNull
IsNotNull用于指定一個(gè)字段為空用于指定一個(gè)字段為非空表5-3特殊運(yùn)算符及含義5.2.2
查詢條件中使用的運(yùn)算符特殊運(yùn)算符與比較運(yùn)算相關(guān),也是根據(jù)是否符合運(yùn)算符的限定條件返回邏輯值True或False。幾點(diǎn)說(shuō)明:☆所謂的Null是指該字段中沒(méi)有輸入任何值?!町?dāng)在文本字段中輸入了空字符串后,表中也無(wú)任何顯示,但該字段并不是Null值?!預(yù)ccess提供的通配符有:
? 表示任意一個(gè)字符
* 表示任意多個(gè)字符
# 表示任意一個(gè)數(shù)字位
[字符表] 表示在字符表中的單一字符
[!字符表] 表示不在字符表中的單一字符方括號(hào)內(nèi)字符表中的各個(gè)字符間用“,”隔開(kāi)字符表可以設(shè)置一個(gè)范圍,用連字符“-”分隔范圍的下界和上界。如:[1-5]、[!a-d]5.2.2
查詢條件中使用的運(yùn)算符
在各類運(yùn)算符混合運(yùn)算的表達(dá)式中,各運(yùn)算符的運(yùn)算級(jí)別有高低之分:字符串運(yùn)算符關(guān)系運(yùn)算符【例】
NOT5>12/6AND"A"+"B"<"A"+"C"NOT5>2AND"AB"<"AC"NOT.T.AND.T..F.AND.T..F.數(shù)值運(yùn)算符邏輯運(yùn)算符5.2.2
查詢條件中使用的運(yùn)算符函數(shù)功能示例函數(shù)值Round(數(shù)值表達(dá)式1,數(shù)值表達(dá)式2)對(duì)數(shù)值表達(dá)式1的值按數(shù)值表達(dá)式2指定的位數(shù)四舍五入Round(2.58,1)Round(2.58,0)2.63表5-4常用數(shù)值函數(shù)5.2.3
查詢條件中使用的常用函數(shù)函數(shù)功能示例函數(shù)值Left(字符表達(dá)式,數(shù)值表達(dá)式)按數(shù)值表達(dá)式值取字符表達(dá)式值的左邊子字符串Left("江蘇南京",2)"江蘇"Right(字符表達(dá)式,數(shù)值表達(dá)式)按數(shù)值表達(dá)式值取字符表達(dá)式值的右邊子字符串Right("abcdefgh",2)"gh"Mid(字符表達(dá)式,數(shù)值表達(dá)式1[,數(shù)值表達(dá)式2])從字符表達(dá)式值中返回以數(shù)值表達(dá)式1規(guī)定起點(diǎn)、以數(shù)值表達(dá)式2指定長(zhǎng)度的字符串Mid("abc"&"defg",4,3)"def"表5-5常用字符函數(shù)5.2.3
查詢條件中使用的常用函數(shù)【例】
Left("ABCD中國(guó)",8-5)
ABC
Left("ABCD中國(guó)",0)
(空字符串)
Left("ABCD中國(guó)",8)
ABCD中國(guó)
Right("ABCD中國(guó)",4)
CD中國(guó)
Right("ABCD中國(guó)",2.4)
中國(guó)字符串截取函數(shù)5.2.3
查詢條件中使用的常用函數(shù)【例】
Mid("ABCD中國(guó)",3,8)
CD中國(guó)
Mid("ABCD中國(guó)",12,2)
(空字符串)
Mid("ABCD中國(guó)",0,4)
出錯(cuò)
Mid("ABCD中國(guó)",3,-1)
出錯(cuò)字符串截取函數(shù)5.2.3
查詢條件中使用的常用函數(shù)函數(shù)功能示例函數(shù)值Date()返回當(dāng)前系統(tǒng)日期Time()返回當(dāng)前系統(tǒng)時(shí)間Now()返回當(dāng)前系統(tǒng)日期和系統(tǒng)時(shí)間Year(日期表達(dá)式)返回日期表達(dá)式對(duì)應(yīng)的年份值Year(#2015-3-16#)2015Month(日期表達(dá)式)返回日期表達(dá)式對(duì)應(yīng)的月份值Month(#2015-3-16#)3Day(日期表達(dá)式)返回日期表達(dá)式對(duì)應(yīng)的日期值Day(#2015-3-16#)16Weekday(日期表達(dá)式)返回日期表達(dá)式對(duì)應(yīng)的星期值Weekday(#2015-3-16#)2DateSerial(數(shù)值表達(dá)式1,數(shù)值表達(dá)式2,數(shù)值表達(dá)式3)返回指定年月日的日期,其中數(shù)值表達(dá)式1的值為年,數(shù)值表達(dá)式2的值為月,數(shù)值表達(dá)式3的值為日。DateSerial(2015,7-2,4)表5-6常用日期時(shí)間函數(shù)5.2.3
查詢條件中使用的常用函數(shù)【例】
Year(#2015-10-01#)
2014Year(Null)
NullYear("Oct,15")
(系統(tǒng)日期的年份)
Month("2015-09-20")
9Day(3-2)
31Access將1899年12月31日作為數(shù)值1。日期函數(shù)5.2.3
查詢條件中使用的常用函數(shù)函數(shù)功能示例函數(shù)值Sum(表達(dá)式)返回表達(dá)式對(duì)應(yīng)的數(shù)值型字段的列值的總和Sum(成績(jī))計(jì)算成績(jī)字段的總和Avg(表達(dá)式)返回表達(dá)式對(duì)應(yīng)的數(shù)值型字段的列值的平均值。忽略Null值A(chǔ)vg(成績(jī))計(jì)算成績(jī)字段的平均分Count(表達(dá)式)
Count(*)返回表達(dá)式對(duì)應(yīng)的數(shù)值型字段中值的數(shù)目,忽略Null值返回表或組中所有行的數(shù)目,Null值被計(jì)算在內(nèi)Count(成績(jī))統(tǒng)計(jì)有成績(jī)的學(xué)生人數(shù)Max(表達(dá)式)返回表達(dá)式對(duì)應(yīng)字段列中的最大值。忽略Null值Max(成績(jī))返回成績(jī)字段的最大值Min(表達(dá)式)返回表達(dá)式對(duì)應(yīng)字段列中的最小值。忽略Null值Min(成績(jī))返回成績(jī)字段的最小值表5-7常用統(tǒng)計(jì)函數(shù)5.2.3
查詢條件中使用的常用函數(shù)函數(shù)功能示例函數(shù)值IIf(邏輯表達(dá)式,表達(dá)式1,表達(dá)式2)若邏輯表達(dá)式值為真,返回表達(dá)式1的值,否則返回表達(dá)式2的值IIf(3>1,"是","否")
IIf(Val([開(kāi)課學(xué)期])Mod2=0,"上","下")是若開(kāi)課學(xué)期為偶數(shù),返回“上”,否則返回“下”表5-8條件函數(shù)5.2.3
查詢條件中使用的常用函數(shù)【例】根據(jù)成績(jī)輸出相應(yīng)的分?jǐn)?shù)等級(jí):不及格、及格和優(yōu)秀。IIf(cj.cj>=90,
"優(yōu)秀",IIf(cj.cj<60,"不及格","及格"))在實(shí)際的查詢中,經(jīng)常需要查詢滿足某個(gè)條件的記錄。帶條件的查詢需要通過(guò)設(shè)置查詢條件來(lái)實(shí)現(xiàn)。查詢條件是運(yùn)算符、常量、字段值、函數(shù)以及字段名和屬性等任意組合的關(guān)系表達(dá)式,其運(yùn)算結(jié)果是一個(gè)邏輯值。5.2.4
查詢中條件的設(shè)置【例】用文字表示使以下條件表達(dá)式為“真”的條件:學(xué)生表中:①
性別="男"And系名="信息工程學(xué)院"信息工程學(xué)院中所有的男生②
性別="男"Or系名="信息工程學(xué)院"所有的男生以及信息工程學(xué)院中所有的學(xué)生教師表中:③
性別="女"And職稱="教授"Or民族<>"漢族"女性教授以及非漢族教師④
性別=
"女"And(職稱="教授"Or民族<>"漢族")女性教授以及女性非漢族教師5.2.4
查詢中條件的設(shè)置5.2.4
查詢中條件的設(shè)置(1)在查詢條件中,字段名必須用方括號(hào)括起來(lái),而且在引用字段時(shí),字段名和數(shù)據(jù)類型應(yīng)遵循字段定義時(shí)的規(guī)則,否則會(huì)出現(xiàn)數(shù)據(jù)類型不匹配的錯(cuò)誤。(2)查詢職稱為“教授”或“副教授”教師記錄的查詢條件可以表示為:
="教授"Or="副教授"但為了輸入方便,Access允許在表達(dá)式中省略“=”,可以直接表示為:
"教授"Or"副教授"輸入字符時(shí),如果沒(méi)有加雙引號(hào),系統(tǒng)會(huì)為字符型數(shù)據(jù)自動(dòng)加雙引號(hào)。注意第三節(jié)使用向?qū)?chuàng)建查詢第5章查詢
建立查詢最簡(jiǎn)單的方法就是利用Access的查詢向?qū)?lái)創(chuàng)建查詢。Access2010提供了4種類型的查詢向?qū)В?/p>
簡(jiǎn)單查詢向?qū)?/p>
交叉表查詢向?qū)?/p>
查找重復(fù)項(xiàng)查詢向?qū)?/p>
查找不匹配項(xiàng)查詢向?qū)?.3使用向?qū)?chuàng)建查詢【例5-1】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,使用簡(jiǎn)單查詢向?qū)Р樵児べY的基本信息。(P109)★操作步驟:①在【創(chuàng)建】選項(xiàng)卡的【查詢】組中單擊【查詢向?qū)А堪粹o,打開(kāi)【新建查詢】窗口②在【新建查詢】窗口中選擇需要?jiǎng)?chuàng)建查詢向?qū)Б鄹鶕?jù)系統(tǒng)的引導(dǎo)選擇參數(shù)或輸入相應(yīng)的信息選擇數(shù)據(jù)源(表或查詢)及字段選擇明細(xì)查詢或匯總查詢
明細(xì)查詢:顯示每條記錄的每個(gè)字段
匯總查詢:對(duì)數(shù)值字段進(jìn)行匯總統(tǒng)計(jì)④保存查詢5.3.1簡(jiǎn)單查詢向?qū)褂貌樵兿驅(qū)?chuàng)建查詢幾點(diǎn)說(shuō)明:
不能對(duì)記錄進(jìn)行篩選和排序
不能改變查詢中字段的順序
允許對(duì)數(shù)值字段進(jìn)行匯總統(tǒng)計(jì)
允許按指定日期范圍分組匯總
匯總查詢必須包含且只能包含匯總統(tǒng)計(jì)的數(shù)值型字段和用于匯總依據(jù)的分組字段。其它字段的添加將無(wú)法得到期望的匯總效果5.3.1簡(jiǎn)單查詢向?qū)褂孟驅(qū)?chuàng)建交叉表查詢【例5-2】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,使用交叉表查詢向?qū)Ыy(tǒng)計(jì)各院系的男女生人數(shù)和總?cè)藬?shù)。(P111)★操作步驟:①單擊【創(chuàng)建】選項(xiàng)卡【查詢】組中的【查詢向?qū)А堪粹o,并在對(duì)話框中選擇【交叉表查詢向?qū)А竣诎聪驅(qū)崾疽来未_定數(shù)據(jù)源、行字段、列字段、匯總項(xiàng)及是否包括各行小計(jì)③為查詢命名并保存所設(shè)計(jì)的查詢5.3.2交叉表查詢向?qū)RANSFORMCount(學(xué)生.學(xué)號(hào))AS學(xué)號(hào)之計(jì)數(shù)SELECT學(xué)生.院系代碼,Count(學(xué)生.學(xué)號(hào))AS[總計(jì)學(xué)號(hào)]FROM學(xué)生GROUPBY學(xué)生.院系代碼PIVOT
學(xué)生.性別;5.3.2交叉表查詢向?qū)?duì)應(yīng)的SQL語(yǔ)句為:查找重復(fù)項(xiàng)查詢向?qū)?/p>
數(shù)據(jù)表中除設(shè)置為主鍵的字段不能有重復(fù)的值外,其它的各個(gè)字段均允許有重復(fù)的值。查找重復(fù)項(xiàng)查詢即從表中查找具有相同字段值的記錄。5.3.3查找重復(fù)項(xiàng)查詢向?qū)А纠?-3】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)的“學(xué)生”表中,使用“查找重復(fù)項(xiàng)查詢”向?qū)Р檎彝麑W(xué)生的“姓名”、“學(xué)號(hào)”和“性別”。
(P112)★操作步驟:①打開(kāi)查找重復(fù)項(xiàng)查詢向?qū)В▌?chuàng)建新查詢)②選擇數(shù)據(jù)源③選取設(shè)為重復(fù)值的字段④可以選擇另外查詢的字段5.3.3查找重復(fù)項(xiàng)查詢向?qū)Р檎也黄ヅ漤?xiàng)查詢向?qū)?/p>
不匹配項(xiàng)查詢就是在一個(gè)表中搜索另一個(gè)表中沒(méi)有相關(guān)記錄的行?!纠?-4】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,使用“查找不匹配項(xiàng)查詢向?qū)А眲?chuàng)建查詢,查找哪些課程沒(méi)有學(xué)生選修的課程記錄,要求顯示“課程代碼”、“課程名稱”和“學(xué)期”。(P114)5.3.4查找不匹配項(xiàng)查詢向?qū)Р檎也黄ヅ漤?xiàng)查詢向?qū)А锊僮鞑襟E:①打開(kāi)查找不匹配項(xiàng)查詢向?qū)В▌?chuàng)建新查詢)②選擇參考表③選擇不匹配表④選擇兩表的聯(lián)接字段5.3.4查找不匹配項(xiàng)查詢向?qū)У谒墓?jié)選擇查詢第5章查詢
選擇查詢是最常用的查詢類型,它是根據(jù)用戶所指定的查詢條件,從一個(gè)或多個(gè)數(shù)據(jù)源表中獲取數(shù)據(jù)并顯示結(jié)果。
選擇查詢可以對(duì)記錄進(jìn)行分組,并進(jìn)行各種統(tǒng)計(jì),如:求和、計(jì)數(shù)、求平均值等。
選擇查詢產(chǎn)生的結(jié)果是一個(gè)動(dòng)態(tài)的記錄集,不會(huì)改變數(shù)據(jù)源中的數(shù)據(jù)。5.4選擇查詢5.4選擇查詢
選擇查詢是最常用的查詢類型。創(chuàng)建選擇查詢通常有兩種方法:使用查詢向?qū)Щ虿樵冊(cè)O(shè)計(jì)視圖。查詢向?qū)軌蛴行У刂笇?dǎo)操作者順利創(chuàng)建查詢,但它只能創(chuàng)建不帶條件的查詢,具體的創(chuàng)建方法見(jiàn)5.3節(jié)。而對(duì)于有條件的查詢,則需要使用“設(shè)計(jì)視圖”來(lái)完成。使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢
使用查詢?cè)O(shè)計(jì)視圖創(chuàng)建查詢首先要打開(kāi)查詢的設(shè)計(jì)視圖窗口,然后根據(jù)需要進(jìn)行查詢的定義?!锊僮鞑襟E:①打開(kāi)數(shù)據(jù)庫(kù)②在【創(chuàng)建】選項(xiàng)卡的【查詢】組中單擊【查詢?cè)O(shè)計(jì)】按鈕,打開(kāi)查詢?cè)O(shè)計(jì)器窗口③在查詢?cè)O(shè)計(jì)器窗口中定義查詢④保存查詢5.4.1查詢的設(shè)計(jì)視圖
查詢的設(shè)計(jì)視圖分為上下兩部分:上半部分用于顯示查詢的數(shù)據(jù)源(包括它們之間的關(guān)系)下半部分是定義查詢的表格,表格的列對(duì)應(yīng)查詢中的一個(gè)字段;行對(duì)應(yīng)字段的屬性或要求?!钭侄?查詢結(jié)果中所顯示的字段☆表
查詢數(shù)據(jù)源,即字段的來(lái)源☆排序 查詢結(jié)果中相應(yīng)字段的排序方式☆顯示 設(shè)置在數(shù)據(jù)表視圖中是否顯示該字段☆條件
查詢條件(同行之間為“與”關(guān)系)☆或
查詢條件(不同行之間為“或”關(guān)系)5.4.1查詢的設(shè)計(jì)視圖5.4.1查詢的設(shè)計(jì)視圖查詢的“設(shè)計(jì)視圖”窗口基于單數(shù)據(jù)源表的查詢
設(shè)計(jì)單數(shù)據(jù)源表查詢時(shí),主要的操作是:
確定查詢的數(shù)據(jù)源(表或已建立的查詢)
確定查詢中要顯示的字段或表達(dá)式5.4.2基于單張表的選擇查詢【例】查看學(xué)生表中所有學(xué)生的信息,要求顯示表中所有字段。(學(xué)生表)★操作步驟:①打開(kāi)查詢的設(shè)計(jì)視圖②在打開(kāi)窗口的上半部添加數(shù)據(jù)源表③在打開(kāi)窗口的下半部添加查詢中要顯示的字段④保存已創(chuàng)建的查詢5.4.2基于單張表的選擇查詢SELECT學(xué)生表.*
FROM
學(xué)生表5.4.2基于單張表的選擇查詢▲表中的“*”表示所有字段?!梢栽谙虏看案裰刑砑踊騽h除字段?!髽?biāo)拖動(dòng)下部窗格中的字段,可以改變字段的顯示位置。5.4.2基于單張表的選擇查詢【例5-5】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)的“學(xué)生”表中,查找1993所出生的江蘇南京籍女生。查詢的輸出字段為“學(xué)號(hào)”、“姓名”、“性別”、“籍貫”和“出生日期”,所建查詢保存為“1993年出生的江蘇南京籍女生”。(P116)基于單數(shù)據(jù)源表的查詢5.4.2基于單張表的選擇查詢查詢的設(shè)計(jì)視圖5.4.2基于單張表的選擇查詢SELECT學(xué)生.學(xué)號(hào),學(xué)生.姓名,學(xué)生.性別,學(xué)生.籍貫,學(xué)生.出生日期FROM學(xué)生WHERE
(((學(xué)生.性別)="女")AND
((學(xué)生.籍貫)="江蘇南京")
AND
((學(xué)生.出生日期)Between#1/1/1993#And#12/31/1993#));對(duì)應(yīng)的SQL語(yǔ)句為:在查詢的設(shè)計(jì)視圖中,查詢條件應(yīng)使用查詢定義窗口中的條件選項(xiàng)來(lái)設(shè)置,即在相應(yīng)的字段的【條件】文本框中輸入條件?!鴹l件表達(dá)式中通常省略字段名?!卸鄠€(gè)條件,且涉及不同的字段時(shí),則分別設(shè)置相應(yīng)字段的條件?!械臈l件之間是“與”關(guān)系;不同行的條件之間是“或”關(guān)系5.4.2基于單張表的選擇查詢
如果查詢的數(shù)據(jù)源是兩個(gè)或兩個(gè)以上的表(或查詢),則在設(shè)計(jì)查詢時(shí)需要?jiǎng)?chuàng)建數(shù)據(jù)源之間的連接關(guān)系。
如果相關(guān)聯(lián)的表已經(jīng)按照公共字段創(chuàng)建了索引,則在查詢視圖中可以看到作為數(shù)據(jù)源的表(或查詢)之間已經(jīng)通過(guò)相關(guān)字段建立了連接。
如果相關(guān)聯(lián)的表未按照公共字段創(chuàng)建索引,則需要在相關(guān)表之間建立連接。5.4.3基于多張表的選擇查詢
Access有3種連接類型:
內(nèi)連接
左連接
右連接5.4.3基于多張表的選擇查詢內(nèi)連接(INNERJOIN)
只包含來(lái)自兩張表的聯(lián)接字段相等的記錄。Xs.xh=Cj.xh5.4.3基于多張表的選擇查詢左連接(LEFTJOIN)
包括左表中所有記錄和右表中聯(lián)接字段相等的記錄。Xs.xh=Cj.xh5.4.3基于多張表的選擇查詢右連接包括右表中所有記錄和左表中聯(lián)接字段相等的記錄。Xs.xh=Cj.xh5.4.3基于多張表的選擇查詢注意:如果進(jìn)行多表查詢時(shí),所使用的表或查詢之間沒(méi)有建立連接關(guān)系,則查詢將以笛卡爾積的形式,即左表中的每一條記錄均與右表所有記錄合并,形成一條記錄。也就是說(shuō),會(huì)在查詢結(jié)果中產(chǎn)生大量的數(shù)據(jù),而這樣的結(jié)果是沒(méi)有任何意義的。5.4.3基于多張表的選擇查詢雙擊表的關(guān)系連線可以編輯表之間的聯(lián)接屬性,包括:聯(lián)接的字段和連接的類型。內(nèi)連接左連接右連接5.4.3基于多張表的選擇查詢☆只包括兩個(gè)表中聯(lián)接字段相等的行(內(nèi)連接,系統(tǒng)的默認(rèn)選擇)(以學(xué)生表和成績(jī)表為例查看不同聯(lián)接類型的效果)SELECT學(xué)生表.學(xué)號(hào),學(xué)生表.姓名,成績(jī)表.課程號(hào),成績(jī)表.成績(jī)FROM學(xué)生表INNERJOIN成績(jī)表ON
學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào);5.4.3基于多張表的選擇查詢☆包括左表中的所有記錄和右表中聯(lián)接字段相等的那些記錄(左連接)SELECT學(xué)生表.學(xué)號(hào),學(xué)生表.姓名,成績(jī)表.課程號(hào),成績(jī)表.成績(jī)FROM學(xué)生表LEFTJOIN成績(jī)表ON
學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào);5.4.3基于多張表的選擇查詢☆包括右表中的所有記錄和左表中聯(lián)接字段相等的那些記錄(右連接)SELECT學(xué)生表.學(xué)號(hào),學(xué)生表.姓名,成績(jī)表.課程號(hào),成績(jī)表.成績(jī)FROM學(xué)生表RIGHTJOIN成績(jī)表ON
學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào);5.4.3基于多張表的選擇查詢【例5-6】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,基于“學(xué)生”表、“課程”表和“成績(jī)”表查詢江蘇籍每名學(xué)生的大學(xué)英語(yǔ)成績(jī),要求輸出字段為“學(xué)號(hào)”、“姓名”、“課程名稱”和“成績(jī)”,所建查詢保存為“江蘇籍學(xué)生大學(xué)英語(yǔ)的成績(jī)”。
(P118)(學(xué)生表、課程表和成績(jī)表)5.4.3基于多張表的選擇查詢基于多張表的選擇查詢★分析:這是一個(gè)涉及多個(gè)數(shù)據(jù)源的查詢“學(xué)號(hào)”和“姓名”來(lái)自于“學(xué)生表”,且通過(guò)“學(xué)號(hào)”字段與“成績(jī)表”相關(guān)聯(lián)“課程名稱”來(lái)自于“課程表”,且通過(guò)“課程代碼”字段與“成績(jī)表”相關(guān)聯(lián)“成績(jī)”來(lái)自于“成績(jī)表”5.4.3基于多張表的選擇查詢5.4.3基于多張表的選擇查詢基于多張表的查詢?cè)O(shè)計(jì)視圖SELECT
學(xué)生表.學(xué)號(hào),學(xué)生表.姓名,課程表.課程名稱,成績(jī)表.成績(jī)FROM
學(xué)生表INNERJOIN(課程表INNERJOIN成績(jī)表ON
課程表.課程代碼=成績(jī)表.課程號(hào))ON
學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào);5.4.3基于多張表的選擇查詢對(duì)應(yīng)的SQL語(yǔ)句為:5.4.3基于多張表的選擇查詢【例5-7】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,基于“學(xué)生”表、“課程”表和“成績(jī)”表查詢學(xué)生學(xué)號(hào)的前4位分別是“1107”或“1108”學(xué)生的大學(xué)英語(yǔ)和計(jì)算機(jī)應(yīng)用基礎(chǔ)的成績(jī),要求輸出字段為“學(xué)號(hào)”、“姓名”、“課程名稱”和“成績(jī)”,所建查詢保存為“部分學(xué)生的大學(xué)英語(yǔ)和計(jì)算機(jī)應(yīng)用基礎(chǔ)的選課成績(jī)”。(P120)5.4.3基于多張表的選擇查詢基于多張表的查詢?cè)O(shè)計(jì)視圖5.4.3基于多張表的選擇查詢SELECT
學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名稱,成績(jī).成績(jī)FROM課程INNERJOIN(學(xué)生INNERJOIN成績(jī)ON
學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào))ON
課程.課程代碼=成績(jī).課程號(hào)WHERE(((學(xué)生.學(xué)號(hào))Like"110[78]*")AND((課程.課程名稱)="大學(xué)英語(yǔ)"))OR(((學(xué)生.學(xué)號(hào))Like"110[78]*")AND((課程.課程名稱)="計(jì)算機(jī)應(yīng)用基礎(chǔ)"));對(duì)應(yīng)的SQL語(yǔ)句為:【例】查找沒(méi)有選課學(xué)生的課程名稱。要求輸出:課程代碼和課程名稱?!痉治觥竣?zèng)]有選課學(xué)生的課程,即意味著,該門(mén)課程在成績(jī)表中沒(méi)有記錄。
②因此,必須課程表和成績(jī)表連接時(shí)采用左連接類型。5.4.3基于多張表的選擇查詢SELECT
課程.課程代碼,課程.課程名稱FROM
課程LEFTJOIN成績(jī)ON
課程.課程代碼=成績(jī).課程號(hào)WHERE(((成績(jī).成績(jī))IsNull));5.4.3基于多張表的選擇查詢對(duì)應(yīng)的SQL語(yǔ)句為:【例】查找成績(jī)表中成績(jī)最高的10名學(xué)生。要求輸出:姓名、學(xué)號(hào)、課程名稱和成績(jī)?!痉治觥考矗簩⒊煽?jī)按降序排序,且只顯示前10條記錄。5.4.3基于多張表的選擇查詢SELECTTOP10學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名稱,成績(jī).成績(jī)FROM
課程INNERJOIN(學(xué)生INNERJOIN成績(jī)ON
學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào))ON
課程.課程代碼=成績(jī).課程號(hào)ORDERBY成績(jī).成績(jī)DESC;5.4.3基于多張表的選擇查詢對(duì)應(yīng)的SQL語(yǔ)句為:【例】查找有補(bǔ)考學(xué)生的課程代碼和課程名稱(相同課程只顯示一次)?!痉治觥考矗涸撻T(mén)課程的成績(jī)有小于60分的記錄。5.4.3基于多張表的選擇查詢SELECTDISTINCTROW課程.課程代碼,課程.課程名稱FROM
課程INNERJOIN成績(jī)ON課程.課程代碼=成績(jī).課程號(hào)WHERE(((成績(jī).成績(jī))<60));5.4.3基于多張表的選擇查詢對(duì)應(yīng)的SQL語(yǔ)句為:第五節(jié)計(jì)算、匯總查詢第5章查詢▲預(yù)定義計(jì)算利用設(shè)計(jì)視圖網(wǎng)格的【總計(jì)】行進(jìn)行各種統(tǒng)計(jì)▲自定義計(jì)算
創(chuàng)建計(jì)算字段進(jìn)行任意類型的計(jì)算當(dāng)需要統(tǒng)計(jì)的數(shù)據(jù)在表中沒(méi)有相應(yīng)的字段,或者用于計(jì)算的數(shù)據(jù)值來(lái)源于多個(gè)字段時(shí),應(yīng)在查詢中使用計(jì)算字段。計(jì)算字段是指根據(jù)一個(gè)或多個(gè)字段使用表達(dá)式建立的新字段(查詢中的顯示字段)。創(chuàng)建計(jì)算字段是在查詢?cè)O(shè)計(jì)視圖的【字段】行中直接輸入計(jì)算表達(dá)式。5.5.1查詢的計(jì)算功能【例】統(tǒng)計(jì)各門(mén)課程的成績(jī)。要求輸出“課程名稱”、“總分”、“平均分”、“最高分”和“最低分”?!痉治觥?/p>
本題輸出的字段中含有4個(gè)統(tǒng)計(jì)字段,因此將利用設(shè)計(jì)視圖網(wǎng)格的中【總計(jì)】行進(jìn)行統(tǒng)計(jì)。
【總計(jì)】行的打開(kāi)方式:?jiǎn)螕簟静樵児ぞ?設(shè)計(jì)】選項(xiàng)卡【顯示/隱藏】組中的【匯總】按鈕?!A(yù)定義計(jì)算5.5.1查詢的計(jì)算功能【總計(jì)】下拉列表框中含以下各選項(xiàng):
合計(jì)
平均值
最小值
最大值
計(jì)數(shù)
Var(方差)
StDev(標(biāo)準(zhǔn)差)(方差的平方根就是標(biāo)準(zhǔn)差)5.5.1查詢的計(jì)算功能
GroupBy 定義要執(zhí)行計(jì)算的組
First 求在表或查詢中第一條記錄的 字段值
Last 求在表或查詢中最后一條記錄 的字段值
Expression 在字段中自定義計(jì)算公式
Where 指定用于分組的字段的條件5.5.1查詢的計(jì)算功能5.5.1查詢的計(jì)算功能▲自定義計(jì)算
自定義計(jì)算的方法:需要直接在查詢?cè)O(shè)計(jì)視圖的設(shè)計(jì)網(wǎng)格中創(chuàng)建新的字段,將表達(dá)式輸入到查詢?cè)O(shè)計(jì)網(wǎng)格中的空“字段”單元格,表達(dá)式可以由多個(gè)計(jì)算組成,也可以指定計(jì)算字段的條件,以此來(lái)影響計(jì)算的結(jié)果。5.5.2在查詢中進(jìn)行計(jì)算【例5-8】基于“教師”表和“工資”表,計(jì)算各位教師的應(yīng)發(fā)工資(注:應(yīng)發(fā)工資=基本工資+崗位津貼+獎(jiǎng)金)。要求輸出字段為“姓名”、“應(yīng)發(fā)工資”。(P122)計(jì)算查詢的設(shè)計(jì)視圖5.5.2在查詢中進(jìn)行計(jì)算【例5-9】基于“學(xué)生”表,計(jì)算各位學(xué)生的年齡,輸出字段為“學(xué)號(hào)”、“姓名”、“性別”和“年齡”。(P122)計(jì)算查詢的設(shè)計(jì)視圖5.5.3在查詢中進(jìn)行分組統(tǒng)計(jì)當(dāng)查詢的輸出字段含有聚合函數(shù)時(shí),通常情況下應(yīng)設(shè)置分組字段。所謂分組字段即為:進(jìn)行數(shù)據(jù)統(tǒng)計(jì)時(shí)的分組依據(jù)。當(dāng)查詢中含有統(tǒng)計(jì)字段,而某一字段既不是統(tǒng)計(jì)字段,也不是分組字段,其值是無(wú)意義的?!究傆?jì)】行設(shè)為【W(wǎng)here】的字段不能出現(xiàn)在查詢的結(jié)果中。5.5.3在查詢中進(jìn)行分組統(tǒng)計(jì)【例5-10】基于“院系”表和“學(xué)生”表統(tǒng)計(jì)各院系學(xué)生的平均年齡,要求輸出字段為“院系名稱”和“平均年齡”,所建查詢保存為“各院系學(xué)生的平均年齡”。(P123)屬性表窗口查詢的設(shè)計(jì)視圖5.5.3在查詢中進(jìn)行分組統(tǒng)計(jì)【例5-11】基于“學(xué)生”表和“成績(jī)”表統(tǒng)計(jì)各班級(jí)男女生的平均成績(jī),要求輸出字段為“班級(jí)編碼”、“性別”和“平均分”,顯示的平均成績(jī)保留至整數(shù)。假定學(xué)生學(xué)號(hào)的前6位為班級(jí)編碼。所建查詢保存為“各班的男女生平均成績(jī)”。(P125)查詢的“設(shè)計(jì)視圖”5.5.4子查詢嵌入在查詢語(yǔ)句中的查詢語(yǔ)句稱之為子查詢。子查詢可以定義字段或字段的條件。使用子查詢?cè)诓樵冊(cè)O(shè)計(jì)網(wǎng)格的字段行輸入一條SELECT語(yǔ)句可以定義新字段,在條件單元格中輸入一條SELECT語(yǔ)句并把該語(yǔ)句放置在括號(hào)內(nèi)可以定義字段的條件。實(shí)現(xiàn)子查詢的方法可用使用SELECT語(yǔ)句作為查詢條件的子查詢,也可以使用相關(guān)的域聚合函數(shù)(簡(jiǎn)稱D函數(shù))作為查詢條件的子查詢?!纠?-12】基于“院系”表、“教師”表和“工資”表,查詢“基本工資”低于所有教師平均工資的教師信息,要求輸出顯示“院系名稱”、“姓名”和“基本工資”,所建查詢命名為“低于平均工資的教師名單”。(P126)5.5.4子查詢5.5.4子查詢用SELECT語(yǔ)句實(shí)現(xiàn)子查詢的“設(shè)計(jì)視圖”5.5.4子查詢【例5-13】基于“學(xué)生”表,查詢和“王遠(yuǎn)航”同鄉(xiāng)的所有學(xué)生信息,所建查詢命名為“王遠(yuǎn)航的同鄉(xiāng)”。(P126)用D函數(shù)實(shí)現(xiàn)子查詢的“設(shè)計(jì)視圖”5.5.4子查詢函數(shù)及格式功能示例DSum(表達(dá)式,記錄集[,條件式])返回指定記錄集中某個(gè)字段列數(shù)據(jù)的和DSum("成績(jī)","成績(jī)表","學(xué)號(hào)='10020302310'")DAvg(表達(dá)式,記錄集[,條件式])返回指定記錄集中某個(gè)字段列數(shù)據(jù)的平均值DAvg("成績(jī)","成績(jī)表","學(xué)號(hào)='10020302310'")DCount(表達(dá)式,記錄集[,條件式])返回指定記錄集中的記錄數(shù)DCount("學(xué)號(hào)","學(xué)生表","性別='女'")DMax(表達(dá)式,記錄集[,條件式])返回指定記錄集中某個(gè)字段列數(shù)據(jù)的最大值DMax("年齡","學(xué)生表","性別='男'")DMin(表達(dá)式,記錄集[,條件式])返回指定記錄集中某個(gè)字段列數(shù)據(jù)的最小值DMin("年齡","學(xué)生表","性別='男'")DLookup(表達(dá)式,記錄集[,條件式])從指定記錄集中檢索特定字段的值DLookup("課程名稱","課程表","課程代碼='0001'")表5-11域聚合函數(shù)5.5.5排序查詢結(jié)果
對(duì)查詢的結(jié)果進(jìn)行排序,能改變記錄的顯示順序,可以按單字段排序,也可以按照多字段排序。如果是針對(duì)多字段的排序,則排序的顯示順序是按照輸出設(shè)置的先后順序進(jìn)行排列。排序的方式可以選擇為“升序”、“降序”和“不排序”,系統(tǒng)默認(rèn)的排序方式是“不排序”?!纠?-14】基于“學(xué)生”表、“課程”表和“成績(jī)”表,查詢每名學(xué)生的“學(xué)號(hào)”、“姓名”、“課程名稱”和“成績(jī)”,輸出時(shí)要求先按“課程名稱”升序排序,“課程名稱”相同的再按“成績(jī)”降序排序,所建查詢命名為“排序查詢”。(P128)5.5.5排序查詢結(jié)果對(duì)查詢進(jìn)行排序設(shè)置5.5.5排序查詢結(jié)果【例5-15】基于“學(xué)生”表和“成績(jī)”表,查詢總分排在前5名學(xué)生的“學(xué)號(hào)”、“姓名”、“總分”和“平均分”,“平均分”要求使用函數(shù)以整數(shù)的形式輸出,所建查詢命名為“前5名的學(xué)生”。(P129)5.5.5排序查詢結(jié)果第六節(jié)參數(shù)查詢第5章查詢
所謂參數(shù)查詢是在運(yùn)行查詢的過(guò)程中,系統(tǒng)提示用戶輸入?yún)?shù),并根據(jù)參數(shù)的值來(lái)檢索符合條件的記錄。在Access中,可以建立單參數(shù)查詢,也可以建立多參數(shù)查詢。
參數(shù)查詢是一個(gè)特殊的選擇查詢,具有較大的靈活性,常作為窗體、報(bào)表的數(shù)據(jù)源。5.6參數(shù)查詢5.6.1單參數(shù)查詢單參數(shù)查詢
創(chuàng)建單參數(shù)查詢,就是在查詢“設(shè)計(jì)視圖”字段的“條件”行中指定一個(gè)參數(shù),該參數(shù)要用方括號(hào)括起來(lái),在執(zhí)行參數(shù)查詢時(shí),輸入一個(gè)參數(shù)值?!纠?-16】基于“學(xué)生”表、“課程”表和“成績(jī)”表創(chuàng)建一個(gè)查詢,查詢某門(mén)課程的學(xué)生成績(jī)清單。要求輸出顯示“學(xué)號(hào)”、“姓名”和“成績(jī)”,當(dāng)運(yùn)行該查詢時(shí),應(yīng)顯示提示信息:“請(qǐng)輸入課程名稱”。所建查詢命名為“單參數(shù)查詢”。(P131)5.6.1單參數(shù)查詢★操作步驟:①打開(kāi)查詢的設(shè)計(jì)視圖②添加數(shù)據(jù)源③設(shè)置顯示字段④在作為參數(shù)字段的【條件】行上輸入提示文本(注:提示文本需要用方括號(hào)括起來(lái))5.6.1單參數(shù)查詢單參數(shù)查詢的“設(shè)計(jì)視圖”參數(shù)對(duì)話框SELECT學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名稱,成績(jī).成績(jī)FROM課程INNERJOIN(學(xué)生INNERJOIN成績(jī)ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào))ON課程.課程代碼=成績(jī).課程號(hào)WHERE(((課程.課程名稱)=[請(qǐng)輸入課程名稱]));5.6.1單參數(shù)查詢對(duì)應(yīng)的SQL語(yǔ)句為:5.6.1單參數(shù)查詢【例5-17】基于“學(xué)生”表創(chuàng)建一個(gè)查詢按年級(jí)查詢學(xué)生的年級(jí)、姓名、性別、出生日期和籍貫。(P132)5.6.1單參數(shù)查詢單參數(shù)查詢的“設(shè)計(jì)視圖”參數(shù)對(duì)話框5.6.1單參數(shù)查詢SELECTLeft([學(xué)號(hào)],2)AS年級(jí),學(xué)生.姓名,學(xué)生.性別,學(xué)生.出生日期,學(xué)生.籍貫FROM學(xué)生WHERE(((Left([學(xué)號(hào)],2))=[請(qǐng)輸入年級(jí):]));對(duì)應(yīng)的SQL語(yǔ)句為:5.6.2多參數(shù)查詢多參數(shù)查詢
建立參數(shù)查詢實(shí)際上就是在條件行輸入了提示信息,如果在其它字段的條件行也輸入了類似的提示信息,就可以實(shí)現(xiàn)多參數(shù)查詢,在運(yùn)行一個(gè)多參數(shù)查詢時(shí),要依次輸入多個(gè)參數(shù)的值。5.6.2多參數(shù)查詢【例5-18】在“教務(wù)管理.accdb”數(shù)據(jù)庫(kù)中,創(chuàng)建一個(gè)查詢,按指定最低分和最高分查詢計(jì)算機(jī)應(yīng)用基礎(chǔ)的學(xué)生相關(guān)信息,要求輸出顯示“學(xué)號(hào)”、“姓名”、“課程名”和“成績(jī)”。當(dāng)運(yùn)行該查詢時(shí),應(yīng)顯示提示信息:“最低分”和“最高分”。所建查詢命名為“多參數(shù)查詢”。(P132)5.6.2多參數(shù)查詢多參數(shù)查詢的“設(shè)計(jì)視圖”5.6.2多參數(shù)查詢
參數(shù)對(duì)話框SELECT學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名稱,成績(jī).成績(jī)FROM課程INNERJOIN(學(xué)生INNERJOIN成績(jī)ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào))ON課程.課程代碼=成績(jī).課程號(hào)WHERE
(((課程.課程名稱)="計(jì)算機(jī)應(yīng)用基礎(chǔ)")AND((成績(jī).成績(jī))Between[最高分]And[最低分]));5.6.2多參數(shù)查詢對(duì)應(yīng)的SQL語(yǔ)句為:第七節(jié)交叉表查詢第5章查詢交叉表查詢是以行和列的字段作為標(biāo)題和條件選取數(shù)據(jù),并在行與列的交叉處對(duì)數(shù)據(jù)進(jìn)行匯總和統(tǒng)計(jì)計(jì)算。5.7.1交叉表查詢的概念行標(biāo)題列標(biāo)題值5.7.1交叉表查詢的概念設(shè)計(jì)交叉表查詢需要字義3種字段:
處于數(shù)據(jù)表最左端的行標(biāo)題字段把某一字段或相關(guān)數(shù)據(jù)放入指定的一行中。
處于數(shù)據(jù)表最上邊的列標(biāo)題字段對(duì)每一列指定的字段進(jìn)行統(tǒng)計(jì),并將統(tǒng)計(jì)結(jié)果放在該列。
處于行和列交叉位置的值字段可以為該字段指定總計(jì)項(xiàng)。在交叉表查詢中:只能指定一個(gè)列字段和一個(gè)總計(jì)類型的字段??梢酝ㄟ^(guò)設(shè)置一個(gè)或多個(gè)行標(biāo)題,創(chuàng)建多級(jí)交叉表查詢。5.7.1交叉表查詢的概念在設(shè)計(jì)視圖下創(chuàng)建交叉表查詢
在查詢的設(shè)計(jì)視圖下,單擊【查詢工具/設(shè)計(jì)】選項(xiàng)卡【查詢類型】組中【交叉表】按鈕,可以在設(shè)計(jì)網(wǎng)格中增加【交叉表】行。5.7.2創(chuàng)建交叉表查詢【例5-19】基于“學(xué)生”表、“成績(jī)”表和“課程”表,使用交叉表查詢創(chuàng)建一個(gè)查詢。要求行標(biāo)題為“學(xué)號(hào)”和“姓名”、列標(biāo)題為“課程名稱”,值為“成績(jī)”。將此查詢保存為“基于多表的簡(jiǎn)單交叉表查詢”。(P134)★操作步驟:①打開(kāi)查詢?cè)O(shè)計(jì)視圖,并添加數(shù)據(jù)源及顯示字段②單擊【查詢工具/設(shè)計(jì)】選項(xiàng)卡【查詢類型】組中【交叉表】按鈕,使查詢類型為交叉表查詢③在【交叉表】行上設(shè)置:行字段、列字段④在【交叉表】行上設(shè)置:值字段(將該字段的【總計(jì)】行改為:第一條記錄)⑤添加匯總字段并設(shè)置匯總函數(shù)(將該字段的【交叉表】行設(shè)置為:行標(biāo)題)5.7.2創(chuàng)建交叉表查詢基于多張表的交叉表查詢“設(shè)計(jì)視圖”5.7.2創(chuàng)建交叉表查詢5.7.2創(chuàng)建交叉表查詢【例5-20】基于“院系”表、“學(xué)生”表、“成績(jī)”表和“課程”表,使用交叉表查詢的查詢“設(shè)計(jì)視圖”創(chuàng)建一個(gè)查詢。要求行標(biāo)題為“院系名稱”、“年級(jí)”和“性別”、列標(biāo)題為“課程名稱”,值為“平均分”,輸出結(jié)果要按“院系名稱”降序排序,平均分要用函數(shù)取整。將此查詢保存為“基于多表的含計(jì)算字段的交叉表查詢”。(P135)5.7.2創(chuàng)建交叉表查詢基于多表的含有計(jì)算字段的交叉表查詢“設(shè)計(jì)視圖”創(chuàng)建交叉表查詢時(shí),使用交叉表查詢向?qū)Ш驮O(shè)計(jì)視圖的比較:☆數(shù)據(jù)源來(lái)自于一個(gè)表或查詢時(shí),使用交叉表查詢向?qū)?chuàng)建;☆數(shù)據(jù)源來(lái)自于多個(gè)表或查詢時(shí),使用設(shè)計(jì)視圖創(chuàng)建;☆如果【行標(biāo)題】或【列標(biāo)題】需要建立新字段得到,則使用設(shè)計(jì)視圖創(chuàng)建。5.7.2創(chuàng)建交叉表查詢第八節(jié)操作查詢第5章查詢
操作查詢是在選擇查詢的基礎(chǔ)上創(chuàng)建的,可以對(duì)表中符合條件的記錄進(jìn)行追加、刪除和更新操作。操作查詢包括:生成表查詢刪除查詢更新查詢追加查詢5.8操作查詢
操作查詢不僅選擇表中數(shù)據(jù),還對(duì)表中數(shù)據(jù)進(jìn)行修改。因此,為了避免因誤操作引起的不必要的改變,在數(shù)據(jù)庫(kù)窗口中的每個(gè)操作查詢圖標(biāo)之后顯示一個(gè)感嘆號(hào),以引起注意。5.8操作查詢一、生成表查詢生成表查詢是對(duì)一個(gè)或多個(gè)表中的記錄進(jìn)行檢索,將查詢的結(jié)果創(chuàng)建新表。在Access數(shù)據(jù)庫(kù)中,訪問(wèn)表數(shù)據(jù)要比訪問(wèn)查詢數(shù)據(jù)快得多,因此,如果經(jīng)常要從多個(gè)表中獲取數(shù)據(jù),最好的方法就是創(chuàng)建生成表查詢。5.8.1生成表查詢★操作步驟:①打開(kāi)查詢的設(shè)計(jì)視圖②添加數(shù)據(jù)源③更改查詢類型并命名新表的表名④選擇新表中的字段及設(shè)置查詢的條件5.8.1生成表查詢【例5-21】創(chuàng)建生成表查詢,基于“學(xué)生”表、“成績(jī)”表和“課程”表將成績(jī)表中所有不及格的學(xué)生信息查詢出來(lái)存放到一張新表中,新表名為“補(bǔ)考成績(jī)表”,“補(bǔ)考成績(jī)表”的字段有“學(xué)號(hào)”、“姓名”、“課程名稱”和“成績(jī)”。(P137)5.8.1生成表查詢查詢的設(shè)計(jì)視圖切換到數(shù)據(jù)表視圖可預(yù)覽新建的表。運(yùn)行查詢后,才創(chuàng)建新表(創(chuàng)建新表前,系統(tǒng)將有提示)。5.8.1生成表查詢選擇“查詢工具-設(shè)計(jì)”選項(xiàng)卡中的“查詢類型”組,單擊“生成表”按鈕
,打開(kāi)“生成表”對(duì)話框。生成表對(duì)話框SELECT學(xué)生.學(xué)號(hào),學(xué)生.姓名,課程.課程名稱,成績(jī).成績(jī)INTO補(bǔ)考成績(jī)表FROM課程INNERJOIN(學(xué)生INNERJOIN成績(jī)ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào))ON課程.課程代碼=成績(jī).課程號(hào)WHERE(((成績(jī).成績(jī))<60));5.8.1生成表查詢對(duì)應(yīng)的SQL語(yǔ)句為:二、刪除查詢
刪除查詢可以從一個(gè)或多個(gè)表中刪除符合條件的記錄?!锊僮鞑襟E:①打開(kāi)查詢的設(shè)計(jì)視圖②添加數(shù)據(jù)源③更改查詢的類型為刪除查詢④設(shè)置刪除的條件查詢運(yùn)行后將從原表中永久刪除指定的記錄,且無(wú)法恢復(fù)!為避免誤刪除,可以先預(yù)覽查詢的結(jié)果或?qū)υ瓟?shù)據(jù)表進(jìn)行備份。刪除查詢刪除的是整個(gè)記錄,而不是指定的字段或字段中的數(shù)據(jù)。5.8.2刪除查詢【例5-22】備份“學(xué)生”表,備份后的新表命名為“Student”?;凇癝tudent”表創(chuàng)建一個(gè)刪除查詢,要求刪除“重慶”籍的女學(xué)生,所建查詢保存為“刪除查詢”。(P139)5.8.2刪除查詢5.8.2刪除查詢刪除查詢“設(shè)計(jì)視圖”5.8.2刪除查詢對(duì)應(yīng)的SQL語(yǔ)句為:DELETEStudent.性別,Student.籍貫FROMStudentWHERE(((Student.性別)="女")AND((Student.籍貫)="重慶"));【例】從成績(jī)表中刪除姓名為“王浩然”的記錄?!痉治觥?/p>
此刪除查詢涉及兩張表:學(xué)生表和成績(jī)表。刪除的是成績(jī)表表中的記錄;條件設(shè)置來(lái)自于學(xué)生表。若刪除查詢的數(shù)據(jù)源來(lái)自多表,則:刪除的只能是子表中的記錄;主表中的字段用于條件設(shè)置;與兩表之間是否建立參照完整性規(guī)則無(wú)關(guān)。5.8.2刪除查詢?cè)O(shè)計(jì)視圖中的【刪除】行:☆From 指定刪除記錄的表☆Where 指定刪除的條件5.8.2刪除查詢DELETE
學(xué)生.姓名,成績(jī).*FROM
學(xué)生INNERJOIN成績(jī)ON
學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)WHERE(((學(xué)生.姓名)="王浩然"));5.8.2刪除查詢對(duì)應(yīng)的SQL語(yǔ)句為:三、更新查詢更新查詢是根據(jù)查詢的結(jié)果,對(duì)一個(gè)或多個(gè)表中相關(guān)記錄的字段值進(jìn)行更新。
更新查詢的最大優(yōu)勢(shì)在于:用相同的表達(dá)式批量修改多條記錄的字段值。5.8.3更新查詢【例5-23】備份“學(xué)生”表,備份后的新表命名為“Student”?;凇懊褡濉北砗汀癝tudent”表創(chuàng)建一個(gè)更新查詢,要求將少數(shù)民族學(xué)生的備注信息設(shè)置為“少數(shù)民族”,所建查詢保存為“更新查詢1”。(P140)5.8.3更新查詢★操作步驟:
●打開(kāi)查詢的設(shè)計(jì)視圖
●添加數(shù)據(jù)源
●選擇查詢類型
●設(shè)置更新的字段、字段的值及更新的條件
更新的字段可以是一個(gè)或多個(gè)。5.8.3更新查詢5.8.3更新查詢更新查詢“設(shè)計(jì)視圖”5.8.3更新查詢對(duì)應(yīng)的SQL語(yǔ)句為:UPDATEStudentINNERJOIN民族ONStudent.民族代碼=民族.民族代碼SETStudent.備注="少數(shù)民族"WHERE(((民族.民族名稱)<>"漢族"));5.8.3更新查詢【例5-24】備份“成績(jī)”表,備份后的新表命名為“Score”?;凇罢n程”表和“Score”表創(chuàng)建一個(gè)更新查詢,要求將“高等數(shù)學(xué)”的成績(jī)低于60分的同學(xué),每人成績(jī)?cè)黾?分,所建查詢保存為“更新查詢2”。(P141)5.8.3更新查詢更新查詢“設(shè)計(jì)視圖”5.8.3更新查詢對(duì)應(yīng)的SQL語(yǔ)句為:UPDATE
課程INNERJOINScoreON課程.課程代碼=Score.課程號(hào)SETScore.成績(jī)=[成績(jī)]+5WHERE(((課程.課程名稱)="高等數(shù)學(xué)")AND((Score.成績(jī))<60));四、追加查詢追加查詢是把查詢的結(jié)果添加到另一個(gè)表的末尾(查詢的數(shù)據(jù)源可以是一個(gè)或多個(gè)表)?!纠?-25】創(chuàng)建一個(gè)追加表查詢,基于“民族”表、“學(xué)生”表和“成績(jī)”表將少數(shù)民族學(xué)生總成績(jī)排在前3名的學(xué)生信息填入到空表“tSinfo”的相應(yīng)字段中,其中“班級(jí)編號(hào)”值是“學(xué)生”表中“學(xué)號(hào)”字段的前6位。將所建查詢命名為“追加表查詢”。(P142)5.8.4追加查詢5.8.4追加查詢★操作步驟:①打開(kāi)查詢的設(shè)計(jì)視圖,并添加數(shù)據(jù)源②更改查詢類型及設(shè)置目標(biāo)表③設(shè)置追加字段及追加條件5.8.4追加查詢查詢“設(shè)計(jì)視圖”5.8.4追加查詢?cè)O(shè)置查詢返回的記錄個(gè)數(shù)“追加”表查詢對(duì)話框5.8.4追加查詢追加表查詢“設(shè)計(jì)視圖”目標(biāo)表必須是已經(jīng)存在的表。查詢輸出和目標(biāo)表對(duì)應(yīng)字段的字段名必須相同。查詢輸出和目標(biāo)表對(duì)應(yīng)字段的數(shù)據(jù)類型如果不相同,系統(tǒng)將先進(jìn)行類型轉(zhuǎn)換;如果不能進(jìn)行類型轉(zhuǎn)換,則將出錯(cuò)。5.8.4追加查詢對(duì)應(yīng)的SQL語(yǔ)句為:INSERTINTOtSinfo(班級(jí)編號(hào),姓名,總分)SELECTTOP3Left([學(xué)生].[學(xué)號(hào)],6)AS班級(jí)編號(hào),學(xué)生.姓名,Sum(成績(jī).成績(jī))AS總分FROM(民族INNERJOIN學(xué)生ON民族.民族代碼=學(xué)生.民族代碼)INNERJOIN成績(jī)ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)WHERE(((民族.民族名稱)<>"漢族"))GROUPBYLeft([學(xué)生].[學(xué)號(hào)],6),學(xué)生.姓名ORDERBYSum(成績(jī).成績(jī))DESC;第5章查詢第九節(jié)結(jié)構(gòu)化查詢語(yǔ)言SQLSQL結(jié)構(gòu)化查詢語(yǔ)言是標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)語(yǔ)言。查詢的本質(zhì)是一條SQL語(yǔ)句,即每個(gè)查詢都對(duì)應(yīng)著一條SQL查詢命令。保存查詢時(shí),保存的是一條SQL語(yǔ)句,而不是查詢的結(jié)果。創(chuàng)建查詢,既可以在其設(shè)計(jì)視圖中實(shí)現(xiàn),也可以在其SQL視圖中直接輸入SQL語(yǔ)句實(shí)現(xiàn)。某些特殊的查詢不能在設(shè)計(jì)視圖中進(jìn)行,只能通過(guò)SQL語(yǔ)句才能實(shí)現(xiàn)。5.9.1
SQL語(yǔ)言概述SQL語(yǔ)言的特點(diǎn)
SQL是一種功能齊全的一體化語(yǔ)言
SQL是一種高度非過(guò)程化的語(yǔ)言
SQL語(yǔ)言簡(jiǎn)潔,易學(xué)易用
語(yǔ)言共享5.9.1
SQL語(yǔ)言概述SQL(結(jié)構(gòu)化查詢語(yǔ)言)是一種數(shù)據(jù)庫(kù)查詢語(yǔ)言,它的功能包括:
☆數(shù)據(jù)定義
☆數(shù)據(jù)查詢
☆數(shù)據(jù)操縱
☆數(shù)據(jù)控制5.9.1
SQL語(yǔ)言概述SQL語(yǔ)言的數(shù)據(jù)定義功能SQL語(yǔ)言的數(shù)據(jù)定義功能包括定義表、定義視圖、定義索引。即對(duì)表、視圖和索引的創(chuàng)建、修改和刪除。數(shù)據(jù)定義的CREATE語(yǔ)句是定義基本表的結(jié)構(gòu)、定義視圖和定義索引。創(chuàng)建對(duì)象命令語(yǔ)句表CREARETABLE視圖CREATEVIEW索引CREATEINDEX5.9.2數(shù)據(jù)定義1、創(chuàng)建表語(yǔ)法格式:CREATETABLE
<表名>(<字段名1><類型名>[(長(zhǎng)度)][PRIMARYKER][NULL|NOTNULL][,<字段名2><類型名>[(長(zhǎng)度)][NULL|NOTNULL]...)功能:創(chuàng)建一個(gè)數(shù)據(jù)表的結(jié)構(gòu)說(shuō)明:字段名不能缺??;數(shù)據(jù)類型使用指定的英語(yǔ)單詞;部分?jǐn)?shù)據(jù)類型有其固定的長(zhǎng)度,不需要設(shè)置。5.9.2數(shù)據(jù)定義完整性約束是定義相關(guān)字段間的約束條件。約束條件有以下幾種設(shè)置:
☆NotNull
字段不能為空值。
☆PrimaryKey 設(shè)置主鍵。設(shè)置單個(gè)字段為主 鍵時(shí),應(yīng)該將該字設(shè)置為字段
級(jí)約束條件。5.9.2數(shù)據(jù)定義數(shù)據(jù)類型定義字符字段大小文本型VarChar、Char、String、Text需定義備注型Memo貨幣型Money、Currency
8日期/時(shí)間型Date、DateTime8是/否型YesNo、Logical、Bit1OLE對(duì)象型Image、General、OLEObject自動(dòng)編號(hào)Counter、AutoIncrement4字節(jié)型Byte1短整型SmallInt2長(zhǎng)整型Int、Integer、Long4單精度型Single、Real4雙精度型Double、Number、Numeric、Float8同步復(fù)制ID
Guid16二進(jìn)制Binary、VarBinaryACCESS的數(shù)據(jù)類型5.9.2數(shù)據(jù)定義【例5-26】建立一個(gè)“職工”表,表結(jié)構(gòu)如下:(P145)字段名稱數(shù)據(jù)類型字段大小說(shuō)明職工號(hào)數(shù)字整型
主鍵姓名文本4不允許為空性別文本1出生日期日期/時(shí)間部門(mén)文本20備注備注型5.9.2數(shù)據(jù)定義CREATETABLE職工(職工號(hào)INTPrimaryKey,
姓名CHAR(4)NotNull,
性別CHAR(1),
出生日期DATE,
部門(mén)CHAR(20),
備注MEMO);
5.9.2數(shù)據(jù)定義2、修改表
ALTERTABLE用于修改已經(jīng)建立的表的結(jié)構(gòu)。修改基本表的結(jié)構(gòu)包括:增加字段和字段級(jí)完整性約束條件、修改原有字段的定義、刪除原有的字段和完整性約束條件等。語(yǔ)法格式一:(增加字段)ALTERTABLE<表名>ADD<新字段名><數(shù)據(jù)類型>[<大小>][<約束條件>][,……]功能:增加字段或索引5.9.2數(shù)據(jù)定義【例5-27】為“職工”表增加兩個(gè)字段,第一個(gè)字段的字段名為“電話號(hào)碼”,其數(shù)據(jù)類型為文本,字段大小為12;第二個(gè)字段的字段名為“婚否”,其數(shù)據(jù)類型為邏輯型。(P147)5.9.2數(shù)據(jù)定義ALTERTABLE職工
ADD電話號(hào)碼Text(12),婚否Logical;語(yǔ)法格式二:(修改字段)ALTERTABLE<表名>ALTER
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度協(xié)議離婚與訴訟離婚婚姻登記與合同簽訂流程規(guī)范3篇
- 2024年智能養(yǎng)殖場(chǎng)承包合作項(xiàng)目合同范本3篇
- 采購(gòu)合同管理中的合同管理工具3篇
- 采購(gòu)合同評(píng)審表的填寫(xiě)指導(dǎo)3篇
- 采購(gòu)合同框架協(xié)議的簽訂前景3篇
- 采購(gòu)合同風(fēng)險(xiǎn)評(píng)估的理論研究3篇
- 采購(gòu)合同范本實(shí)戰(zhàn)3篇
- 2024年度供應(yīng)鏈管理系統(tǒng)軟件開(kāi)發(fā)與優(yōu)化服務(wù)合同3篇
- 采購(gòu)法務(wù)與合同的合同審核流程3篇
- 采購(gòu)合同要素詳盡解讀3篇
- 庫(kù)區(qū)倒罐作業(yè)操作規(guī)程
- 幕墻計(jì)算表格(自動(dòng)版)
- 中考作文一材多用寫(xiě)作指導(dǎo)課件
- 現(xiàn)代操作系統(tǒng)教程(慕課版)-課后習(xí)題答案1-8章全帶原題
- PCS-PC簡(jiǎn)單使用方法
- 高校人力資源管理系統(tǒng)
- 關(guān)于更換公務(wù)用車(chē)的請(qǐng)示
- 國(guó)外發(fā)達(dá)國(guó)家中水回用現(xiàn)狀
- 遠(yuǎn)洋漁船項(xiàng)目可行性研究報(bào)告模板
- 塔塔里尼調(diào)壓器FLBM5介紹.ppt
- 相親相愛(ài)一家人簡(jiǎn)譜
評(píng)論
0/150
提交評(píng)論