數(shù)據(jù)庫應(yīng)用03access中sql查詢語言課件_第1頁
數(shù)據(jù)庫應(yīng)用03access中sql查詢語言課件_第2頁
數(shù)據(jù)庫應(yīng)用03access中sql查詢語言課件_第3頁
數(shù)據(jù)庫應(yīng)用03access中sql查詢語言課件_第4頁
數(shù)據(jù)庫應(yīng)用03access中sql查詢語言課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

兩表自然連接查詢工作原理【例3-33】

select*

from班級表,學(xué)生表;

結(jié)果非常龐大,有17個字段,180條記錄,原因:如果SELECT不帶WHERE子句時,首先從前一個表(此處為“班級表”)中取一條記錄然后與后面的表(此處為“學(xué)生表”)中的每條記錄進(jìn)行逐一連接再從第一張表取第二條記錄,重復(fù)上述過程,直到第一張表的記錄取完結(jié)束結(jié)果存在組合爆炸的問題,產(chǎn)生很多無用的垃圾數(shù)據(jù)

牛牛文庫文檔分享兩表自然連接查詢工作原理【例3-33】

select*

1兩表自然連接查詢工作原理2二個表之間自然連接(內(nèi)連)與主鍵、外鍵約束的關(guān)系:SELECT從兩表檢索結(jié)果時,要得到有效的數(shù)據(jù)必須帶WHERE子句,通常二個表之間必須有主外鍵的約束,即二個表中有共同的字段(或字段集),這個字段或字段集在一個表中為主鍵,在另一個表中為外鍵。如果二表是多對多的關(guān)系,也可以轉(zhuǎn)化為二個一對多的關(guān)系。

牛牛文庫文檔分享兩表自然連接查詢工作原理2二個表之間自然連接(內(nèi)連)與主鍵、2兩表自然連接查詢【例3-34】【例3-34】將學(xué)生表和班級表進(jìn)行自然連接,求結(jié)果集。

牛牛文庫文檔分享兩表自然連接查詢【例3-34】【例3-34】將學(xué)生表和班3將學(xué)生表和班級表進(jìn)行自然連接select*

from班級表innerjoin學(xué)生表

on班級表.班號=學(xué)生表.班號;上述SELECT語句的等價SQL語句如下:

select*;

from班級表,學(xué)生表

where班級表.班號=學(xué)生表.班號;

牛牛文庫文檔分享將學(xué)生表和班級表進(jìn)行自然連接select*

from班級4兩表自然連接查詢【例3-34】2例3-34中的子句“from班級表innerjoin學(xué)生表on班級表.班號=學(xué)生表.班號”或“from班級表,學(xué)生表where班級表.班號=學(xué)生表.班號”表示的是“班級表”和“學(xué)生表”進(jìn)行自然連接自然連接操作是數(shù)據(jù)庫SQL檢索語句中最常用的操作要求參與自然連接操作的兩個關(guān)系表間存在一對多的約束,即兩個關(guān)系表間存在外鍵約束,這樣的自然連接才有意義

牛牛文庫文檔分享兩表自然連接查詢【例3-34】2例3-34中的子句www5兩表自然連接查詢與數(shù)據(jù)庫模式關(guān)系僅存在主外鍵約束的兩個表可以進(jìn)行自然連接

牛牛文庫文檔分享兩表自然連接查詢與數(shù)據(jù)庫模式關(guān)系僅存在主外鍵約束的兩個表可以6兩表自然連接查詢規(guī)則一對多的自然連接的結(jié)果是一個關(guān)系表,關(guān)系表的結(jié)果為:橫向上(字段數(shù))為兩表的字段相疊加;縱向上(記錄數(shù))以多表的記錄為最終結(jié)果。以“學(xué)生表”與“成績表”的關(guān)聯(lián)為例,由于“成績表”中有60條記錄,使用SELECT中的子句“WHERE學(xué)生表.學(xué)號=成績表.學(xué)號”表示將兩表進(jìn)行自然連接操作,其結(jié)果中字段為13個(3個在班級表,11個在學(xué)生表),記錄為60條。

牛牛文庫文檔分享兩表自然連接查詢規(guī)則一對多的自然連接的結(jié)果是一個關(guān)系表,關(guān)系7兩表自然連接查詢【例3-35】【例3-35】求成績在85分以上學(xué)生的學(xué)號、姓名和成績。

牛牛文庫文檔分享兩表自然連接查詢【例3-35】【例3-35】求成績在85分8求成績在85分以上學(xué)生的學(xué)號、姓名和成績select學(xué)生表.學(xué)號,姓名,成績

from學(xué)生表,成績表

where學(xué)生表.學(xué)號=成績表.學(xué)號

and成績>=85;

牛牛文庫文檔分享求成績在85分以上學(xué)生的學(xué)號、姓名和成績select學(xué)生表9兩表自然連接查詢---別名例子為簡化SELECT的書寫,SQL中允許使用表的別名,上例可寫成如下SELECT語句。selecta.學(xué)號,姓名,成績

from學(xué)生表a,成績表b

wherea.學(xué)號=b.學(xué)號and成績>=85;a表示是數(shù)據(jù)表“學(xué)生表”的別名b是數(shù)據(jù)表“成績表”的別名

牛牛文庫文檔分享兩表自然連接查詢---別名例子為簡化SELECT的書寫,SQ10多表自然連接查詢【例3-36】將兩表的自然連接推廣到多表【例3-36】將“學(xué)生表”、“成績表”和“課程表”進(jìn)行自然連接,求結(jié)果。

牛牛文庫文檔分享多表自然連接查詢【例3-36】將兩表的自然連接推廣到多表ww11多表自然連接查詢【例3-36】2select*

from(學(xué)生表innerjoin成績表

on學(xué)生表.學(xué)號=成績表.學(xué)號)

innerjoin課程表

on課程表.課程號=成績表.課程號;本例中可理解為先進(jìn)行“課程表”與“成績表”的自然連接,然后再用得到的關(guān)系與“學(xué)生表”進(jìn)行自然連接。例3-36的另一種書寫方式為:

select*

from學(xué)生表,成績表,課程表

where學(xué)生表.學(xué)號=成績表.學(xué)號

and課程表.課程號=成績表.課程號;

牛牛文庫文檔分享多表自然連接查詢【例3-36】2select*

from12多表自然連接查詢一般方法必須首先知道數(shù)據(jù)庫模式,才能編寫正確的SQL語句數(shù)據(jù)庫導(dǎo)航概念根據(jù)給出的已知條件,求需要的數(shù)據(jù)。已知條件是在一個表中的某個字段取值,所求數(shù)據(jù)是我們感興趣的字段。要從已知的數(shù)據(jù)表出發(fā),通過表間的關(guān)聯(lián)到達(dá)目的表,最后根據(jù)題目要求篩選相關(guān)的字段和記錄。

牛牛文庫文檔分享多表自然連接查詢一般方法必須首先知道數(shù)據(jù)庫模式,才能編寫正確13多表的自然連接查詢【例3-37】【例3-37】求“楊小建”的成績表。根據(jù)給出的數(shù)據(jù)庫模式,我們知道:已知條件為“學(xué)生表”的“姓名”字段其內(nèi)容等于“楊小建”待求的是“課程表”中的“課程號、課程名”和“成績表”中的“成績”

牛牛文庫文檔分享多表的自然連接查詢【例3-37】【例3-37】求“楊小建”的14多表的自然連接查詢【例3-37】select課程表.課程號,課程名,成績

from(學(xué)生表innerjoin成績表

on學(xué)生表.學(xué)號=成績表.學(xué)號)

innerjoin課程表

on課程表.課程號=成績表.課程號

where姓名=“楊小建”;或selectc.課程號,課程名,成績

from學(xué)生表a

,成績表b,課程表c

wherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號and姓名=“楊小建”;

牛牛文庫文檔分享多表的自然連接查詢【例3-37】select課程表.課程號15多表的自然連接查詢【例3-38】【例3-38】求會計學(xué)081班的所有成績單。分析:已知條件為“班級表”中的“專業(yè)名稱”待求為“學(xué)生表”的“姓名”;“課程”表的“課程號、課程名”;“成績表”的“成績”

牛牛文庫文檔分享多表的自然連接查詢【例3-38】【例3-38】求會計學(xué)08116多表的自然連接查詢【例3-38】2select學(xué)生表.學(xué)號,姓名,課程表.課程號,課程名,成績,班級表.班號

from(班級表innerjoin學(xué)生表on班級表.班號=學(xué)生表.班號)

innerjoin

(課程表innerjoin成績表on課程表.課程號=成績表.課程號)

on學(xué)生表.學(xué)號=成績表.學(xué)號

where班級表.班號=“會計學(xué)081”;select學(xué)生表.學(xué)號,姓名,課程表.課程號,課程名,成績,班級表.班號

from班級表,學(xué)生表,課程表,成績表Where班級表.班號=學(xué)生表.班號and

學(xué)生表.學(xué)號=成績表.學(xué)號and

班級表.班號=“會計學(xué)081”;

牛牛文庫文檔分享多表的自然連接查詢【例3-38】2select學(xué)生表.學(xué)號17【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。

牛牛文庫文檔分享【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。18多表自然連接查詢【例3-39】【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。selectb.學(xué)號,姓名,c.課程號,課程名,成績,a.班號from班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號anda.班號="會計學(xué)081"and課程名="高等數(shù)學(xué)III";

牛牛文庫文檔分享多表自然連接查詢【例3-39】【例3-39】求“會計學(xué)08119多表查詢GROUPBY【例3-40】【例3-40】求每個學(xué)生所修的總學(xué)分?jǐn)?shù)。

牛牛文庫文檔分享多表查詢GROUPBY【例3-40】【例3-40】求每個20求每個學(xué)生所修的總學(xué)分?jǐn)?shù)select姓名,sum(學(xué)分)as學(xué)分合計from學(xué)生表a,成績表b,課程表cwherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號groupby姓名orderbysum(學(xué)分)desc;

牛牛文庫文檔分享求每個學(xué)生所修的總學(xué)分?jǐn)?shù)select姓名,sum(學(xué)分)21多表查詢使用GROUPBY的例子【例3-41】求總學(xué)分在11分以上的學(xué)生姓名

牛牛文庫文檔分享多表查詢使用GROUPBY的例子【例3-41】求總學(xué)分在122求總學(xué)分在11分以上的學(xué)生姓名select姓名,sum(學(xué)分)as學(xué)分合計from學(xué)生表a,成績表b,課程表cwherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號groupby姓名havingsum(學(xué)分)>=11;不難看出,HAVING子句的功能是過濾GROUPBY子句的結(jié)果。

牛牛文庫文檔分享求總學(xué)分在11分以上的學(xué)生姓名select姓名,sum(學(xué)233.2.4參數(shù)查詢前面我們編寫的查詢,運(yùn)行時直接返回結(jié)果,即所有的數(shù)據(jù)已經(jīng)編寫在SQL語句中。所謂參數(shù)查詢是指在運(yùn)行該查詢時,系統(tǒng)會要求用戶輸入所需的參數(shù)值。

牛牛文庫文檔分享3.2.4參數(shù)查詢前面我們編寫的查詢,運(yùn)行時直接返回結(jié)果,24參數(shù)查詢【例3-42】【例3-42】用戶隨機(jī)輸入入學(xué)成績,使用參數(shù)查詢求大于該入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。

select學(xué)號,姓名,入學(xué)成績

from學(xué)生表

where入學(xué)成績>=[請輸入入學(xué)成績];運(yùn)行該查詢時,首先彈出一個對話框,在輸入620,單擊確定后,得到所需的結(jié)果。下次運(yùn)行,根據(jù)用戶隨機(jī)輸入的值,返回不同結(jié)果。

牛牛文庫文檔分享參數(shù)查詢【例3-42】【例3-42】用戶隨機(jī)輸入入學(xué)成績,253.2.4參數(shù)查詢【例3-43】【例3-43】用戶隨機(jī)輸入學(xué)生姓氏,輸出該姓氏的所有學(xué)生學(xué)號和姓名。

select學(xué)號,姓名from學(xué)生表where姓名like[請輸入姓氏]&"*";

牛牛文庫文檔分享3.2.4參數(shù)查詢【例3-43】【例3-43】用戶隨機(jī)輸入26參數(shù)查詢【例3-44】【例3-44】隨機(jī)輸入入學(xué)成績的下限和上限,輸出入學(xué)成績在下限和上限之間的所有學(xué)生學(xué)號,姓名和入學(xué)成績。

select學(xué)號,姓名,入學(xué)成績from學(xué)生表where入學(xué)成績between[請輸入入學(xué)成績下限]and[請輸入入學(xué)成績上限];

牛牛文庫文檔分享參數(shù)查詢【例3-44】【例3-44】隨機(jī)輸入入學(xué)成績的下限和273.2.5SQL子查詢與合并查詢1.SQL子查詢帶IN子查詢帶關(guān)系運(yùn)算符子查詢ALL限定詞ANY限定詞2.合并查詢

牛牛文庫文檔分享3.2.5SQL子查詢與合并查詢1.SQL子查詢www.281.SQL子查詢子查詢是一個SELECT語句,它嵌套在一個SELECT語句(也可是INSERT語句、DELETE語句或UPDATE語句)的WHERE子句部分子查詢的SELECT查詢總是使用圓括號括起來。子查詢也可嵌套在另一子查詢中。有三種語法來創(chuàng)建子查詢:(1)WHERE表達(dá)式[NOT]IN(子查詢語句)(2)WHERE表達(dá)式關(guān)系運(yùn)算符[ANY|ALL](子查詢語句)(3)WHERE[NOT]EXISTS(子查詢語句)

牛牛文庫文檔分享1.SQL子查詢子查詢是一個SELECT語句,它嵌套在一個29帶IN子查詢僅講解前兩種子查詢(1)帶IN子查詢

IN子查詢語法結(jié)構(gòu)為:

WHERE表達(dá)式[NOT]IN(子查詢語句)

牛牛文庫文檔分享帶IN子查詢僅講解前兩種子查詢牛30帶IN子查詢【例3-45】【例3-45】求“會計學(xué)”專業(yè)的所有的同學(xué)學(xué)號、姓名和班號。

可以用自然連接實(shí)現(xiàn),也可以借助子查詢來完成。先查班級表中“會計學(xué)”專業(yè)對應(yīng)的班級號,再對學(xué)生表中查找相應(yīng)班級號的同學(xué)學(xué)號、姓名和班號。

牛牛文庫文檔分享帶IN子查詢【例3-45】【例3-45】求“會計學(xué)”專業(yè)的所31帶IN子查詢【例3-45】2select學(xué)號,姓名,班號

from學(xué)生表

where班號in(select班號

from班級表

where專業(yè)="會計學(xué)");

牛牛文庫文檔分享帶IN子查詢【例3-45】2select學(xué)號,姓名,班號32帶IN子查詢【例3-46】【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。

牛牛文庫文檔分享帶IN子查詢【例3-46】【例3-46】求沒有修“高等數(shù)學(xué)I33【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。select學(xué)號,姓名from學(xué)生表where學(xué)號notin(select學(xué)號

from成績表,課程表

where成績表.課程號=課程表.課程號and課程名="高等數(shù)學(xué)III");

牛牛文庫文檔分享【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。w34帶關(guān)系運(yùn)算符子查詢(2)帶關(guān)系運(yùn)算符子查詢語法結(jié)構(gòu)為:WHERE表達(dá)式關(guān)系運(yùn)算符[ANY|ALL](子查詢語句)當(dāng)子查詢返回單值時,符號ANY或ALL可以省略其他情況下,必須使用ANY或ALL修飾>ANY大于子查詢結(jié)果中的某個最小值<ANY小于子查詢結(jié)果中的某個最大值>=ANY大于等于子查詢結(jié)果中的某個最小值<=ANY小于等于子查詢結(jié)果中的某個最大值=ANYWhere表達(dá)式在子查詢結(jié)果中的某個值中<>ANY無意義>ALL大于子查詢結(jié)果中的某個最大值<ALL小于子查詢結(jié)果中的某個最小值>=ALL大于等于子查詢結(jié)果中的某個最大值<=ALL小于等于子查詢結(jié)果中的某個最小值=ALL無意義<>ALLWhere表達(dá)式不在子查詢結(jié)果中的某個值中

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢(2)帶關(guān)系運(yùn)算符子查詢語法結(jié)構(gòu)為:>A35帶關(guān)系運(yùn)算符子查詢【例3-47】【例3-47】求入學(xué)成績高于平均入學(xué)成績的“計算機(jī)科學(xué)與技術(shù)081”同學(xué)學(xué)號和姓名。求解步驟分為兩步,求“計算機(jī)科學(xué)與技術(shù)081”平均入學(xué)成績,求“計算機(jī)科學(xué)與技術(shù)081”入學(xué)成績大于平均入學(xué)成績的學(xué)號和姓名。

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢【例3-47】【例3-47】求入學(xué)成績高于36帶關(guān)系運(yùn)算符子查詢【例3-47】2select學(xué)號,姓名from學(xué)生表where班號="計算機(jī)科學(xué)與技術(shù)081"and入學(xué)成績>=(selectavg(入學(xué)成績)from學(xué)生表

where班號="計算機(jī)科學(xué)與技術(shù)081");

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢【例3-47】2select學(xué)號,姓名w37帶關(guān)系運(yùn)算符子查詢

ANY和ALL功能。給出高于“會計學(xué)091”班的同學(xué)入學(xué)成績的學(xué)生的學(xué)號、姓名、班號和入學(xué)成績Select學(xué)號,姓名,班號,入學(xué)成績From學(xué)生表Where入學(xué)成績>any(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091");

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢

ANY和ALL功能。給出高于“會計學(xué)0938Select學(xué)號,姓名,班號,入學(xué)成績From學(xué)生表Where入學(xué)成績>(selectmin(入學(xué)成績)from學(xué)生表

where班號="會計學(xué)091");

牛牛文庫文檔分享Select學(xué)號,姓名,班號,入學(xué)成績www.niuw39ANY功能---例3-48【例3-48】求入學(xué)成績小于等于班號為“會計學(xué)091”學(xué)生的任一入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=any(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091")

and班號<>"會計學(xué)091"orderby入學(xué)成績desc;

牛牛文庫文檔分享ANY功能---例3-48【例3-48】www.niuwk.40ANY功能【例3-48】3等價于:select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=(selectmax(入學(xué)成績)from學(xué)生表

where班號="會計學(xué)091")and班號<>"會計學(xué)091"orderby入學(xué)成績desc;

牛牛文庫文檔分享ANY功能【例3-48】3等價于:41ALL功能【例3-49】【例3-49】求小于等于所有班號為“會計學(xué)091”學(xué)生入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。

牛牛文庫文檔分享ALL功能【例3-49】【例3-49】求小于等于所有班號為“42ALL功能【例3-49】2select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=all(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091")and班號<>"會計學(xué)091"orderby入學(xué)成績desc;結(jié)果為小于等于“會計學(xué)091”班最小成績556分的所有非“會計學(xué)091”同學(xué)。思考:在子查詢中使用聚合函數(shù)完成上述功能。

牛牛文庫文檔分享ALL功能【例3-49】2select學(xué)號,姓名,班號432.SQL合并查詢SQL合并查詢就是將兩個SELECT語句的查詢結(jié)果通過并運(yùn)算(UNION)合并為一個查詢結(jié)果。SQL合并查詢要求兩個查詢的字段個數(shù)相同,且對應(yīng)字段的數(shù)據(jù)類型相同。

牛牛文庫文檔分享2.SQL合并查詢SQL合并查詢就是將兩個SELECT語句44SQL合并查詢【例3-50】【例3-50】使用SQL合并查詢運(yùn)算求“會計學(xué)081”班和“會計學(xué)091”的學(xué)號、姓名和班號。

雖然該查詢操作可以使用集合包含條件描述,但也可使用SQL合并查詢完成。

牛牛文庫文檔分享SQL合并查詢【例3-50】【例3-50】使用SQL合并查45SQL合并查詢【例3-50】2select學(xué)號,姓名,班號

from學(xué)生表

where班號=“會計學(xué)081”

union

select學(xué)號,姓名,班號

from學(xué)生表

where班號=“會計學(xué)091”;

牛牛文庫文檔分享SQL合并查詢【例3-50】2牛463.2.6交叉表查詢交叉表查詢是Access特有的SQL查詢語句。【例3-51】求給定課程選修總?cè)藬?shù),但要給出各班級的人數(shù)。transformcount(d.學(xué)號)asAAselect課程名,count(d.學(xué)號)as選課人數(shù)from班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號groupby課程名pivota.班號;

牛牛文庫文檔分享3.2.6交叉表查詢交叉表查詢是Access特有的SQL查47交叉表查詢---語句

牛牛文庫文檔分享交叉表查詢---語句牛牛文庫文檔48查詢向?qū)Ь帉懡徊娌樵儭纠?-52】【例3-52】使用查詢向?qū)В帉懡徊娌樵?。?)打開Access“教學(xué)管理數(shù)據(jù)庫”文件。(2)編寫一個稱為“查詢4張表”的查詢,語句如下:selecta.專業(yè),a.班號,d.學(xué)號,d.課程號,c.課程名FROM班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號;

牛牛文庫文檔分享查詢向?qū)Ь帉懡徊娌樵儭纠?-52】【例3-52】使用查詢向?qū)?9查詢向?qū)懡徊娌樵儭纠?-52】2(3)啟動查詢向?qū)?。在出現(xiàn)的“新建查詢”對話框中選擇“交叉表查詢向?qū)А边x項(xiàng)后,單擊“確定”按鈕。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】2(3)啟動查詢向?qū)АT诔霈F(xiàn)50查詢向?qū)懡徊娌樵儭纠?-52】2

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】251查詢向?qū)懡徊娌樵儭纠?-52】3(4)選擇表或查詢包含交叉表查詢結(jié)果所需字段。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】3(4)選擇表或查詢包含交叉52查詢向?qū)懡徊娌樵儭纠?-52】4(5)選擇字段作為行標(biāo)題。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】4(5)選擇字段作為行標(biāo)題。53查詢向?qū)懡徊娌樵儭纠?-52】5(6)選擇字段作為列標(biāo)題。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】5(6)選擇字段作為列標(biāo)題。54查詢向?qū)懡徊娌樵儭纠?-52】6(7)選擇行列交叉點(diǎn)聚合計算方法。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】6(7)選擇行列交叉點(diǎn)聚合計55查詢向?qū)懡徊娌樵儭纠?-52】7(8)指定交叉查詢名稱。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】7(8)指定交叉查詢名稱。w56查詢向?qū)懡徊娌樵儭纠?-52】8(9)交叉查詢結(jié)果。

牛牛文庫文檔分享查詢向?qū)懡徊娌樵儭纠?-52】8(9)交叉查詢結(jié)果。www572.交叉查詢語法TRANSFORM聚合函數(shù)

select語句

PIVOTpivotfield[IN(value1[,value2[,...]])]TRANSFORM語句各部分含義如表3-12所示。transformcount(d.學(xué)號)asAAselect課程名,count(d.學(xué)號)as選課人數(shù)from班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號groupby課程名pivota.班號;

牛牛文庫文檔分享2.交叉查詢語法TRANSFORM聚合函數(shù)

583.3數(shù)據(jù)操縱包括插入(INSERT)、刪除(DELETE)和更新(UPDATE)三種。插入、刪除和修改操作有可能導(dǎo)致數(shù)據(jù)違背數(shù)據(jù)庫完整性約束,操作時必須細(xì)心。例如本書教學(xué)管理數(shù)據(jù)庫中如果成績表中有某個同學(xué)的成績,學(xué)生表和成績表之間有外鍵約束,則不能夠先刪除學(xué)生表中的學(xué)生記錄同樣插入數(shù)據(jù)記錄也存在先后順序問題

牛牛文庫文檔分享3.3數(shù)據(jù)操縱包括插入(INSERT)、刪除(DELETE591.插入記錄INSERT語句格式:INSERTINTO<表名>[(<字段名1>[,<字段名2>,...])]VALUES(<表達(dá)式1>[,<表達(dá)式2>,...])命令功能:向表中插入一條記錄

牛牛文庫文檔分享1.插入記錄INSERT語句格式:www.niuwk.co60插入記錄【例3-53】【例3-53】向?qū)W生表中插入一條記錄。insertinto學(xué)生表(學(xué)號,姓名,性別,出生日期,入學(xué)成績,民族,籍貫,班號,貸款否)values("s0082999","李莉","女",1989/06/01,588,"漢","江西南昌","會計學(xué)081",false);使用該語句時,如果違法數(shù)據(jù)表的約束,即表中要求不能為空的或主鍵沖突的數(shù)據(jù)將不能插入數(shù)據(jù)表中。

牛牛文庫文檔分享插入記錄【例3-53】【例3-53】向?qū)W生表中插入一條記錄。612.更新記錄語句格式:

UPDATE<表名1>

SET<字段名1>=<表達(dá)式1>

[,<字段名2>=<表達(dá)式2>...]

WHERE<條件1>[AND|OR<條件2>...]

UPDATE命令功能:更新表中滿足條件的記錄。

牛牛文庫文檔分享2.更新記錄語句格式:

UPDATE<表名1>62更新記錄【例3-54】【例3-54】將學(xué)號為S0082999的學(xué)生入學(xué)成績改為612分。update學(xué)生表set入學(xué)成績=612where學(xué)號=‘S0082999’;注意:由于UPDATE語句對數(shù)據(jù)表更新是不可逆的。所以,UPDATE語句中的WHERE條件必須仔細(xì)寫好。

牛牛文庫文檔分享更新記錄【例3-54】【例3-54】將學(xué)號為S0082999633.刪除記錄語句格式:

DELETE[table.*]

FROMtable

WHERE<條件1>[AND|OR<條件2>...]

DELETEFROM命令的功能是從表中刪除滿足條件的記錄。

牛牛文庫文檔分享3.刪除記錄語句格式:

DELETE[table64刪除記錄【例3-55】【例3-55】刪除學(xué)號為S0082999的學(xué)生。Deletefrom學(xué)生表where學(xué)號=“S0082999”;由于delete刪除語句同樣不可逆,使用時需細(xì)心。

牛牛文庫文檔分享刪除記錄【例3-55】【例3-55】刪除學(xué)號為S00829965兩表自然連接查詢工作原理【例3-33】

select*

from班級表,學(xué)生表;

結(jié)果非常龐大,有17個字段,180條記錄,原因:如果SELECT不帶WHERE子句時,首先從前一個表(此處為“班級表”)中取一條記錄然后與后面的表(此處為“學(xué)生表”)中的每條記錄進(jìn)行逐一連接再從第一張表取第二條記錄,重復(fù)上述過程,直到第一張表的記錄取完結(jié)束結(jié)果存在組合爆炸的問題,產(chǎn)生很多無用的垃圾數(shù)據(jù)

牛牛文庫文檔分享兩表自然連接查詢工作原理【例3-33】

select*

66兩表自然連接查詢工作原理2二個表之間自然連接(內(nèi)連)與主鍵、外鍵約束的關(guān)系:SELECT從兩表檢索結(jié)果時,要得到有效的數(shù)據(jù)必須帶WHERE子句,通常二個表之間必須有主外鍵的約束,即二個表中有共同的字段(或字段集),這個字段或字段集在一個表中為主鍵,在另一個表中為外鍵。如果二表是多對多的關(guān)系,也可以轉(zhuǎn)化為二個一對多的關(guān)系。

牛牛文庫文檔分享兩表自然連接查詢工作原理2二個表之間自然連接(內(nèi)連)與主鍵、67兩表自然連接查詢【例3-34】【例3-34】將學(xué)生表和班級表進(jìn)行自然連接,求結(jié)果集。

牛牛文庫文檔分享兩表自然連接查詢【例3-34】【例3-34】將學(xué)生表和班68將學(xué)生表和班級表進(jìn)行自然連接select*

from班級表innerjoin學(xué)生表

on班級表.班號=學(xué)生表.班號;上述SELECT語句的等價SQL語句如下:

select*;

from班級表,學(xué)生表

where班級表.班號=學(xué)生表.班號;

牛牛文庫文檔分享將學(xué)生表和班級表進(jìn)行自然連接select*

from班級69兩表自然連接查詢【例3-34】2例3-34中的子句“from班級表innerjoin學(xué)生表on班級表.班號=學(xué)生表.班號”或“from班級表,學(xué)生表where班級表.班號=學(xué)生表.班號”表示的是“班級表”和“學(xué)生表”進(jìn)行自然連接自然連接操作是數(shù)據(jù)庫SQL檢索語句中最常用的操作要求參與自然連接操作的兩個關(guān)系表間存在一對多的約束,即兩個關(guān)系表間存在外鍵約束,這樣的自然連接才有意義

牛牛文庫文檔分享兩表自然連接查詢【例3-34】2例3-34中的子句www70兩表自然連接查詢與數(shù)據(jù)庫模式關(guān)系僅存在主外鍵約束的兩個表可以進(jìn)行自然連接

牛牛文庫文檔分享兩表自然連接查詢與數(shù)據(jù)庫模式關(guān)系僅存在主外鍵約束的兩個表可以71兩表自然連接查詢規(guī)則一對多的自然連接的結(jié)果是一個關(guān)系表,關(guān)系表的結(jié)果為:橫向上(字段數(shù))為兩表的字段相疊加;縱向上(記錄數(shù))以多表的記錄為最終結(jié)果。以“學(xué)生表”與“成績表”的關(guān)聯(lián)為例,由于“成績表”中有60條記錄,使用SELECT中的子句“WHERE學(xué)生表.學(xué)號=成績表.學(xué)號”表示將兩表進(jìn)行自然連接操作,其結(jié)果中字段為13個(3個在班級表,11個在學(xué)生表),記錄為60條。

牛牛文庫文檔分享兩表自然連接查詢規(guī)則一對多的自然連接的結(jié)果是一個關(guān)系表,關(guān)系72兩表自然連接查詢【例3-35】【例3-35】求成績在85分以上學(xué)生的學(xué)號、姓名和成績。

牛牛文庫文檔分享兩表自然連接查詢【例3-35】【例3-35】求成績在85分73求成績在85分以上學(xué)生的學(xué)號、姓名和成績select學(xué)生表.學(xué)號,姓名,成績

from學(xué)生表,成績表

where學(xué)生表.學(xué)號=成績表.學(xué)號

and成績>=85;

牛牛文庫文檔分享求成績在85分以上學(xué)生的學(xué)號、姓名和成績select學(xué)生表74兩表自然連接查詢---別名例子為簡化SELECT的書寫,SQL中允許使用表的別名,上例可寫成如下SELECT語句。selecta.學(xué)號,姓名,成績

from學(xué)生表a,成績表b

wherea.學(xué)號=b.學(xué)號and成績>=85;a表示是數(shù)據(jù)表“學(xué)生表”的別名b是數(shù)據(jù)表“成績表”的別名

牛牛文庫文檔分享兩表自然連接查詢---別名例子為簡化SELECT的書寫,SQ75多表自然連接查詢【例3-36】將兩表的自然連接推廣到多表【例3-36】將“學(xué)生表”、“成績表”和“課程表”進(jìn)行自然連接,求結(jié)果。

牛牛文庫文檔分享多表自然連接查詢【例3-36】將兩表的自然連接推廣到多表ww76多表自然連接查詢【例3-36】2select*

from(學(xué)生表innerjoin成績表

on學(xué)生表.學(xué)號=成績表.學(xué)號)

innerjoin課程表

on課程表.課程號=成績表.課程號;本例中可理解為先進(jìn)行“課程表”與“成績表”的自然連接,然后再用得到的關(guān)系與“學(xué)生表”進(jìn)行自然連接。例3-36的另一種書寫方式為:

select*

from學(xué)生表,成績表,課程表

where學(xué)生表.學(xué)號=成績表.學(xué)號

and課程表.課程號=成績表.課程號;

牛牛文庫文檔分享多表自然連接查詢【例3-36】2select*

from77多表自然連接查詢一般方法必須首先知道數(shù)據(jù)庫模式,才能編寫正確的SQL語句數(shù)據(jù)庫導(dǎo)航概念根據(jù)給出的已知條件,求需要的數(shù)據(jù)。已知條件是在一個表中的某個字段取值,所求數(shù)據(jù)是我們感興趣的字段。要從已知的數(shù)據(jù)表出發(fā),通過表間的關(guān)聯(lián)到達(dá)目的表,最后根據(jù)題目要求篩選相關(guān)的字段和記錄。

牛牛文庫文檔分享多表自然連接查詢一般方法必須首先知道數(shù)據(jù)庫模式,才能編寫正確78多表的自然連接查詢【例3-37】【例3-37】求“楊小建”的成績表。根據(jù)給出的數(shù)據(jù)庫模式,我們知道:已知條件為“學(xué)生表”的“姓名”字段其內(nèi)容等于“楊小建”待求的是“課程表”中的“課程號、課程名”和“成績表”中的“成績”

牛牛文庫文檔分享多表的自然連接查詢【例3-37】【例3-37】求“楊小建”的79多表的自然連接查詢【例3-37】select課程表.課程號,課程名,成績

from(學(xué)生表innerjoin成績表

on學(xué)生表.學(xué)號=成績表.學(xué)號)

innerjoin課程表

on課程表.課程號=成績表.課程號

where姓名=“楊小建”;或selectc.課程號,課程名,成績

from學(xué)生表a

,成績表b,課程表c

wherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號and姓名=“楊小建”;

牛牛文庫文檔分享多表的自然連接查詢【例3-37】select課程表.課程號80多表的自然連接查詢【例3-38】【例3-38】求會計學(xué)081班的所有成績單。分析:已知條件為“班級表”中的“專業(yè)名稱”待求為“學(xué)生表”的“姓名”;“課程”表的“課程號、課程名”;“成績表”的“成績”

牛牛文庫文檔分享多表的自然連接查詢【例3-38】【例3-38】求會計學(xué)08181多表的自然連接查詢【例3-38】2select學(xué)生表.學(xué)號,姓名,課程表.課程號,課程名,成績,班級表.班號

from(班級表innerjoin學(xué)生表on班級表.班號=學(xué)生表.班號)

innerjoin

(課程表innerjoin成績表on課程表.課程號=成績表.課程號)

on學(xué)生表.學(xué)號=成績表.學(xué)號

where班級表.班號=“會計學(xué)081”;select學(xué)生表.學(xué)號,姓名,課程表.課程號,課程名,成績,班級表.班號

from班級表,學(xué)生表,課程表,成績表Where班級表.班號=學(xué)生表.班號and

學(xué)生表.學(xué)號=成績表.學(xué)號and

班級表.班號=“會計學(xué)081”;

牛牛文庫文檔分享多表的自然連接查詢【例3-38】2select學(xué)生表.學(xué)號82【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。

牛牛文庫文檔分享【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。83多表自然連接查詢【例3-39】【例3-39】求“會計學(xué)081”的《高等數(shù)學(xué)III》成績單。selectb.學(xué)號,姓名,c.課程號,課程名,成績,a.班號from班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號anda.班號="會計學(xué)081"and課程名="高等數(shù)學(xué)III";

牛牛文庫文檔分享多表自然連接查詢【例3-39】【例3-39】求“會計學(xué)08184多表查詢GROUPBY【例3-40】【例3-40】求每個學(xué)生所修的總學(xué)分?jǐn)?shù)。

牛牛文庫文檔分享多表查詢GROUPBY【例3-40】【例3-40】求每個85求每個學(xué)生所修的總學(xué)分?jǐn)?shù)select姓名,sum(學(xué)分)as學(xué)分合計from學(xué)生表a,成績表b,課程表cwherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號groupby姓名orderbysum(學(xué)分)desc;

牛牛文庫文檔分享求每個學(xué)生所修的總學(xué)分?jǐn)?shù)select姓名,sum(學(xué)分)86多表查詢使用GROUPBY的例子【例3-41】求總學(xué)分在11分以上的學(xué)生姓名

牛牛文庫文檔分享多表查詢使用GROUPBY的例子【例3-41】求總學(xué)分在187求總學(xué)分在11分以上的學(xué)生姓名select姓名,sum(學(xué)分)as學(xué)分合計from學(xué)生表a,成績表b,課程表cwherea.學(xué)號=b.學(xué)號andc.課程號=b.課程號groupby姓名havingsum(學(xué)分)>=11;不難看出,HAVING子句的功能是過濾GROUPBY子句的結(jié)果。

牛牛文庫文檔分享求總學(xué)分在11分以上的學(xué)生姓名select姓名,sum(學(xué)883.2.4參數(shù)查詢前面我們編寫的查詢,運(yùn)行時直接返回結(jié)果,即所有的數(shù)據(jù)已經(jīng)編寫在SQL語句中。所謂參數(shù)查詢是指在運(yùn)行該查詢時,系統(tǒng)會要求用戶輸入所需的參數(shù)值。

牛牛文庫文檔分享3.2.4參數(shù)查詢前面我們編寫的查詢,運(yùn)行時直接返回結(jié)果,89參數(shù)查詢【例3-42】【例3-42】用戶隨機(jī)輸入入學(xué)成績,使用參數(shù)查詢求大于該入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。

select學(xué)號,姓名,入學(xué)成績

from學(xué)生表

where入學(xué)成績>=[請輸入入學(xué)成績];運(yùn)行該查詢時,首先彈出一個對話框,在輸入620,單擊確定后,得到所需的結(jié)果。下次運(yùn)行,根據(jù)用戶隨機(jī)輸入的值,返回不同結(jié)果。

牛牛文庫文檔分享參數(shù)查詢【例3-42】【例3-42】用戶隨機(jī)輸入入學(xué)成績,903.2.4參數(shù)查詢【例3-43】【例3-43】用戶隨機(jī)輸入學(xué)生姓氏,輸出該姓氏的所有學(xué)生學(xué)號和姓名。

select學(xué)號,姓名from學(xué)生表where姓名like[請輸入姓氏]&"*";

牛牛文庫文檔分享3.2.4參數(shù)查詢【例3-43】【例3-43】用戶隨機(jī)輸入91參數(shù)查詢【例3-44】【例3-44】隨機(jī)輸入入學(xué)成績的下限和上限,輸出入學(xué)成績在下限和上限之間的所有學(xué)生學(xué)號,姓名和入學(xué)成績。

select學(xué)號,姓名,入學(xué)成績from學(xué)生表where入學(xué)成績between[請輸入入學(xué)成績下限]and[請輸入入學(xué)成績上限];

牛牛文庫文檔分享參數(shù)查詢【例3-44】【例3-44】隨機(jī)輸入入學(xué)成績的下限和923.2.5SQL子查詢與合并查詢1.SQL子查詢帶IN子查詢帶關(guān)系運(yùn)算符子查詢ALL限定詞ANY限定詞2.合并查詢

牛牛文庫文檔分享3.2.5SQL子查詢與合并查詢1.SQL子查詢www.931.SQL子查詢子查詢是一個SELECT語句,它嵌套在一個SELECT語句(也可是INSERT語句、DELETE語句或UPDATE語句)的WHERE子句部分子查詢的SELECT查詢總是使用圓括號括起來。子查詢也可嵌套在另一子查詢中。有三種語法來創(chuàng)建子查詢:(1)WHERE表達(dá)式[NOT]IN(子查詢語句)(2)WHERE表達(dá)式關(guān)系運(yùn)算符[ANY|ALL](子查詢語句)(3)WHERE[NOT]EXISTS(子查詢語句)

牛牛文庫文檔分享1.SQL子查詢子查詢是一個SELECT語句,它嵌套在一個94帶IN子查詢僅講解前兩種子查詢(1)帶IN子查詢

IN子查詢語法結(jié)構(gòu)為:

WHERE表達(dá)式[NOT]IN(子查詢語句)

牛牛文庫文檔分享帶IN子查詢僅講解前兩種子查詢牛95帶IN子查詢【例3-45】【例3-45】求“會計學(xué)”專業(yè)的所有的同學(xué)學(xué)號、姓名和班號。

可以用自然連接實(shí)現(xiàn),也可以借助子查詢來完成。先查班級表中“會計學(xué)”專業(yè)對應(yīng)的班級號,再對學(xué)生表中查找相應(yīng)班級號的同學(xué)學(xué)號、姓名和班號。

牛牛文庫文檔分享帶IN子查詢【例3-45】【例3-45】求“會計學(xué)”專業(yè)的所96帶IN子查詢【例3-45】2select學(xué)號,姓名,班號

from學(xué)生表

where班號in(select班號

from班級表

where專業(yè)="會計學(xué)");

牛牛文庫文檔分享帶IN子查詢【例3-45】2select學(xué)號,姓名,班號97帶IN子查詢【例3-46】【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。

牛牛文庫文檔分享帶IN子查詢【例3-46】【例3-46】求沒有修“高等數(shù)學(xué)I98【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。select學(xué)號,姓名from學(xué)生表where學(xué)號notin(select學(xué)號

from成績表,課程表

where成績表.課程號=課程表.課程號and課程名="高等數(shù)學(xué)III");

牛牛文庫文檔分享【例3-46】求沒有修“高等數(shù)學(xué)III”同學(xué)的學(xué)號和姓名。w99帶關(guān)系運(yùn)算符子查詢(2)帶關(guān)系運(yùn)算符子查詢語法結(jié)構(gòu)為:WHERE表達(dá)式關(guān)系運(yùn)算符[ANY|ALL](子查詢語句)當(dāng)子查詢返回單值時,符號ANY或ALL可以省略其他情況下,必須使用ANY或ALL修飾>ANY大于子查詢結(jié)果中的某個最小值<ANY小于子查詢結(jié)果中的某個最大值>=ANY大于等于子查詢結(jié)果中的某個最小值<=ANY小于等于子查詢結(jié)果中的某個最大值=ANYWhere表達(dá)式在子查詢結(jié)果中的某個值中<>ANY無意義>ALL大于子查詢結(jié)果中的某個最大值<ALL小于子查詢結(jié)果中的某個最小值>=ALL大于等于子查詢結(jié)果中的某個最大值<=ALL小于等于子查詢結(jié)果中的某個最小值=ALL無意義<>ALLWhere表達(dá)式不在子查詢結(jié)果中的某個值中

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢(2)帶關(guān)系運(yùn)算符子查詢語法結(jié)構(gòu)為:>A100帶關(guān)系運(yùn)算符子查詢【例3-47】【例3-47】求入學(xué)成績高于平均入學(xué)成績的“計算機(jī)科學(xué)與技術(shù)081”同學(xué)學(xué)號和姓名。求解步驟分為兩步,求“計算機(jī)科學(xué)與技術(shù)081”平均入學(xué)成績,求“計算機(jī)科學(xué)與技術(shù)081”入學(xué)成績大于平均入學(xué)成績的學(xué)號和姓名。

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢【例3-47】【例3-47】求入學(xué)成績高于101帶關(guān)系運(yùn)算符子查詢【例3-47】2select學(xué)號,姓名from學(xué)生表where班號="計算機(jī)科學(xué)與技術(shù)081"and入學(xué)成績>=(selectavg(入學(xué)成績)from學(xué)生表

where班號="計算機(jī)科學(xué)與技術(shù)081");

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢【例3-47】2select學(xué)號,姓名w102帶關(guān)系運(yùn)算符子查詢

ANY和ALL功能。給出高于“會計學(xué)091”班的同學(xué)入學(xué)成績的學(xué)生的學(xué)號、姓名、班號和入學(xué)成績Select學(xué)號,姓名,班號,入學(xué)成績From學(xué)生表Where入學(xué)成績>any(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091");

牛牛文庫文檔分享帶關(guān)系運(yùn)算符子查詢

ANY和ALL功能。給出高于“會計學(xué)09103Select學(xué)號,姓名,班號,入學(xué)成績From學(xué)生表Where入學(xué)成績>(selectmin(入學(xué)成績)from學(xué)生表

where班號="會計學(xué)091");

牛牛文庫文檔分享Select學(xué)號,姓名,班號,入學(xué)成績www.niuw104ANY功能---例3-48【例3-48】求入學(xué)成績小于等于班號為“會計學(xué)091”學(xué)生的任一入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=any(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091")

and班號<>"會計學(xué)091"orderby入學(xué)成績desc;

牛牛文庫文檔分享ANY功能---例3-48【例3-48】www.niuwk.105ANY功能【例3-48】3等價于:select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=(selectmax(入學(xué)成績)from學(xué)生表

where班號="會計學(xué)091")and班號<>"會計學(xué)091"orderby入學(xué)成績desc;

牛牛文庫文檔分享ANY功能【例3-48】3等價于:106ALL功能【例3-49】【例3-49】求小于等于所有班號為“會計學(xué)091”學(xué)生入學(xué)成績的學(xué)生學(xué)號、姓名和入學(xué)成績。

牛牛文庫文檔分享ALL功能【例3-49】【例3-49】求小于等于所有班號為“107ALL功能【例3-49】2select學(xué)號,姓名,班號,入學(xué)成績from學(xué)生表where入學(xué)成績<=all(select入學(xué)成績

from學(xué)生表

where班號="會計學(xué)091")and班號<>"會計學(xué)091"orderby入學(xué)成績desc;結(jié)果為小于等于“會計學(xué)091”班最小成績556分的所有非“會計學(xué)091”同學(xué)。思考:在子查詢中使用聚合函數(shù)完成上述功能。

牛牛文庫文檔分享ALL功能【例3-49】2select學(xué)號,姓名,班號1082.SQL合并查詢SQL合并查詢就是將兩個SELECT語句的查詢結(jié)果通過并運(yùn)算(UNION)合并為一個查詢結(jié)果。SQL合并查詢要求兩個查詢的字段個數(shù)相同,且對應(yīng)字段的數(shù)據(jù)類型相同。

牛牛文庫文檔分享2.SQL合并查詢SQL合并查詢就是將兩個SELECT語句109SQL合并查詢【例3-50】【例3-50】使用SQL合并查詢運(yùn)算求“會計學(xué)081”班和“會計學(xué)091”的學(xué)號、姓名和班號。

雖然該查詢操作可以使用集合包含條件描述,但也可使用SQL合并查詢完成。

牛牛文庫文檔分享SQL合并查詢【例3-50】【例3-50】使用SQL合并查110SQL合并查詢【例3-50】2select學(xué)號,姓名,班號

from學(xué)生表

where班號=“會計學(xué)081”

union

select學(xué)號,姓名,班號

from學(xué)生表

where班號=“會計學(xué)091”;

牛牛文庫文檔分享SQL合并查詢【例3-50】2牛1113.2.6交叉表查詢交叉表查詢是Access特有的SQL查詢語句?!纠?-51】求給定課程選修總?cè)藬?shù),但要給出各班級的人數(shù)。transformcount(d.學(xué)號)asAAselect課程名,count(d.學(xué)號)as選課人數(shù)from班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號andb.學(xué)號=d.學(xué)號groupby課程名pivota.班號;

牛牛文庫文檔分享3.2.6交叉表查詢交叉表查詢是Access特有的SQL查112交叉表查詢---語句

牛牛文庫文檔分享交叉表查詢---語句牛牛文庫文檔113查詢向?qū)Ь帉懡徊娌樵儭纠?-52】【例3-52】使用查詢向?qū)В帉懡徊娌樵?。?)打開Access“教學(xué)管理數(shù)據(jù)庫”文件。(2)編寫一個稱為“查詢4張表”的查詢,語句如下:selecta.專業(yè),a.班號,d.學(xué)號,d.課程號,c.課程名FROM班級表a,學(xué)生表b,課程表c,成績表dwherea.班號=b.班號andc.課程號=d.課程號and

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論