第一篇:查詢練習(xí)題
《網(wǎng)絡(luò)數(shù)據(jù)庫》講稿
查詢練習(xí)題
簡單的單表查詢
例1:檢索出1983年6月1日之后出生的學(xué)生的姓名、性別和民族,并按降序排列。
SELECT 姓名,性別,民族 FROM 學(xué)生 WHERE 出生日期>'1983-6-1' ORDER BY 出生日期 DESC
多表查詢
在FROM后跟隨多個表。
例1:查找出已修學(xué)分達到20分的學(xué)生的姓名、出生日期、班級名稱、已修學(xué)分。
SELECT 姓名,出生日期,班級名稱,已修學(xué)分FROM 學(xué)生,班級WHERE 學(xué)生.班級編號=班級.班級編號AND
已修學(xué)分>=20
解釋:這里的“學(xué)生.班級編號=班級.班級編號”是連接條件。如果在FROM短語中有兩個表,那么這兩個表必須具備可建立聯(lián)系的字段,否則無法查詢。如果FROM短語中的多個表中有同名字段,當(dāng)使用這些字段名時,需要在字段名左邊加上表名和圓點,作為字段名的前綴。
練習(xí)題01:查找出已修學(xué)分低于20分的學(xué)生的姓名、性別和班主任。練習(xí)題02:查找出學(xué)生“王林”的班主任。
練習(xí)題03:查找出班主任“劉成河”班的全部男生的信息。
例2:查找出課程“中國歷史”考試及格的全部學(xué)生的學(xué)號、姓名。
SELECT 學(xué)生.學(xué)號,姓名 FROM 學(xué)生,課程,成績 WHERE 分?jǐn)?shù)>=60 AND 課程名稱='中國歷史' AND 學(xué)生.學(xué)號=成績.學(xué)號 AND 成績.課程編號=課程.課程編號
練習(xí)題04:查找出課程“中國歷史”考試及格的全部學(xué)生的學(xué)號、姓名、班級名稱和分?jǐn)?shù)。練習(xí)題05:查找出全部同學(xué)的所有考試的姓名、課程名稱、分?jǐn)?shù),查找結(jié)果的格式如下:
嵌套查詢
P121-126
例1:查找出取得過95分及其以上考試成績的學(xué)生的學(xué)號和姓名。
SELECT 學(xué)號,姓名 FROM 學(xué)生 WHERE 學(xué)號IN(SELECT 學(xué)號 FROM 成績 WHERE 分?jǐn)?shù)>=95)
解釋:該命令中的IN相當(dāng)于集合運算的包含運算符∈。括號外的查詢稱為外層查詢;括號內(nèi)的查詢稱為內(nèi)層查詢(也稱為“子查詢”)。內(nèi)層查詢的結(jié)果被當(dāng)做是一個集合。
P104
例2:查找出“計算機應(yīng)用”課程考試取得95分及其以上考試成績的學(xué)生的學(xué)號和姓名。
SELECT 學(xué)號,姓名 FROM 學(xué)生 WHERE 學(xué)號 IN(SELECT 學(xué)號 FROM 成績 WHERE 分?jǐn)?shù)>=95 AND 課程編號 IN(SELECT 課程編號 FROM 課程 WHERE 課程名稱='計算機應(yīng)用'))
例3:查找出所有學(xué)生的考試都及格的班級名稱。
答案一:
SELECT 班級名稱 FROM 班級 WHERE 班級編號 NOT IN(SELECT 班級編號 FROM 學(xué)生 WHERE 學(xué)號 IN(SELECT 學(xué)號 FROM 成績 WHERE 分?jǐn)?shù)<60))
答案二:
select 班級名稱 from 班級
where not exists(select * from 學(xué)生 where
exists(select * from 成績
where 分?jǐn)?shù)<60 and 班級.班級編號=學(xué)生.班級編號 and 成績.學(xué)號=學(xué)生.學(xué)號))
答案三:
select 班級名稱 from 班級 where not exists(select * from 成績,學(xué)生
where 班級.班級編號=學(xué)生.班級編號 and 學(xué)生.學(xué)號=成績.學(xué)號 and 分?jǐn)?shù)<60)
練習(xí)題01:查找出班主任“劉成河”班的全部男生的信息。練習(xí)題02:查找出考試全及格的課程名稱。
練習(xí)題03:查找出所有學(xué)生的考試都及格的班級,并排除那些沒有學(xué)生的班級。練習(xí)題04:使用多表查詢實現(xiàn)例1。練習(xí)題05:使用多表查詢實現(xiàn)例2。
練習(xí)題06:查找出“數(shù)學(xué)專業(yè)”班全體同學(xué)的姓名和“數(shù)學(xué)”課程考試分?jǐn)?shù)。
三個特殊運算符
一、謂詞EXISTS
P122
EXISTS判斷子查詢中是否為空集。
例1:查找出那些還沒有學(xué)生的班級名稱。
SELECT 班級名稱 FROM 班級 WHERE NOT EXISTS
(SELECT * FROM 學(xué)生 WHERE 學(xué)生.班級編號=班級.班級編號)
例2:檢索出每個學(xué)生都選修了的課程(并且考試都及格)。
SELECT 課程編號,課程名稱 FROM 課程 WHERE NOT EXISTS(SELECT 學(xué)號 FROM 學(xué)生 WHERE NOT EXISTS(SELECT * FROM 成績
WHERE 課程.課程編號=成績.課程編號AND 學(xué)生.學(xué)號=成績.學(xué)號AND 分?jǐn)?shù)>=60))
練習(xí)題01:寫出可實現(xiàn)例1要求的其他命令。練習(xí)題02:寫出可實現(xiàn)例2要求的其他命令。
二、范圍運算符BETWEEN …AND…
P103 該范圍是一個閉區(qū)間,意思是在 …和… 之間,包括兩個端點的值。
例3:查找出1983年6月1日至1984年6月1日之間出生的學(xué)生的信息。
SELECT * FROM 學(xué)生 WHERE 出生日期 BETWEEN '1983-6-1' AND '1984-6-1' 練習(xí)題03:查找出已修學(xué)分在15和20之間的學(xué)生的信息。
練習(xí)題04:查找出1983年6月1日至1984年6月1日之間出生的少數(shù)民族學(xué)生的信息。
練習(xí)題05:查找出已修學(xué)分在15和20之間、且“自然辨證法”課程的考試分?jǐn)?shù)達到80分的學(xué)生的姓名、性別、所在班級。
三、字符串匹配運算符LIKE
P105 例4:查找出姓名中包含有“林”的學(xué)生的信息。SELECT * FROM 學(xué)生WHERE 姓名LIKE '%林%' 例5:查找出姓名中第二個字是“林”的學(xué)生的信息。SELECT * FROM 學(xué)生WHERE 姓名LIKE '_林%'
練習(xí)題06:查找出湖北出生的學(xué)生的信息。練習(xí)題07:查找出武漢出生的學(xué)生的信息。
練習(xí)題08:查找出班主任“郭大壯”的班中出生地是武漢的學(xué)生的姓名、班級。
練習(xí)題09:查找出至少參加了辛有余老師所任課程中一門課程考試的男生的姓名。至少寫出兩條不同的命令。
聚合函數(shù)及其分組查詢
為了完成后續(xù)題目,請首先計算出每位同學(xué)的已修學(xué)分
UPDATE 學(xué)生 SET 已修學(xué)分=(SELECT SUM(學(xué)分)FROM 成績,課程
WHERE 學(xué)生.學(xué)號=成績.學(xué)號AND 分?jǐn)?shù)>=60 AND 成績.課程編號=課程.課程編號)
一、常用統(tǒng)計(聚合)函數(shù)
P109表4-3 例1:計算出全部學(xué)生的平均已修學(xué)分。SELECT AVG(已修學(xué)分)FROM 學(xué)生
例2:計算出“軟件工程”班全體同學(xué)的平均已修學(xué)分。
SELECT AVG(已修學(xué)分)FROM 學(xué)生 WHERE 班級編號IN(SELECT 班級編號FROM 班級WHERE 班級名稱='軟件工程')
練習(xí)題01:計算出“軟件工程”和“計算機應(yīng)用”兩個班全體同學(xué)的平均已修學(xué)分。
注意:當(dāng)子查詢的結(jié)果只有一個數(shù)據(jù)時,可以用等號;為多個數(shù)據(jù)時,需用 IN。練習(xí)題02:計算出李建同學(xué)各門課程考試總分。
例3:查找出“數(shù)學(xué)專業(yè)”班“數(shù)學(xué)”課程考試的最高分?jǐn)?shù)。
SELECT MAX(分?jǐn)?shù))FROM 學(xué)生, 成績 WHERE 學(xué)生.學(xué)號=成績.學(xué)號 AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數(shù)學(xué)專業(yè)')AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數(shù)學(xué)')
另一個答案
SELECT MAX(分?jǐn)?shù))FROM 成績 WHERE 學(xué)號 IN(SELECT 學(xué)號 FROM 學(xué)生 WHERE 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數(shù)學(xué)專業(yè)'))AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數(shù)學(xué)')
例4:查找出“數(shù)學(xué)專業(yè)”班“數(shù)學(xué)”課程考試最高得分的同學(xué)姓名和分?jǐn)?shù)。
SELECT 姓名, 分?jǐn)?shù) FROM 學(xué)生, 成績 WHERE 學(xué)生.學(xué)號=成績.學(xué)號
AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數(shù)學(xué)專業(yè)')AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數(shù)學(xué)')AND 分?jǐn)?shù)=(SELECT MAX(分?jǐn)?shù))FROM 學(xué)生, 成績 WHERE 學(xué)生.學(xué)號=成績.學(xué)號
AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數(shù)學(xué)專業(yè)')AND 課程編號=(SELECT 課程編號FROM 課程 WHERE 課程名稱='數(shù)學(xué)'))
附:TOP … PERCENT
P98
二、GROUP BY短語
GROUP BY后面跟隨的是分組關(guān)鍵字段,按照關(guān)鍵字段的值,將記錄分成若干個組,每一組轉(zhuǎn)變?yōu)椴樵兘Y(jié)果中的一行。
例5:計算出各班學(xué)生的平均已修學(xué)分。SELECT 班級編號,AVG(已修學(xué)分)FROM 學(xué)生 GROUP BY 班級編號
練習(xí)題04:計算出各門課程考試的平均分?jǐn)?shù)。練習(xí)題05:計算出各位學(xué)生的考試總分。
練習(xí)題06:計算出辛有余老師所任課程中每門課程的課程編號和學(xué)生平均考試分?jǐn)?shù)。
三、別名及其應(yīng)用
P113-114, P99
例6:查找出已修學(xué)分低于本班平均已修學(xué)分的學(xué)生信息。
SELECT 姓名, 班級編號, 已修學(xué)分 FROM 學(xué)生
WHERE 已修學(xué)分<(SELECT AVG(已修學(xué)分)FROM 學(xué)生 XS WHERE 學(xué)生.班級編號=XS.班級編號)
說明:在FROM短語中為表取別名也可省略AS,例如FROM 學(xué)生 XS。
例7:查找和計算出各位學(xué)生的姓名和考試總分。
SELECT 姓名, 總分
FROM 學(xué)生,(SELECT 學(xué)號, SUM(分?jǐn)?shù))AS 總分 FROM 成績 GROUP BY 學(xué)號)AS ZF WHERE 學(xué)生.學(xué)號=ZF.學(xué)號
說明:在FROM短語中可用子查詢的結(jié)果作為表,此時,必須為該子查詢?nèi)e名。
在SELECT短語中可為查詢結(jié)果列取別名,其格式有三種,見P99。
練習(xí)題07:查找和計算出各門課程的名稱及其考試的平均分?jǐn)?shù)。
練習(xí)題08:查找和計算出各門課程的名稱及其考試達到90分的人數(shù)。
四、HAVING短語
HAVING后面跟隨的是篩選條件,作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含統(tǒng)計(聚合)函數(shù)。
例8:查找出講授多門課程的教師姓名及其授課門數(shù)。
SELECT 任課教師,COUNT(*)AS 授課門數(shù) FROM 課程 GROUP BY 任課教師 HAVING COUNT(*)>1 說明:HAVING短語通常與GROUP BY短語配合使用,否則無使用價值。HAVING短語中使用的統(tǒng)計函數(shù)應(yīng)該是SELECT短語中使用的函數(shù)。
練習(xí)題10:查找出考試成績優(yōu)秀人數(shù)多于3人的課程編號及其學(xué)生人數(shù)(假定考試分?jǐn)?shù)達到90分為優(yōu)秀)。練習(xí)題11:查找出考試成績優(yōu)秀人數(shù)多于3人的課程名稱及其學(xué)生人數(shù)(假定考試分?jǐn)?shù)達到90分為優(yōu)秀)。練習(xí)題12:查找出考試成績優(yōu)秀人次多于5人次的班級名稱及其人次(假定考試分?jǐn)?shù)達到90分為優(yōu)秀)。
練習(xí)題13:查找出考試分?jǐn)?shù)標(biāo)準(zhǔn)差小于
10、且最高分與最低分之差小于20的各班(班級名稱)各門課程(課程名稱)的考試人數(shù),考試分?jǐn)?shù)的最高分、最低分、平均分、標(biāo)準(zhǔn)差、方差。
常用函數(shù)、連接
一、常用函數(shù)
P159
二、鏈接 P114 用于多表查詢,實現(xiàn)表之間的鏈接。
例6:在多表查詢中,下面的命令可查找出已修學(xué)分達到17分的學(xué)生的姓名、出生日期和班級:SELECT 姓名,出生日期,班級名稱 FROM 學(xué)生,班級 WHERE 學(xué)生.班級編號=班級.班級編號 AND 已修學(xué)分>=17 用INNER JOIN … ON …,可將該命令改寫為:
SELECT 姓名,出生日期,班級名稱 FROM 學(xué)生 INNER JOIN 班級 ON 學(xué)生.班級編號=班級.班級編號
WHERE 已修學(xué)分>=17 或
SELECT 姓名,出生日期,班級名稱 FROM 學(xué)生 INNER JOIN 班級 ON 學(xué)生.班級編號=班級.班級編號 AND 已修學(xué)分>=17
解釋:這里的“學(xué)生.班級編號=班級.班級編號”是連接條件。如果在FROM短語中有兩個表,那么這兩個表必須具備可建立聯(lián)系的字段,否則無法查詢。如果FROM短語中的多個表中有同名字段,當(dāng)使用這些字段名時,需要在字段名左邊加上表名和圓點,作為字段名的前綴。
練習(xí)題01:查找出已修學(xué)分低于17分的學(xué)生的姓名、性別和班主任。練習(xí)題02:查找出學(xué)生“王林”的班主任。
練習(xí)題03:查找出班主任“劉成河”班的全部男生的信息。
例7:在多表查詢中,下面的命令可查找出課程“中國歷史”考試及格的全部學(xué)生的學(xué)號、姓名:SELECT 學(xué)生.學(xué)號,姓名 FROM 學(xué)生,課程,成績 WHERE 分?jǐn)?shù)>=60 AND 課程名稱=“中國歷史” AND 學(xué)生.學(xué)號=成績.學(xué)號 AND 成績.課程編號=課程.課程編號
用INNER JOIN … ON …,可將該命令改寫為:
SELECT 學(xué)生.學(xué)號,姓名 FROM 學(xué)生 INNER JOIN(成績 INNER JOIN 課程 ON 成績.課程編號=課程.課程編號)ON 學(xué)生.學(xué)號=成績.學(xué)號 WHERE 分?jǐn)?shù)>=60 AND 課程名稱=“中國歷史”
練習(xí)題04:查找出課程“中國歷史”考試及格的全部學(xué)生的學(xué)號、姓名、班級和分?jǐn)?shù)。練習(xí)題05:查找出全部同學(xué)的所有考試的姓名、課程名稱、分?jǐn)?shù)。查找結(jié)果的格式如下:
練習(xí)題06:計算出每個同學(xué)實際取得的學(xué)分(不是學(xué)生表中的已修學(xué)分)。查找結(jié)果的格式如下:
操作查詢
一、生成表查詢
P136
例1:
SELECT 姓名, 出生日期, 班級名稱 INTO XYZ FROM 學(xué)生, 班級
WHERE 學(xué)生.班級編號=班級.班級編號 AND 已修學(xué)分>=17 例2:
SELECT 班級名稱, 課程名稱, 分?jǐn)?shù) INTO 考試分?jǐn)?shù)
FROM 課程 INNER JOIN((班級 INNER JOIN 學(xué)生 ON 班級.班級編號 = 學(xué)生.班級編號)INNER JOIN 成績 ON 學(xué)生.學(xué)號 = 成績.學(xué)號)ON 課程.課程編號 = 成績.課程編號
二、更新查詢
P137
例3:將每位同學(xué)的已修學(xué)分設(shè)置為0。
UPDATE 學(xué)生 SET 已修學(xué)分=0 將每位同學(xué)的已修學(xué)分設(shè)置為4。UPDATE 學(xué)生 SET 已修學(xué)分=4 省略WHERE短語,表示無條件修改全部記錄。例4:為每個女生增加2學(xué)分。
UPDATE 學(xué)生 SET 已修學(xué)分=已修學(xué)分+2 WHERE 性別= “女”
練習(xí)題01:(綜合練習(xí))首先為“學(xué)生”表添加一個整型字段“年齡”,然后用UPDATE命令計算出每位同學(xué)的年齡并填入“年齡”字段。
例5:根據(jù)考試成績,計算出每位同學(xué)的實際已修學(xué)分,并填入“學(xué)生”表的“已修學(xué)分”字段。
UPDATE 學(xué)生 SET 已修學(xué)分=(SELECT SUM(學(xué)分)FROM 成績,課程
WHERE 學(xué)生.學(xué)號=成績.學(xué)號AND 分?jǐn)?shù)>=60 AND 成績.課程編號=課程.課程編號)
練習(xí)題02:根據(jù)“學(xué)生”表,計算出每班的男生人數(shù)和女生人數(shù),并填入“班級”表中。
三、追加查詢
P134
四、刪除查詢
P141 例6:刪除XS表中已修學(xué)分低于4分的記錄。
DELETE FROM XS WHERE 已修學(xué)分<4 例7:刪除沒有學(xué)生的班級。
DELETE FROM 班級 WHERE 班級編號 NOT IN(SELECT 班級編號 FROM 學(xué)生 WHERE 班級編號 IS NOT NULL)
練習(xí)題03:刪除沒有參加過任何考試的學(xué)生。
練習(xí)題04:刪除考試平均分?jǐn)?shù)低于本班所有學(xué)生全部考試平均分?jǐn)?shù)的同學(xué)。
第二篇:access查詢練習(xí)題
考點7:查詢
1.若在“tEmployee”表中查找所有出生日期在“1970-1-1”和“1980-1-1”之間的記錄,可以在查詢設(shè)計視圖的準(zhǔn)則行中輸入()。答案:A
A)Between #1970-1-1# And #1980-1-1#
B)Between “1970-1-1” And “1980-1-1”
C)“1970-1-1” And “1980-1-1”
D)#1970-1-1# And #1980-1-1#
2.下面顯示的是查詢設(shè)計視圖,從設(shè)計視圖所示的內(nèi)容中判斷此查詢將顯示()。答案:B
A)出生日期字段值
B)所有字段值 C)除出生日期以外的所有字段值
D)雇員ID字段值
3.在SQL查詢中“GROUP BY”的含義是()。答案:D
A)選擇行條件
B)對查詢進行排序
C)選擇列字段
D)對查詢進行分組
4.若要將“產(chǎn)品”表中所有供貨商是“ABC”的產(chǎn)品單價下調(diào)50,則正確的SQL語句是()。答案:B
A)UPDATE 產(chǎn)品 SET 單價=50 WHERE 供貨商=“ABC”
B)UPDATE 產(chǎn)品 SET 單價=單價-50 WHERE 供貨商=“ABC”
C)UPDATE FROM 產(chǎn)品 SET 單價=50 WHERE 供貨商=“ABC”
D)UPDATE FROM 產(chǎn)品 SET 單價=單價-50 WHERE 供貨商=“ABC”
5.下面不是操作查詢的是()。答案:C
A)刪除查詢
B)更新查詢
C)參數(shù)查詢
D)生成表查詢
6.在SQL語言的SELECT語句中,用于實現(xiàn)選擇運算的子句是()。答案:D
A)FOR
B)IF
C)WHILE
D)WHERE
7.在SQL查詢中,若要取得“學(xué)生”數(shù)據(jù)表中的所有記錄和字段,其SQL語法為()。答案:B
A)SELECT 姓名 FROM 學(xué)生
B)SELECT * FROM 學(xué)生
C)SELECT 姓名 FROM 學(xué)生 WHILE 學(xué)號=02650 D)SELECT * FROM 學(xué)生 WHILE 學(xué)號=02650
8.假設(shè)某數(shù)據(jù)表中有一個工作時間字段,查找1999年參加工作的職工記錄的準(zhǔn)則是()。答案:A
A)Between # 99-01-01# And # 99-12-31 #
B)Between “ 99-01-01 ” And “ 99-12-31 ”
C)Between “ 99.01.01 ” And “ 99.12.31 ”
D)# 99.01.01 # And # 99.12.31 #
9.SQL的含義是()。答案:A
A)結(jié)構(gòu)化查詢語言
B)數(shù)據(jù)定義語言
C)數(shù)據(jù)庫查詢語言
D)數(shù)據(jù)庫操縱與控制語言
10.在Access中已建立了“學(xué)生”表,表中有“學(xué)號”、“姓名”、“性別”和“入學(xué)成績”等字段。執(zhí)行如下SQL命令“Select 性別, avg(入學(xué)成績)From 學(xué)生 Group by 性別”其結(jié)果是()。答案:B
A)計算并顯示所有學(xué)生的性別和入學(xué)成績的平均值
B)按性別分組計算并顯示性別和入學(xué)成績的平均值
C)計算并顯示所有學(xué)生的入學(xué)成績的平均值
D)按性別分組計算并顯示所有學(xué)生的入學(xué)成績的平均值
11.假設(shè)“公司”表中有編號、名稱、法人等字段,查找公司名稱中有“網(wǎng)絡(luò)”二字的公司信息,正確的命令是()。答案:D
A)SELECT * FROM 公司 FOR 名稱= “*網(wǎng)絡(luò)*” B)SELECT * FROM 公司 FOR 名稱 LIKE “*網(wǎng)絡(luò)*”
C)SELECT * FROM 公司 WHERE 名稱= “*網(wǎng)絡(luò)*” D)SELECT * FROM 公司 WHERE 名稱 LIKE “*網(wǎng)絡(luò)*”
12.下圖是使用查詢設(shè)計器完成的查詢,與該查詢等價的SQL語句是()。
答案:A
A)select 學(xué)號,數(shù)學(xué) from sc where 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc)
B)select 學(xué)號 where 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc)
C)select 數(shù)學(xué) avg(數(shù)學(xué))from sc
D)select 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc)
13.在查詢設(shè)計視圖中()。答案:A
A)可以添加數(shù)據(jù)庫表,也可以添加查詢
B)只能添加數(shù)據(jù)庫表
C)只能添加查詢
D)數(shù)據(jù)庫表和查詢都不能添加
14.檢索價格在30萬~60萬元的產(chǎn)品,可以設(shè)置條件為()。答案:C
A)“>30 Not <60”
B)“>30 Or <60”
C)“>30 And <60”
D)“>30 Like <60”
15.下列關(guān)于SQL語句的說法中,錯誤的是()。答案:D
A)INSERT語句可以向數(shù)據(jù)表中追加新的數(shù)據(jù)記錄
B)UPDATE語句用來修改數(shù)據(jù)表中已經(jīng)存在的數(shù)據(jù)記錄
C)DELETE語句用來刪除數(shù)據(jù)表中的記錄
D)CREATE語句用來建立表結(jié)構(gòu)并追加新的記錄
16.下列不屬于操作查詢的是()。答案:A
A)參數(shù)查詢
B)生成表查詢
C)更新查詢
D)刪除查詢
17.在Access數(shù)據(jù)庫中創(chuàng)建一個新表,應(yīng)該使用的SQL語句是()。答案:A
A)Create Table
B)Create Index
C)Alter Table
D)Create Database
18.下面顯示的是查詢設(shè)計視圖的“設(shè)計網(wǎng)格”部分:從所顯示的內(nèi)容中可以判斷出該查詢要查找的是()。答案:A
A)性別為“女”并且1980年以前參加工作的記錄
B)性別為“女”并且1980年以后參加工作的記錄
C)性別為“女”或者1980年以前參加工作的記錄
D)性別為“女”或者1980年以后參加工作的記錄
19.在一個操作中可以更改多條記錄的查詢是()。答案:B
A)參數(shù)查詢
B)操作查詢
C)SQL查詢
D)選擇查詢
20.直接將命令發(fā)送ODBC數(shù)據(jù),它使用服務(wù)器能接受的命令,利用它可以檢索或更改記錄的是()。答案:B
A)聯(lián)合查詢
B)傳遞查詢
C)數(shù)據(jù)定義查詢
D)子查詢
21.要求按學(xué)生學(xué)號統(tǒng)計出每名學(xué)生的借閱次數(shù),下列SQL語句中,正確的是()。答案:B
A)Select 學(xué)號,Count(學(xué)號)from 借閱
B)Select 學(xué)號,Count(學(xué)號)from 借閱 Group By 學(xué)號
C)Select 學(xué)號,Sum(學(xué)號)from 借閱
D)Select 學(xué)號,Sum(學(xué)號)from 借閱 Order By 學(xué)號
22.在一個Access的表中有字段“專業(yè)”,要查找包含“信息”兩個字的記錄,正確的條件表達式是()。答案:B
A)=left([專業(yè)],2)=“信息”
B)like “*信息*”
C)=“信息*”
D)Mid([專業(yè)],1,2)=“信息”
23.Access支持的查詢類型有()。答案:A
A)選擇查詢、交叉表查詢、參數(shù)查詢、SQL查詢和操作查詢
B)基本查詢、選擇查詢、參數(shù)查詢、SQL查詢和操作查詢
C)多表查詢、單表查詢、交叉表查詢、參數(shù)查詢和操作查詢
D)選擇查詢、統(tǒng)計查詢、參數(shù)查詢、SQL查詢和操作查詢
24.要從數(shù)據(jù)庫中刪除一個表,應(yīng)該使用的SQL語句是()。答案:D
A)ALTER TABLE
B)KILL TABLE
C)DELETE TABLE
D)DROP TABLE
25.在Access中已建立了“教師”表,表中有“教師編號”、“職稱”、“性別”和“年齡”等字段。執(zhí)行如下SQL命令:SELECT Count(“教師編號”)AS 各類職稱人數(shù) FROM 教師 GROUP BY 職稱其結(jié)果是()。答案:B
A)計算并顯示各類職稱人數(shù)的職稱和教師編號
B)按職稱分組,并計算教師編號的個數(shù)以各類職稱人數(shù)顯示
C)計算所有教師編號的個數(shù),以各類職稱人數(shù)顯示
D)按各類職稱人數(shù)分組計算并顯示教師編號的個數(shù)和職稱
26.在SELECT語句中使用ORDER BY子句是為了指定()。答案:B
A)查詢的表
B)查詢的結(jié)果順序
C)查詢的條件
D)查詢的字段
27.若要查詢成績?yōu)?0~80分之間(包括70分,不包括80分)的學(xué)生的信息,查詢準(zhǔn)則設(shè)置正確的是()。答案:C
A)>69 or <80
B)Between 70 with 80
C)>=70 and <80
D)IN(70,79)
28.對“將信息系1999年以前參加工作的教師的職稱改為副教授”,合適的查詢?yōu)?)。答案:B
A)生成表查詢
B)更新查詢
C)刪除查詢
D)追加查詢
29.下圖是簡單查詢向?qū)В浩渲邪粹o和按鈕分別代表的意思是()。答案:A
A)單擊按鈕一次選擇一個字段,單擊按鈕一次選擇全部字段
B)單擊按鈕一次選擇一個字段,單擊按鈕一次選擇全部字段
C)兩者的作用相同,都是選擇一個字段
D)以上說法均錯誤
30.下面對查詢功能的敘述中正確的是()。答案:C
A)在查詢中,選擇查詢可以只選擇表中的部分字段,通過選擇一個表中的不同字段生成同一個表
B)在查詢中,編輯記錄主要包括添加記錄、修改記錄、刪除記錄和導(dǎo)入、導(dǎo)出記錄
C)在查詢中,查詢不僅可以找到滿足條件的記錄,而且還可以在建立查詢的過程中進行各種統(tǒng)計計算
D)以上說法均不對
31.與SELECT TAB1.* FROM TAB1 WHERE InStr([簡歷],“籃球”)<>0功能相同的語句是()。答案:C
A)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “籃球”
B)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “*籃球”
C)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “*籃球*”
D)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “籃球*”
32.在Access 數(shù)據(jù)庫的表設(shè)計視圖中,不能進行的操作是()。答案:D
A)修改字段類型
B)設(shè)置索引
C)增加字段
D)刪除記錄
33.關(guān)于準(zhǔn)則 Like![北京,上海,廣州],以下滿足條件的是()。答案:D
A)北京
B)上海
C)廣州
D)杭州
34.現(xiàn)有某查詢設(shè)計視圖(如下圖所示),該查詢要查找的是()。
答案:A
A)身高在160以上的女性和所有的男性
B)身高在160以上的男性和所有的女性
C)身高在160以上的所有人或男性
D)身高在160以上的所有人
35.Access中,以下不屬于查詢操作方式的是()。答案:C
A)選擇查詢
B)參數(shù)查詢
C)準(zhǔn)則查詢
D)操作查詢
36.“A Or B”準(zhǔn)則表達式表示的意思是()。答案:B
A)表示查詢表中的記錄必須同時滿足Or兩端的準(zhǔn)則A和B,才能進入查詢結(jié)果集
B)表示查詢表中的記錄只需滿足Or兩端的準(zhǔn)則A和B中的一個,即可進入查詢結(jié)果集
C)表示查詢表中記錄的數(shù)據(jù)介于A、B之間的記錄才能進入查詢結(jié)果集
D)表示查詢表中的記錄當(dāng)滿足Or兩端的準(zhǔn)則A和B不相等時即進入查詢結(jié)果集
37.若在“tEmployee”表中查找所有姓“王”的記錄,可以在查詢設(shè)計視圖的準(zhǔn)則行中輸入()。答案:B
A)Like “王”
B)Like “王*”
C)=“王”
D)=“王*”
38.在SQL查詢中使用WHERE子句指出的是()。答案:D
A)查詢目標(biāo)
B)查詢結(jié)果
C)查詢視圖
D)查詢條件
39.將表A的記錄復(fù)制到表B中,且不刪除表B中的記錄,可以使用的查詢是()。答案:C
A)刪除查詢
B)生成表查詢
C)追加查詢
D)交叉表查詢
40.要將“90分以上學(xué)生情況”表中所有記錄和“學(xué)生成績查詢”中80分以下的記錄,顯示內(nèi)容為“學(xué)生編號”、“姓名”、“成績”3個字段。正確的表達式是()。答案:C
A)SELECT學(xué)生編號,姓名,成績FROM學(xué)生成績查詢 WHERE 成績<80
JOIN SELECT學(xué)生編號,姓名,成績FROM 90分以上學(xué)生情況
B)SELECT學(xué)生編號,姓名,成績FROM學(xué)生成績查詢 WHERE 成績<80
UNION
SELECT學(xué)生編號,成績,姓名FROM 90分以上學(xué)生情況
C)SELECT學(xué)生編號,姓名,成績FROM學(xué)生成績查詢 WHERE 成績<80
NUION
SELECT學(xué)生編號,姓名,成績FROM 90分以上學(xué)生情況
D)SELECT學(xué)生編號,姓名,成績FROM學(xué)生成績查詢 WHERE 成績<80
NUION
SELECT學(xué)生編號,成績FROM 90分以上學(xué)生情況
41.假設(shè)已在Access中建立了包含“書名”、“單價”和“數(shù)量”3個字段的“tOfg”表。以該表為數(shù)據(jù)源創(chuàng)建的窗體中,有一個計算訂購總金額的文本框,其控件來源為()。答案:B
A)[單價]*[數(shù)量]
B)=[單價]*[數(shù)量]
C)[圖書訂單表]![單價]*[圖書訂單表]![數(shù)量]
D)=[圖書訂單表]![單價]*[圖書訂單表]![數(shù)量]
第三篇:sql查詢練習(xí)題含答案
--(1)查詢20號部門的所有員工信息。select * from emp e where e.deptno=20;
--(2)查詢獎金(COMM)高于工資(SAL)的員工信息。select * from emp where comm>sal;--(3)查詢獎金高于工資的20%的員工信息。select * from emp where comm>sal*0.2;--(4)查詢10號部門中工種為MANAGER和20號部門中工種為CLERK的員工的信息。select * from emp e
where(e.deptno=10 and e.job='MANAGER')or(e.deptno=20 and e.job='CLERK')--(5)查詢所有工種不是MANAGER和CLERK,--且工資大于或等于2000的員工的詳細信息。select * from emp
where job not in('MANAGER','CLERK')and sal>=2000;
--(6)查詢有獎金的員工的不同工種。select * from emp where comm is not null;--(7)查詢所有員工工資和獎金的和。select(e.sal+nvl(e.comm,0))from emp e;--(8)查詢沒有獎金或獎金低于100的員工信息。select * from emp where comm is null or comm<100;--(9)查詢員工工齡大于或等于10年的員工信息。
select * from emp where(sysdate-hiredate)/365>=10;
--(10)查詢員工信息,要求以首字母大寫的方式顯示所有員工的姓名。select initcap(ename)from emp;select upper(substr(ename,1,1))||lower(substr(ename,2))from emp;
--(11)顯示所有員工的姓名、入職的年份和月份,按入職日期所在的月份排序,--若月份相同則按入職的年份排序。
select ename,to_char(hiredate,'yyyy')year,to_char(hiredate,'MM')month from emp order by month,year;--(12)查詢在2月份入職的所有員工信息。select * from emp where to_char(hiredate,'MM')='02'--(13)查詢所有員工入職以來的工作期限,用“**年**月**日”的形式表示。
select e.ename,floor((sysdate-e.hiredate)/365)||'年' ||floor(mod((sysdate-e.hiredate),365)/30)||'月' ||floor(mod(mod((sysdate-e.hiredate),365),30))||'日' from emp e;--(14)查詢從事同一種工作但不屬于同一部門的員工信息。select a.ename,a.job,a.deptno,b.ename,b.job,b.deptno from emp a,emp b where a.job=b.job and a.deptno<>b.deptno;
--(15)查詢各個部門的詳細信息以及部門人數(shù)、部門平均工資。select d.deptno,count(e.empno),avg(e.sal),d.dname,d.loc from emp e ,dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc
--(16)查詢10號部門員工以及領(lǐng)導(dǎo)的信息。select * from emp where empno in(select mgr from emp where deptno=10)or deptno=10;
--(17)查詢工資為某個部門平均工資的員工信息。select * from emp where sal in(select avg(sal)from emp group by deptno);
--(18)查詢工資高于本部門平均工資的員工的信息。select * from emp e1
where sal >(select avg(sal)from emp e2 where e2.deptno=e1.deptno);
--(19)查詢工資高于本部門平均工資的員工的信息及其部門的平均工資。select e.*,a.avgsal from emp e,(select deptno,avg(sal)as avgsal from emp group by deptno)a where a.deptno=e.deptno and e.sal>a.avgsal;
--(20)統(tǒng)計各個工種的人數(shù)與平均工資。
select count(*),e.job,avg(e.sal)from emp e group by e.job
--(21)統(tǒng)計每個部門中各個工種的人數(shù)與平均工資。select deptno,job,count(empno),avg(sal)from emp e group by e.deptno,e.job--(22)查詢所有員工工資都大于1000的部門的信息。select * from dept where deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000));
--(23)查詢所有員工工資都大于1000的部門的信息及其員工信息。select * from emp e join dept d on d.deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000))and d.deptno=e.deptno;
--(24)查詢所有員工工資都在900~3000之間的部門的信息。select * from dept where deptno not in(select deptno from emp
where sal not between 900 and 3000);--(25)查詢所有工資都在900~3000之間的員工所在部門的員工信息。select * from emp a where a.deptno in(select distinct e.deptno from emp e where e.sal between 900 and 3000);
--(26)查詢每個員工的領(lǐng)導(dǎo)所在部門的信息。select d.* from dept d where d.deptno in(select distinct e2.deptno from emp e1,emp e2 where e1.empno=e2.mgr);--(27)查詢?nèi)藬?shù)最多的部門信息。select * from dept where deptno in(select deptno from(select count(*)count,deptno from emp group by deptno)where count in(select max(count)
from(select count(*)count ,deptno from emp group by deptno)));
--(28)查詢30號部門中工資排序前3名的員工信息。
select * from
(select sal from emp where deptno=30 order by sal desc)e where rownum<4
--(29)查詢'JONES'員工及所有其直接、間接下屬員工的信息。select e.* from emp e start with ename='JONES' connect by prior empno=mgr;
---(30)查詢SCOTT員工及其直接、間接上級員工的信息。select e.* from emp e start with ename='SCOTT' connect by prior mgr=empno;
--(31)以樹狀結(jié)構(gòu)查詢所有員工與領(lǐng)導(dǎo)之間的層次關(guān)系。select substr(sys_connect_by_path(ename,'->'),3),level from emp start with mgr is null connect by prior empno=mgr;
--(32)向emp表中插入一條記錄,員工號為1357,員工名字為oracle,--工資為2050元,部門號為20,入職日期為2002年5月10日。
--(33)將各部門員工的工資修改為該員工所在部門平均工資加1000。update emp e set sal= 1000+(select avg(sal)from emp where deptno=e.deptno);
--(34)查詢工作等級為2級,1985年以后入職的工作地點為DALLAS的員工編號、--姓名和工資。
select e.ename,e.empno,e.sal from emp e,salgrade s,dept d where(e.sal between s.losal and s.hisal)and(s.grade=2)
and to_char(e.hiredate,'yyyy')>1985 and e.deptno=d.deptno and d.loc='DALLAS';
--35.部門平均薪水最高的部門編號
select * from(select avg(sal)avgsal,deptno
from emp group by deptno order by avgsal desc)
where rownum=1;
select deptno,avg(sal)from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno)
--36,部門平均薪水最高的部門名稱
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno))
--37.平均薪水最低的部門的部門名稱
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select min(avg(sal))avgsal
from emp group by deptno))
--38.平均薪水等級最低的部門的部門名稱 select d.dname from dept d where d.deptno in(select a.deptno from
(select e.deptno from emp e,salgrade s where(e.sal between s.losal and s.hisal)group by e.deptno order by avg(s.grade))a where rownum=1);
--39.部門經(jīng)理人中,薪水最低的部門名稱 select dname from dept where deptno=(select deptno from
(select deptno from emp where job='MANAGER' group by deptno order by min(sal))where rownum=1)
--40.比普通員工的最高薪水還要高的經(jīng)理人名稱 select ename from emp where sal>(select max(sal)from emp where job not in('MANAGER','PRESIDENT'))and job='MANAGER' or job='PRESIDENT'
--41.刪除重復(fù)部門,但是留下一項
insert into dept values(70,'RESEARCH','DALLAS')select deptno,dname,rowid from dept
delete from dept d where rowid<>(select min(rowid)from dept where dname=d.dname and d.loc=loc)
--42.更新員工工資為他的主管的工資,獎金
update emp e set sal=(select sal from emp where empno=e.mgr), comm=(select comm from emp where empno=e.mgr)
update emp e set(sal,comm)=(select sal,comm from emp where empno=e.mgr)rollback;select * from emp;
第四篇:Oracle基礎(chǔ)練習(xí)題及答案(子查詢)
子查詢
1.查詢和scott相同部門的員工姓名ename和雇用日期hiredate select ename,hiredate from emp where deptno=(select b.deptno from emp a,dept b where a.deptno=b.deptno and ename='SCOTT');
2.查詢工資比公司平均工資高的所有員工的員工號empno,姓名ename和工資sal。
select empno,ename,sal from emp where sal>(select avg(sal)from emp);
3.查詢和姓名中包含字母u的員工在相同部門的員工的員工號empno和姓名ename select empno,ename from emp a,dept b where a.deptno(+)=b.deptno and a.deptno=(select deptno from emp where ename like '%U%');
4.查詢在部門的loc為newYork的部門工作的員工的員工姓名ename,部門名稱dname和崗位名稱job select ename,dname,job from emp a,dept b where a.deptno=b.deptno and loc='NEW YORK';
查詢管理者是king的員工姓名ename和工資sal select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and b.ename='KING';
第五篇:查詢操作練習(xí)題4 - 分組(統(tǒng)計)查詢
說明:
根據(jù)題目要求編寫下列題目的代碼,運行代碼得出正確結(jié)果后把代碼復(fù)制到題號的下面,最后在文件名前加上學(xué)號和姓名(例:2013111055+張三+查詢操作練習(xí)4-分組查詢),并提交文件到教師機。(各數(shù)據(jù)表參考教材中的教務(wù)管理數(shù)據(jù)庫)
1.統(tǒng)計每類職稱的教師人數(shù),顯示職稱和人數(shù)。
2.統(tǒng)計每個系教師的人數(shù),顯示系名和人數(shù)。
3.統(tǒng)計每個系職稱為講師的教師的人數(shù),顯示系名和人數(shù)。
4.分別統(tǒng)計男女教師的平均基本工資,顯示性別和均值。
5.顯示平均成績超過70分的課程號、課程名和平均成績。