版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL教學(xué)目標(biāo)掌握SQL修改表結(jié)構(gòu)的規(guī)則與方法
;掌握SQL修改數(shù)據(jù)的規(guī)則與方法
;掌握SQL數(shù)據(jù)查詢功能的語句規(guī)則和特點(diǎn)。重點(diǎn)與難點(diǎn):表定義中數(shù)據(jù)完整性規(guī)則的設(shè)定、多表連接查詢的方法與使用規(guī)則、在分組查詢中使用函數(shù)的規(guī)則和方法、使用嵌套子查詢的方法和規(guī)則、綜合應(yīng)用SQL數(shù)據(jù)查詢功能完成實(shí)際問題的能力。
10.1
SQL概述
SQL是StructuredQueryLanguage的縮寫,即結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。主要特點(diǎn):⑴SQL是一種功能齊全的一體化語言。⑵SQL是一種高度非過程化的語言。⑶SQL語言簡潔,易學(xué)易用。⑷語言共享。SQL語言可以分成以下幾組:數(shù)據(jù)定義語言DDL(DataDefinitionLanguage):包括定義、修改與刪除基本表及建立與刪除索引等。數(shù)據(jù)操縱語言DML(DataManipulationLanguage):包括插入、修改與刪除數(shù)據(jù)等。數(shù)據(jù)查詢語言DQL(DataQueryLanguage):包括單表查詢、連接查詢、嵌套查詢等各種查詢功能。數(shù)據(jù)控制語言DCL(DataControlLanguage):包括數(shù)據(jù)的安全性控制、數(shù)據(jù)的完整性控制、數(shù)據(jù)庫的恢復(fù)及并發(fā)控制等功能。Access支持?jǐn)?shù)據(jù)定義、數(shù)據(jù)查詢和數(shù)據(jù)操作功能。
SQL功能命令動(dòng)詞數(shù)據(jù)定義
CREAT、ALTER、DROP數(shù)據(jù)操作
INSERT、DELETE、UPDATE數(shù)據(jù)查詢
SELECT
10.2數(shù)據(jù)定義一.創(chuàng)建表格式:
CREATETABLE<表名>(<字段名1><類型名>[(長度)][PRIMARYKEY][NOTNULL][,<字段名2><類型名>[(長度)][NOTNULL]]…)功能:創(chuàng)建一個(gè)數(shù)據(jù)表的結(jié)構(gòu)。說明:
<表名>:要?jiǎng)?chuàng)建的數(shù)據(jù)表的名字。
<字段名><類型名>:要?jiǎng)?chuàng)建的數(shù)據(jù)表的字段名和字段類型。字段長度僅限于文本及二進(jìn)制字段。
PRIMARYKEY:表示將該字段定義為主鍵。
NOTNULL:不允許字段值為空,而NULL允許字段值為空。例10.1
在職工管理數(shù)據(jù)庫中建立一個(gè)數(shù)據(jù)表“職工”,表結(jié)構(gòu)由職工號(hào)、姓名、性別、職稱、部門、出生日期、婚否等字段組成。并設(shè)置“職工號(hào)”為主鍵。
操作步驟如下:①創(chuàng)建“職工管理”數(shù)據(jù)庫。②在“職工管理”數(shù)據(jù)庫窗口中選擇“查詢”對(duì)象。③雙擊“在設(shè)計(jì)視圖中創(chuàng)建查詢”,關(guān)閉彈出的“顯示表”對(duì)話框,打開查詢?cè)O(shè)計(jì)視圖窗口。④選擇“查詢”菜單中“SQL特定查詢”下的“數(shù)據(jù)定義”命令項(xiàng),打開“數(shù)據(jù)定義查詢”窗口。⑤在“數(shù)據(jù)定義查詢”窗口中輸入SQL語句,每個(gè)數(shù)據(jù)定義查詢只能包含一條數(shù)據(jù)定義語句。
CREATEDATABASE
職工管理
CREATETABLE
職工(職工號(hào)TEXT(5)
PRIMARYKEY,姓名
TEXT(4),性別TEXT(1),職稱TEXT(4),部門TEXT(8),出生日期DATE,婚否LOGICAL)⑥保存查詢?yōu)椤皵?shù)據(jù)表定義查詢(職工)”,查詢建立完畢。⑦運(yùn)行查詢。在設(shè)計(jì)視圖中,單擊工具欄上的“運(yùn)行”按鈕,執(zhí)行SQL語句,完成創(chuàng)建表的操作。⑧在數(shù)據(jù)庫窗口中單擊“表”對(duì)象,可以看到在“表”列表框中多了一個(gè)“職工”表,這就是用SQL的定義查詢創(chuàng)建的表。例10.2在職工管理數(shù)據(jù)庫中建立一個(gè)數(shù)據(jù)表“工資”,并通過“職工號(hào)”字段建立與“職工”表的關(guān)系。
CREATETABLE
工資(職工號(hào)TEXT(5)PRIMARYKEY
REFERENCES
職工,
工資Single,津貼Single,所得稅Single,公積金Single,
水電費(fèi)Single,應(yīng)扣Single,實(shí)發(fā)Single)
其中的“REFERENCES
職工”表示與“職工”表建立關(guān)系。格式:DROPTABLE
<表名>功能:刪除指定的數(shù)據(jù)表文件說明:一定要慎用DROPTABLE語句,一旦使用以后就無法恢復(fù)表或其中的數(shù)據(jù),此表上建立的索引也將自動(dòng)刪除,并且無法恢復(fù)。二.刪除表例10.3
刪除例10.2建立的工資表操作步驟如下:①打開“數(shù)據(jù)定義查詢”窗口。②輸入刪除表的SQL語句:
DROPTABLE
工資③單擊工具欄上的“運(yùn)行”按鈕,完成刪除表的操作,“工資”表將從“職工管理”數(shù)據(jù)庫窗口消失。三、修改表的結(jié)構(gòu)格式一:
ALTERTABLE<表名>[ADD<新字段名1><類型名>[(長度)][,<新字段名2><類型名>[(長度)]…]][DROP<字段名1>[,<字段名2>…][ALTER<字段名1><類型名>[(長度)][,<字段名2><類型名>[(長度)]…]]
功能:修改指定的數(shù)據(jù)表的結(jié)構(gòu)。說明:
<表名>:要修改的數(shù)據(jù)表的名字。
ADD子句用于增加新的字段。
DROP子句用于刪除指定的字段。
ALTER子句用于修改原有字段的定義,包括字段名、數(shù)據(jù)類型和字段的長度。應(yīng)注意ADD子句、DROP子句和ALTER子句不能同時(shí)使用。例10.4
為職工表增加一個(gè)電話號(hào)碼字段操作步驟如下:①在“職工管理”數(shù)據(jù)庫窗口中選擇“查詢”對(duì)象。②雙擊“在設(shè)計(jì)視圖中創(chuàng)建查詢”,關(guān)閉彈出的“顯示表”對(duì)話框,打開查詢?cè)O(shè)計(jì)視圖窗口。③選擇“查詢”菜單中“SQL特定查詢”下的“數(shù)據(jù)定義”命令項(xiàng),打開“數(shù)據(jù)定義查詢”窗口。④在“數(shù)據(jù)定義查詢”窗口中,輸入修改表結(jié)構(gòu)的SQL語句:
ALTERTABLE
職工ADD
電話號(hào)碼Text(8)⑤單擊工具欄上的“運(yùn)行”按鈕,完成修改表結(jié)構(gòu)的操作。例10.5
將職工表的姓名字段的寬度由原來的6改為8,SQL語句如下:
ALTERTABLE
職工ALTER
姓名Text(8)例10.6
刪除職工表“電話號(hào)碼”字段,SQL語句如下:
ALTERTABLE
職工DROP
電話號(hào)碼
10.3數(shù)據(jù)操作一.插入記錄格式:
INSERTINTO
<表名>[(<字段名清單>)]VALUES
(<表達(dá)式清單>)功能:在指定的數(shù)據(jù)表的尾部添加一條新記錄。說明:
<表名>:要插入數(shù)據(jù)的表的名字。
<字段名清單>為數(shù)據(jù)表要插入新值的字段。
VALUES(表達(dá)式清單)為數(shù)據(jù)表要插入新值的各字段的數(shù)據(jù)值。
<字段名清單>和VALUES子句中(表達(dá)式清單)的個(gè)數(shù)和數(shù)據(jù)類型要完全一致。若省略<字段名清單>,則數(shù)據(jù)表中的所有字段必須在VALUES子句中都有相應(yīng)的值。例10.7
在職工表尾部添加一條新記錄。操作步驟如下:①在“職工管理”數(shù)據(jù)庫窗口中,打開“數(shù)據(jù)定義查詢”窗口。②輸入SQL語句:INSERTINTO
職工(職工號(hào),姓名,性別,職稱,部門,出生日期,婚否)VALUES("01001","陳周","男","教授","計(jì)算機(jī)",#1958-03-05#,yes)③單擊工具欄上的“運(yùn)行”按鈕,完成插入數(shù)據(jù)的操作。例10.8
在職工表尾部插入第二條記錄,SQL語句如下:INSERTINTO
職工VALUES("03021","劉楊","女","副教授","管理",#1962-06-18#,no)格式:UPDATE
<表名>
SET
<字段名1>=表達(dá)式1
[,<字段名2>=表達(dá)式2…][WHERE<條件>]
功能:根據(jù)WHERE子句指定的條件,對(duì)指定記錄的字段值進(jìn)行更新說明:
<表名>:要更新數(shù)據(jù)的表的名字。
<字段名>=<表達(dá)式>是指用<表達(dá)式>的值替代<字段名>的值,一次可更新多個(gè)字段的值。若省略WHERE子句,則更新全部記錄。一次只能在單一的表中更新記錄。二.更新數(shù)據(jù)例10.9
計(jì)算工資表中的應(yīng)扣和實(shí)發(fā)數(shù)。①在“職工管理”數(shù)據(jù)庫窗口中,打開“數(shù)據(jù)定義查詢”窗口②輸入SQL語句:
UPDATE
工資SET
應(yīng)扣=所得稅+公積金+水電費(fèi),實(shí)發(fā)=工資+補(bǔ)貼-應(yīng)扣③單擊工具欄上的“運(yùn)行”按鈕,完成更新數(shù)據(jù)的操作。格式:
DELETEFROM
<表名>[WHERE<條件>]
功能:根據(jù)WHERE子句指定的條件,刪除表中指定的記錄。說明:<表名>:要?jiǎng)h除數(shù)據(jù)的表的名字。若省略WHERE子句,則刪除表中全部記錄。DELETE語句刪除的只是表中的數(shù)據(jù),而不是表的結(jié)構(gòu)。三.刪除數(shù)據(jù)例10.10
將職工表中職工號(hào)為“03021”的記錄刪除。①在“職工管理”數(shù)據(jù)庫窗口中,打開“數(shù)據(jù)定義查詢”窗口。②輸入SQL語句:
DELETEFROM
職工
WHERE
職工號(hào)="03021"③單擊工具欄上的“運(yùn)行”按鈕,完成刪除數(shù)據(jù)的操作。
10.4數(shù)據(jù)查詢一.SELECT查詢命令格式:SELECT[ALL|DISTINCT|TOPn[PERCENT]]<字段名>|<字段表達(dá)式>|<函數(shù)>[,…]FROM<數(shù)據(jù)源表或查詢>[WHERE<篩選條件>][GROUPBY<分組字段表>[HAVING<過濾條件>][ORDERBY<排序關(guān)鍵字1>[ASC|DESC][,<排序關(guān)鍵字2>[ASC|DESC]…]]
功能:
從FROM子句列出的表或查詢中,選擇滿足WHERE子句中給出的條件的記錄,然后按GROUPBY子句(分組子句)中指定字段的值分組,再提取滿足HAVING
子句中過濾條件的那些組,按SELECT子句給出的字段名或字段表達(dá)式求值輸出。ORDERBY子句(排序子句)是對(duì)輸出的目標(biāo)表進(jìn)行重新排序,并可附加說明ASC(升序)或DESC(降序)排列。
說明:ALL:查詢的結(jié)果中包含數(shù)據(jù)源中的所有記錄。DISTINCT:查詢的結(jié)果中不包含數(shù)據(jù)源中重復(fù)行的記錄。<字段名表>:指定查詢結(jié)果輸出的字段,如果要包含數(shù)據(jù)源中的所有字段,可以使用通配符“*”。AS<列名稱>:如果在輸出時(shí)不希望使用原來的字段名,可以用列名稱重新設(shè)置。FROM<數(shù)據(jù)源表或查詢>:指出查詢的數(shù)據(jù)來源。WHERE<篩選條件>:說明查詢條件,即選擇記錄的條件。二.簡單查詢格式:SELECT[ALL|DISTINCT]<字段名1>[AS<列名稱>][,<字段名2>[AS<列名稱>]…]
FROM<數(shù)據(jù)源表或查詢>[WHERE<篩選條件>]1.基本查詢例10.11
查詢學(xué)生表的全部字段。操作步驟如下:①在“學(xué)生成績管理”數(shù)據(jù)庫窗口中選擇“查詢”對(duì)象。②雙擊“在設(shè)計(jì)視圖中創(chuàng)建查詢”,關(guān)閉彈出的“顯示表”對(duì)話框,打開查詢?cè)O(shè)計(jì)視圖窗口。③選擇“視圖”菜單的“SQL視圖”命令項(xiàng),打開“選擇查詢”窗口。④輸入SQL語句:
SELECT*FROM學(xué)生⑤保存查詢,查詢建立完畢。⑥運(yùn)行查詢。例10.12查詢學(xué)生表中所有學(xué)生的姓名和截至統(tǒng)計(jì)時(shí)的年齡,去掉重名。SQL語句如下:
SELECTDISTINCT
姓名,YEAR(DATE())-YEAR(出生日期)AS
年齡FROM
學(xué)生例10.13查詢學(xué)生表中所有已通過四級(jí)的男生記錄。SQL語句如下:
SELECT*FROM
學(xué)生WHERE
性別="男"AND
四級(jí)通過=yes2.帶特殊運(yùn)算符的條件查詢SELECT語句可以使用的特殊運(yùn)算符有:(1)BETWEEN…AND運(yùn)算符格式:<字段名>[NOT]BETWEEN<初值>AND<終值>BETWEEN運(yùn)算符用于檢測字段的值是否介于指定的范圍內(nèi)。(2)IN運(yùn)算符格式:<字段名>[NOT]IN(<表達(dá)式1>[,<表達(dá)式2>…])IN運(yùn)算符用于檢測字段的值是否屬于表達(dá)式集合或子查詢。(3)LIKE運(yùn)算符格式:<字段名>LIKE<字符表達(dá)式>LIKE運(yùn)算符用于檢測字段的值是否與樣式字符串匹配。例10.14:查詢學(xué)生表中入學(xué)成績?cè)?50~570之間的學(xué)號(hào)、姓名、入學(xué)成績。SQL語句如下:
SELECT
學(xué)號(hào),姓名,入學(xué)成績
FROM
學(xué)生
WHERE
入學(xué)成績BETWEEN550AND570上述語句的功能相當(dāng)于:
SELECT學(xué)號(hào),姓名,入學(xué)成績
FROM
學(xué)生
WHERE
入學(xué)成績>=550AND
入學(xué)成績<=570例10.15:查詢學(xué)生表中學(xué)號(hào)為070102和070401的記錄。SQL語句如下:SELECT*FROM
學(xué)生WHERE
學(xué)號(hào)IN("070102","070401")上述語句的功能相當(dāng)于:SELECT*FROM
學(xué)生WHERE
學(xué)號(hào)="070102"OR
學(xué)號(hào)="070401"例10.16:查詢學(xué)生表中姓“王”的學(xué)生的記錄。SQL語句如下:
SELECT*FROM學(xué)生
WHERE
姓名LIKE"王*"通配符“*”表示零個(gè)或多個(gè)字符“?”表示一個(gè)字符
3.計(jì)算查詢函數(shù)
功能COUNT(<字段名>)對(duì)指定字段的值計(jì)算個(gè)數(shù)COUNT(*)計(jì)算記錄個(gè)數(shù)SUM(<字段名>)計(jì)算指定的數(shù)值列的和AVG(<字段名>)計(jì)算指定的數(shù)值列的平均值MAX(<字段名>)計(jì)算指定的字符、日期或數(shù)值列中的最大值MIN(<字段名>)計(jì)算指定的字符、日期或數(shù)值列中的最小值說明:(字段名)可以是字段名,也可以是SQL表達(dá)式。上述聚合函數(shù)可以用在SELECT短語中對(duì)查詢結(jié)果進(jìn)行計(jì)算,也可以在HAVING子句中構(gòu)造分組篩選條件。例10.17:在學(xué)生表中統(tǒng)計(jì)學(xué)生人數(shù)。SQL語句如下:SELECTCOUNT(*)AS
學(xué)生人數(shù)
FROM
學(xué)生例10.18:查詢學(xué)生表中男生入學(xué)成績字段的平均值、最大值和最小值。SQL語句如下:SELECT“男”AS
性別,AVG(入學(xué)成績)AS
入學(xué)平均分
MAX(入學(xué)成績)AS
入學(xué)最高分,MIN(入學(xué)成績)AS
入學(xué)最低分
FROM
學(xué)生
WHERE
性別="男"4.分組與計(jì)算查詢格式:GROUPBY<分組關(guān)鍵字1>[,<分組關(guān)鍵字2>…][HAVING<篩選條件>]說明:①分組關(guān)鍵字是分組的依據(jù),可以是字段名,也可以是SQL函數(shù)表達(dá)式,還可以是字段序號(hào)(從1開始)。②HAVING是對(duì)分組進(jìn)行篩選的條件。HAVING只能與GROUPBY一起出現(xiàn),不能單獨(dú)使用。例10.19:分別統(tǒng)計(jì)男、女學(xué)生人數(shù)和入學(xué)成績的最高分和平均分。SELECT
性別,COUNT(性別)AS
人數(shù),MAX(入學(xué)成績)AS
入學(xué)最高分,AVG(入學(xué)成績)AS
入學(xué)平均分
FROM
學(xué)生GROUPBY
性別例10.20:在成績表中統(tǒng)計(jì)有6個(gè)以上學(xué)生選修的課程。SQL語句如下:SELECT
課程號(hào),COUNT(*)AS
選課人數(shù)
FROM
成績
GROUPBY
課程號(hào)HAVINGCOUNT(*)>=6例10.21:對(duì)1992年以后出生的學(xué)生分別按專業(yè)統(tǒng)計(jì)入學(xué)成績,并輸出入學(xué)平均成績?cè)?60分以上的組。SELECT
專業(yè),AVG(入學(xué)成績)AS
入學(xué)平均分
FROM
學(xué)生
WHERE
出生日期>=#1988-01-01#GROUPBY
專業(yè)HAVINGAVG(入學(xué)成績)>=560說明:
HAVING與WHERE的區(qū)別在于:WHERE是對(duì)表中所有記錄進(jìn)行篩選,HAVING是對(duì)分組結(jié)果進(jìn)行篩選。在分組查詢中如果既選用了WHERE,又選用了HAVING,執(zhí)行的順序是先用WHERE限定記錄,然后對(duì)篩選后的記錄按GROUPBY指定的分組關(guān)鍵字分組,最后用HAVING子句限定分組。5.排序格式:ORDERBY<排序關(guān)鍵字1>[ASC|DESC][,<排序關(guān)鍵字2>[ASC|DESC]…][TOP<數(shù)值表達(dá)式>[PERCENT]]說明:①ASC表示對(duì)查詢結(jié)果按指定字段升序排序。②DESC表示對(duì)查詢結(jié)果按指定字段降序排序;ASC|DESC缺省時(shí)默認(rèn)值是升序。③TOP必須與ORDERBY短語同時(shí)使用,表示從第一條記錄開始,顯示滿足條件的前N個(gè)記錄。選擇PERCENT短語時(shí),數(shù)值表達(dá)式表示百分比。
例10.22:在學(xué)生表中查詢?nèi)雽W(xué)成績?cè)谇?名的學(xué)生信息。SQL語句如下:
SELECTTOP3*
FROM學(xué)生
ORDERBY
入學(xué)成績DESC例10.23:顯示年齡最小的30%的學(xué)生的信息。SQL語句如下:
SELECTTOP20PERCENT*
FROM
學(xué)生
ORDERBY
出生日期DESC
SELECT命令支持多表之間的連接查詢,并提供了專門的JOIN子句。格式:SELECT<字段名表>
FROM<表名1>[INNER
JOIN<表名2>ON
<連接接條件>][WHERE<篩選條件>]其中:INNERJOIN用來連接左右兩個(gè)<表名>指定的表,ON用來指定連接條件。三.連接查詢例10.24:在職工管理數(shù)據(jù)庫中查詢高級(jí)職稱(教授或副教授)教師的姓名、基本工資、津貼和所得稅。SQL語句如下:
SELECT
姓名,工資,津貼,所得稅
FROM
職工INNERJOIN
工資ON職工.職工號(hào)=工資.職工號(hào)
WHERE
職稱
IN(“教授”,“副教授”)或者:
SELECT
姓名,工資,津貼,所得稅
FROM
職工,工資
WHERE
職工.職工號(hào)=工資.職工號(hào)AND職稱IN(“教授”,“副教授”)“職工號(hào)”是職工表和工資表的公共字段,“職工.職工號(hào)=工資.職工號(hào)”是連接條件。INNERJOIN
子句還可以嵌套,即在一個(gè)INNERJOIN
之中,可以嵌套多個(gè)INNERON
子句。例10.25:輸出所有學(xué)生每門課程的綜合成績單,要求給出學(xué)號(hào)、姓名、課程名和綜合成績信息。SQL語句如下:
SELECT
學(xué)生.學(xué)號(hào),姓名,平時(shí)*0.1+期中*0.2+期末*0.7AS
綜合成績
FROM
學(xué)生INNERJOIN(成績INNERJOIN
課程
ON
成績.課程號(hào)=課程.課程號(hào))ON
學(xué)生.學(xué)號(hào)=成績.學(xué)號(hào)或者:
SELECT學(xué)生.學(xué)號(hào),姓名,課程名,平時(shí)*0.1+期中*0.2+期末*0.7AS綜合成績
FROM
學(xué)生,成績,課程
WHERE
學(xué)生.學(xué)號(hào)=成績.學(xué)號(hào)AND
成績.課程號(hào)=課程.課程號(hào)說明:由于學(xué)號(hào)字段在兩個(gè)表中都出現(xiàn),為了防止二義性,在其列名前加上表名作為前綴,以示區(qū)別。如果列名是唯一的,則不必加前綴。例10.26:按各門課程期末平均成績的降序輸出每位學(xué)生的學(xué)號(hào)和期末平均成績(保留小數(shù)1位)。SQL語句如下:
SELECT
成績.學(xué)號(hào),ROUND(Avg(成績.期末),1)AS
期末平均成績
FROM
學(xué)生INNERJOIN
成績ON
學(xué)生.學(xué)號(hào)=成績.學(xué)號(hào)
GROUPBY
成績.學(xué)號(hào)
ORDERBY2DESC在SQL語言中,當(dāng)一個(gè)查詢是另一個(gè)查詢的條件時(shí),即在一個(gè)SELECT語句的WHERE子句中出現(xiàn)另一個(gè)SELECT語句,這種查詢稱為嵌套查詢。通常把內(nèi)層的查詢語句稱為子查詢,調(diào)用子查詢的查詢語句稱為父查詢。SQL語言允許多層嵌套查詢,即一個(gè)子查詢中還可以嵌套其他子查詢。子查詢的SELECT語句中不能使用ORDERBY子句,ORDERBY子句只能對(duì)最終查詢結(jié)果排序。四.嵌套查詢1.帶有比較運(yùn)算符的子查詢帶有比較運(yùn)算符的子查詢是指父查詢與子查詢之間用比較運(yùn)算符(>、<、=、>=、<=、<>)進(jìn)行連接。例10.27:查詢所有參加“計(jì)算機(jī)”課程考試的學(xué)生的學(xué)號(hào)。SELECT學(xué)號(hào)FROM
成績WHERE
課程號(hào)=(SELECT
課程號(hào)FROM
課程
WHERE課程名="計(jì)算機(jī)")例10.28:檢索所有入學(xué)成績高于于海濤的學(xué)生的學(xué)號(hào)、姓名、性別和入學(xué)成績。
SELECT
姓名,性別,入學(xué)成績FROM
學(xué)生
WHERE
入學(xué)成績>(SELECT
入學(xué)成績
FROM
學(xué)生
WHERE
姓名="于海濤")
例10.29:顯示入學(xué)成績高于男生平均入學(xué)成績的女生的學(xué)號(hào)、姓名和平均成績。
SELECT
學(xué)號(hào),姓名,入學(xué)成績
FROM
學(xué)生
WHERE
性別=“女”AND入學(xué)成績>=(SELECTAVG(入學(xué)成績)FROM
學(xué)生
WHERE
性別=“男”)2.帶有IN謂詞的子查詢格式:<字段名>[NOT]IN(<子查詢>)IN是屬于的意思,<字段名>指定的字段內(nèi)容屬于子查詢中任何一個(gè)值,運(yùn)算結(jié)果都為真。
例10.30:查詢所有參加“計(jì)算機(jī)”課程考試的學(xué)生的學(xué)號(hào)、姓名和性別。
SELECT
學(xué)號(hào),姓名,性別FROM學(xué)生
WHERE
學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM
成績
WHERE
課程號(hào)=(SELECT
課程號(hào)FROM
課程
WHERE課程名="計(jì)算機(jī)")3.帶有ANY或ALL謂詞的子查詢格式:<字段名><比較運(yùn)算符>[ANY|ALL](<子查詢>)注意:使用ANY或ALL謂詞時(shí)必須同時(shí)使用比較運(yùn)算符。例10.31:查詢?nèi)雽W(xué)成績高于女生最低入學(xué)成績的男生的學(xué)號(hào)、姓名和入學(xué)成績,SQL語句如下:
SELECT學(xué)號(hào),姓名,性別,入學(xué)成績FROM學(xué)生
WHERE
性別=“男”AND
入學(xué)成績>ANY(SELECT
入學(xué)成績FROM學(xué)生
WHERE
性別=“女”)用聚合函數(shù)來實(shí)現(xiàn):SELECT
學(xué)號(hào),姓名,性別,入學(xué)成績FROM
學(xué)生WHERE
性別=“男”AND
入學(xué)成績>=(SELECTMIN(入學(xué)成績)FROM
學(xué)生
WHERE性別=“女”)用聚合函數(shù)實(shí)現(xiàn)子查詢通常比直接用ANY或ALL查詢效率要高。4.帶有EXISTS謂詞的子查詢格式:[NOT]EXISTS(<子查詢>)帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值(true)或邏輯假值(false),即是否存在相應(yīng)的記錄。例10.32:查詢參加了A02課程考試的學(xué)生學(xué)號(hào)和姓名。SQL語句如下:SELECT學(xué)號(hào),姓名FROM學(xué)生WHEREEXISTS(SELECT*FROM成績
WHERE
成績.學(xué)號(hào)=學(xué)生.學(xué)號(hào)AND成績.課程號(hào)="A02");帶EXISTS的子查詢只返回真值或假值,其輸出項(xiàng)通常都用*例10.33:查詢參加了全部課程考試的學(xué)生學(xué)號(hào)和姓名。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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年光纖熔接工程外包勞務(wù)合同
- 定向培養(yǎng)預(yù)就業(yè)協(xié)議書案例
- 2024年汽修廠轉(zhuǎn)讓簡單合同
- 電視廣告制作與播放合同
- 2024關(guān)于合作協(xié)議書模板
- 中原地產(chǎn)策劃及銷售代理服務(wù)合同2024年
- 參股住宅建設(shè)合同書模板
- 電力工程維修分包合同模板
- 股票買賣代持協(xié)議
- 國內(nèi)離婚登記告知單2024年
- 中國動(dòng)態(tài)血糖監(jiān)測臨床應(yīng)用指南
- 小區(qū)擋土墻監(jiān)測方案
- 大象版-六年級(jí)省情、禮儀、心理健康、綜合知識(shí)教案(全冊(cè))
- 外科(整形外科方向)住院醫(yī)師規(guī)范化培訓(xùn)內(nèi)容與標(biāo)準(zhǔn)
- 學(xué)助產(chǎn)的職業(yè)生涯規(guī)劃書
- 蘇教版六下數(shù)學(xué)《正比例的意義》教學(xué)設(shè)計(jì)(區(qū)級(jí)公開課)
- 【S】幼兒繪本故事《三只小豬》課件
- 社團(tuán)組織結(jié)構(gòu)圖
- 2023年超星《軍事理論》考試題庫(通用題型)
- 2023年學(xué)習(xí)興稅(納稅服務(wù)條線)知識(shí)考試題庫(含答案)
- 《花樣年華》的美學(xué)分析
評(píng)論
0/150
提交評(píng)論