第一篇:Access課堂練習(xí)六--SQL命令查詢操作--書面練習(xí)
Access課堂練習(xí)
Access課堂練習(xí)六
姓名 學(xué)號(hào)
SQL命令查詢書面練習(xí)
已知教師管理系統(tǒng)中的2個(gè)表分別為:
教師(教師編號(hào),姓名,性別,部門編號(hào),出生時(shí)間,工作時(shí)間,職稱,基礎(chǔ)工資,崗位工資,績(jī)效工資)部門(部門編號(hào),部門名稱,擔(dān)任職務(wù),辦公室電話(0571-6018845),業(yè)余愛好)
完成下列問題的SQL命令的表示:
1.查詢教師表中出所有教師的姓名、性別和職稱。
2.查詢所有教師的姓名,性別,部門名稱,擔(dān)任職務(wù)和職稱。3.查詢教師表中姓名,性別,工齡和職稱。4.查詢教師表中姓名,性別,職稱和工資總額。5.查詢所有教授的姓名,部門名稱和擔(dān)任職務(wù)。6.查詢55歲及上的教師姓名和性別。
7.查詢教師表中工齡在10年到20的教師信息。
8.查詢部門名稱為“人事處”、“英語系”、“計(jì)算機(jī)系”的教師信息。9.查詢按基礎(chǔ)工資排序的教師信息。10.查詢按職稱分類的平均績(jī)效工資。11.查詢業(yè)余愛好中含有“運(yùn)動(dòng)”的教師信息。
12.查詢部門表中辦公室電話升級(jí)后(0571-86018845)的部門信息。
1.select 姓名,性別,職稱 from 教師
2.select 姓名,性別,部門名稱,擔(dān)任職務(wù),職稱 from 教師,部門 3.select 姓名,性別,year(date(0))-year(工作時(shí)間)as 工齡 from 教師
4.select 姓名,性別,職稱,基礎(chǔ)工資+崗位工資+績(jī)效工資 as 工資總額from 教師 5.select 姓名,部門名稱,擔(dān)任職務(wù) from 教師,部門where 職稱=”教授” 6.select 姓名,性別 from 教師 where year(date(0)-year(出生時(shí)間))>=55 浙江大學(xué)城市學(xué)院
Access課堂練習(xí)
浙江大學(xué)城市學(xué)院
第二篇:SQL語言數(shù)據(jù)查詢操作
實(shí)驗(yàn)三 SQL語言——數(shù)據(jù)查詢操作
一、實(shí)驗(yàn)時(shí)間
二、實(shí)驗(yàn)地點(diǎn):317室
三、實(shí)驗(yàn)條件與環(huán)境
1. 通用PC機(jī)
2. PC機(jī)必須安裝Windows 2000系列、Windows XP系列或Windows NT操作系統(tǒng)平臺(tái)
3. PC機(jī)還須安裝Microsoft SQL Server 2000 任意一版本(個(gè)人版、標(biāo)準(zhǔn)版、企業(yè)版)
4. 最好有一臺(tái)公用的SQL Server 2000 服務(wù)器
四、實(shí)驗(yàn)?zāi)康?. 通過上機(jī)實(shí)驗(yàn)進(jìn)一步加深對(duì)SQL查詢語句的基本語法格式的掌握
2. 通過上機(jī)實(shí)驗(yàn)掌握單表查詢的實(shí)現(xiàn)過程
3. 通過上機(jī)實(shí)驗(yàn)掌握多表關(guān)聯(lián)查詢的實(shí)現(xiàn)過程
4. 通過上機(jī)實(shí)驗(yàn)掌握嵌套查詢的實(shí)現(xiàn)過程
5. 通過上機(jī)實(shí)驗(yàn)掌握集函數(shù)與謂詞在Select語句中的使用
6. 通過上機(jī)實(shí)驗(yàn)加深了解Select語句與關(guān)系代數(shù)運(yùn)算(如選擇、投影、連接、除法等)兩者之間的聯(lián)系與區(qū)別
五、實(shí)驗(yàn)要求:
1. 本實(shí)驗(yàn)所有實(shí)驗(yàn)內(nèi)容要求在規(guī)定時(shí)間(2課時(shí))內(nèi)完成2. 實(shí)驗(yàn)內(nèi)容中涉及到的各查詢操作均通過SQL語言來實(shí)現(xiàn)
3.實(shí)驗(yàn)完成后需要書寫實(shí)驗(yàn)報(bào)告
六、實(shí)驗(yàn)內(nèi)容:
1.查詢?yōu)楣こ蘆1供應(yīng)零件的供應(yīng)商號(hào)碼SNO
2.查詢?yōu)楣こ蘆1供應(yīng)零件P1的供應(yīng)商號(hào)碼SNO
3.查詢?yōu)楣こ蘆1供應(yīng)紅色零件的供應(yīng)商號(hào)碼SNO
4.查詢沒有使用天津供應(yīng)商生產(chǎn)的零件并且當(dāng)前工程所使用零件的顏色全部為紅色的工程號(hào)JNO
5.查詢至少選用了供應(yīng)商S1所供應(yīng)的全部零件的工程號(hào)JNO
6.找出所有供應(yīng)商的名稱和所在城市
7.找出所有零件的名稱、顏色和重量
8.找出使用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼
9.找出工程項(xiàng)目J2使用的各種零件的名稱及其重量
10.找出上海廠商供應(yīng)的所有零件號(hào)碼
11.找出使用上海產(chǎn)的零件的工程名稱
12.找出沒有使用天津產(chǎn)的零件的工程號(hào)碼
13.找出重量最輕的紅色零件的零件編號(hào)PNO
14.找出供應(yīng)商與工程所在城市相同的供應(yīng)商提供的零件號(hào)碼
15.找出所有這樣的一些<CITY,CITY,PNAME>三元組,使得第一個(gè)城市的供應(yīng)商為第二個(gè)城市的工程供應(yīng)零件的名稱為PNAME
16.重復(fù)第15題,但不檢索兩個(gè)CITY值相同的三元組
17.找出供應(yīng)商S1為工程名中含有“廠”字的工程供應(yīng)的零件數(shù)量總和
18.找出為工程供應(yīng)零件的總數(shù)量不低于500的供應(yīng)商號(hào)碼及供應(yīng)總數(shù)量,結(jié)果按供應(yīng)商號(hào)碼分類并且按供應(yīng)總數(shù)量降序排列
七、實(shí)驗(yàn)總結(jié):
數(shù)據(jù)查詢是一種極為重要的面向數(shù)據(jù)庫的數(shù)據(jù)操縱方式。實(shí)驗(yàn)完成后,請(qǐng)同學(xué)們總結(jié)一下SELECT語
句實(shí)現(xiàn)各種類型查詢?nèi)蝿?wù)的一般過程和操作實(shí)現(xiàn)方法,并對(duì)利用SELECT語句實(shí)現(xiàn)各類查詢?nèi)蝿?wù)的解題規(guī)律與方法作一總結(jié)。
第三篇:Access上機(jī)練習(xí)2(SQL上機(jī)練習(xí)1)
實(shí)驗(yàn)項(xiàng)目名稱:SQL簡(jiǎn)單查詢 所屬課程名稱:數(shù)據(jù)庫原理與應(yīng)用 實(shí)驗(yàn)類型:操作型
實(shí)驗(yàn)要求:使用SQL視圖完成SQL簡(jiǎn)單查詢 實(shí)驗(yàn)?zāi)康模?/p>
1.熟悉SQL語言的數(shù)據(jù)查詢功能; 2.熟悉Access中SQL視圖的使用;
3.通過SQL語言的數(shù)據(jù)查詢語句SELECT熟悉Access中表達(dá)式的構(gòu)成與使用。*4.熟悉簡(jiǎn)單的多表查詢。實(shí)驗(yàn)方案設(shè)計(jì):
1.使用“教學(xué)管理.mdb”中的表,練習(xí)教材例【6-1】~【6-13】?jī)?nèi)容,熟悉Access中SQL視圖的使用與SQL簡(jiǎn)單查詢的實(shí)現(xiàn)。2.利用“教學(xué)管理.mdb”,獨(dú)立完成布置的SQL查詢要求。
練習(xí):
1.顯示“課程信息表”表中所有字段和記錄。2.顯示所有教師的姓名、性別,所屬院系和職稱情況。3.顯示每位教師的工齡。
4.查詢來校10年以上(含10年)的黨員教師信息。5.查詢所有財(cái)政學(xué)院和經(jīng)濟(jì)學(xué)院的教師信息。6.查詢40歲以上(不含40歲)的非黨員教師信息。7.查詢姓名中含有“海”字的教師信息。8.顯示全部學(xué)生的班級(jí)。
9.查詢成績(jī)?cè)?0分(含60分)到90分(含90分)之間的學(xué)生的學(xué)號(hào)。*10.顯示有不及格成績(jī)的學(xué)生名單。
*11.顯示每位教師的公積金繳存情況,顯示屬性包括教師編號(hào)、姓名、公積金。*12.顯示所有女黨員的工齡和薪級(jí)工資。
*13.顯示財(cái)政學(xué)院每位教師的姓名和他們的實(shí)發(fā)工資額。(提示:實(shí)發(fā)工資=崗位工資+薪級(jí)工資+崗位津貼-公積金)
14.自己設(shè)計(jì)一個(gè)查詢,并用SQL命令實(shí)現(xiàn)(要求:對(duì)設(shè)計(jì)要有合理的解釋,且最好有新意)。
第四篇:SQL綜合練習(xí)(填空操作)
一,選擇題
1,下面關(guān)于SQL語言的敘述中,哪一條是錯(cuò)誤的().A.SQL既可作為聯(lián)機(jī)交互環(huán)境中的查詢語言又可嵌入到主語言中
B.SQL沒有數(shù)據(jù)控制功能
C.使用SQL用戶只能定義索引而不能引用索引
D.使用SQL用戶可以定義和檢索視圖
2,SQL語言是()
A.高級(jí)語言 B.編程語言
C.結(jié)構(gòu)化查詢語言 D.宿主語言
3,在學(xué)生數(shù)據(jù)庫中,用SQL語句列出的所有女生的姓名,應(yīng)該對(duì)學(xué)生關(guān)系進(jìn)行()操作.A.選擇 B.連接 C.投影 D.選擇和投影
4,NULL是指()
A.0 B.空格 C.無任何值 D.空字符串
5,下列哪條語句不屬于SQL數(shù)據(jù)操縱功能范圍()
A.SELECT B.CREAT TABLE C.DELETE D.INSERT
6,用()命令可建立唯一索引
A.CREATE TABLE B.CREATE CLUSTER
C.CREATE INDEX D.CREATE UNIQUE INDEX
二,填空題
1,SQL語言的使用方式有兩種,一種是 ,另一種是
2,在SQL查詢中,WHERE子句的功能是.3,視圖是一個(gè)虛表,它是從 的表.4,SQL語言的數(shù)據(jù)操縱功能包括 , , ,和 ,5,在SQL支持的關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)中,外模式對(duì)應(yīng)于 ,模式對(duì)應(yīng)于 ,內(nèi)模式對(duì)應(yīng)于.6,在SELECT語句中,HAVING子句必須跟在 子句后面.三,問題及操作題
1,名詞解釋
SQL模式 SQL數(shù)據(jù)庫 基本表 視圖 相關(guān)子查詢 聯(lián)接查詢
嵌入式SQL 游標(biāo)
2,對(duì)于教學(xué)數(shù)據(jù)庫的三個(gè)基本表
學(xué)生 S(S#,SNAME,AGE,SEX)
學(xué)習(xí)SC(S#,C#,GRADE)
課程 C(C#,CNAME,TEACHER)
試用SQL的查詢語句表達(dá)下列查詢:
(1)檢索LIU老師所授課程的課程號(hào)和課程名.(2)檢索年齡大于23歲的男學(xué)生的學(xué)號(hào)和姓名.(3)檢索至少選修LIU老師所授課程中一門課程的女學(xué)生姓名.(4)檢索WANG同學(xué)不學(xué)的課程的課程號(hào).(5)檢索至少選修兩門課程的學(xué)生學(xué)號(hào).(6)檢索全部學(xué)生都選修的課程的課程號(hào)與課程名.(7)檢索選修課程包含LIU老師所授課的學(xué)生學(xué)號(hào).3, 設(shè)有兩個(gè)基本表R(A,B,C)和S(A,B,C)試用SQL查詢語句表達(dá)下列關(guān)系代數(shù)表達(dá)式:
(1)R∪S(2)R∩S(3)R-S(4)πA,B(R)πB,C(S)
4, 試用SQL查詢語句表達(dá)下列對(duì)教學(xué)數(shù)據(jù)庫中三個(gè)基本表S,SC,C的查詢:
(1)統(tǒng)計(jì)有學(xué)生選修的課程門數(shù).(2)求選修C4課程的學(xué)生的平均年齡.(3)求LIU老師所授課程的每門課程的學(xué)生平均成績(jī).(4)統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過10人的課程才統(tǒng)計(jì)).要求輸出課程號(hào)和選修人數(shù), 查 詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號(hào)升序排列.(5)檢索學(xué)號(hào)比WANG同學(xué)大,而年齡比他小的學(xué)生姓名.(6)檢索姓名以WANG打頭的所有學(xué)生的姓名和年齡.(7)在SC中檢索成績(jī)?yōu)榭罩档膶W(xué)生學(xué)號(hào)和課程號(hào).(8)求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡.5, 試用SQL更新語句表達(dá)對(duì)教學(xué)數(shù)據(jù)庫中三個(gè)基本表S,SC,C的各個(gè)更新操作:
(1)往基本表S中插入一個(gè)學(xué)生元組('S9','WU',18).(2)在基本表S中檢索每一門課程成績(jī)都大于等于80分的學(xué)生學(xué)號(hào),姓名和性別, 并把檢索到的值送往另一個(gè)已存在的基本表STUDENT(S#,SANME,SEX).(3)在基本表SC中刪除尚無成績(jī)的選課元組.(4)把WANG同學(xué)的學(xué)習(xí)選課和成績(jī)?nèi)縿h去
(5)把選修MATHS課不及格的成績(jī)?nèi)臑榭罩?(6)把低于總平均成績(jī)的女同學(xué)成績(jī)提高5%.(7)在基本表SC中修改C4課程的成績(jī),若成績(jī)小于等于75分時(shí)提高5%, 若成績(jī)大于75分時(shí)提高4%(用兩個(gè)UPDATE語句實(shí)現(xiàn)).6, 在宿主語言的程序中使用SQL語句有哪些規(guī)定
7,嵌入式SQL語句何時(shí)不必涉及到游標(biāo) 何時(shí)必須涉及到游標(biāo)
答案:
一,1,B 2,C 3,D 4,C 5,B 6,D
二,1,嵌入式 交互式 2,選擇
3,基本表導(dǎo)出的表 4,數(shù)據(jù)查詢 數(shù)據(jù)更新 數(shù)據(jù)插入 數(shù)據(jù)刪除
5,視圖或部分基本表 基本表 存儲(chǔ)文件
6,GROUP BY
三,1,名詞解釋
SQL模式:SQL模式是表和授權(quán)的靜態(tài)定義.一個(gè)SQL模式定義為基本表的集合.一個(gè)由模式名和模式擁有者的用戶名或賬號(hào)來確定,并包含模式中每一個(gè)元素(基本表,視圖,索引等)的定義.SQL數(shù)據(jù)庫:SQL(Structured Query Language),即'結(jié)構(gòu)式查詢語言',采用英語單詞表示和結(jié)構(gòu)式的語法規(guī)則.一個(gè)SQL數(shù)據(jù)庫是表的匯集,它用一個(gè)或多個(gè)SQL模式定義.基本表:在SQL中,把傳統(tǒng)的關(guān)系模型中的關(guān)系模式稱為基本表(Base Table).基本表是實(shí)際存儲(chǔ)在數(shù)據(jù)庫中的表,對(duì)應(yīng)一個(gè)關(guān)系.視圖:在SQL中,把傳統(tǒng)的關(guān)系模型中的子模式稱為視圖(View),視圖是從若干基本表和(或)其他視圖構(gòu)造出來的表.相關(guān)子查詢:在嵌套查詢中出現(xiàn)的符合以下特征的子查詢:子查詢中查詢條件依賴于外層查詢中的某個(gè)值, 所以子查詢的處理不只一次,要反復(fù)求值,以供外層查詢使用.聯(lián)接查詢:查詢時(shí)先對(duì)表進(jìn)行笛卡爾積操作,然后再做等值聯(lián)接,選擇,投影等操作.聯(lián)接查詢的效率比嵌套查詢低.嵌入式SQL:嵌入在高級(jí)語言的程序中使用的SQL語言稱為嵌入式SQL.游標(biāo):游標(biāo)是與某一查詢結(jié)果相聯(lián)系的符號(hào)名,用于把集合操作轉(zhuǎn)換成單記錄處理方式.2,(1)檢索LIU老師所授課程的課程號(hào)和課程名.SELECT C#,CNAME
FROM C
WHERE TEACHER='LIU'
(2)檢索年齡大于23歲的男學(xué)生的學(xué)號(hào)和姓名.SELECT S#,SNAME
FROM S
WHERE(AGE>23)AND(SEX='M')
(3)檢索至少選修LIU老師所授課程中一門課程的女學(xué)生姓名.SELECT SNAME
FROM S
WHERE SEX='F' AND S# IN
(SELECT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE TEACHER='LIU')
NOTICE:有多種寫法,比如聯(lián)接查詢寫法:
SELECT SNAME
FROM S,SC,C
WHERE SEX='F' AND SC.S#=S.S#
AND SC.C#=C.C#
AND TEACHER='LIU'
但上一種寫法更好一些.(4)檢索WANG同學(xué)不學(xué)的課程的課程號(hào).SELECT C#
FROM C
WHERE C# NOT IN
(SELECT C#
FROM SC
WHERE S# IN
(SELECT S#
FROM S
WHERE SNAME='WANG'))
(5)檢索至少選修兩門課程的學(xué)生學(xué)號(hào).SELECT DISTINCT X.SNO
FROM SC X,SC Y
WHERE X.SNO=Y.SNO AND X.CNOY.CNO
Notice:對(duì)表SC進(jìn)行自連接,X,Y是SC的兩個(gè)別名.(6)檢索全部學(xué)生都選修的課程的課程號(hào)與課程名.SELECT C#,CNAME
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE S# NOT IN
(SELECT *
FROM SC
WHERE SC.C#=C.C#))
要從語義上分解:(1)選擇課程的課程號(hào)與課程名,不存在不選這門課的同學(xué).其中,“不選這門課的同學(xué)”可以表示為:
SELECT *
FROM S
WHERE S# NOT IN
(SELECT *
FROM SC
WHERE SC.C#=C.C#)
或者
SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE S.S#=C.S# AND
SC.C#=C.C#)
(7)檢索選修課程包含LIU老師所授課的學(xué)生學(xué)號(hào).SELECT DISTINCT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE TEACHER='LIU'))
3,(1)SELECT A,B,C
FROM R
UNION
SELECT A,B,C
FROM S
(2)SELECT A,B,C
FROM R
INTERSECT
SELECT A,B,C
FROM S
(3)SELECT A,B,C
FROM R
WHERE NOT EXISTS
(SELECT A,B,C
FROM S
WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)
(4)SELECT R.A,R.B,S.C
FROM R,S
WHERE R.B=S.B
4,(1)統(tǒng)計(jì)有學(xué)生選修的課程門數(shù).SELECT COUNT(DISTINCT C#)FROM SC
(2)求選修C4課程的學(xué)生的平均年齡.SELECT AVG(AGE)
FROM S
WHERE S# IN
(SELECT S#
FROM SC
WHERE C#='C4')
或者,SELECT AVG(AGE)
FROM S,SC
WHERE S.S#=SC.S# AND C#='004'
(3)求LIU老師所授課程的每門課程的學(xué)生平均成績(jī).SELECT CNAME,AVG(GRADE)
FROM SC ,C
WHERE SC.C#=C.C# AND TEACHER='LIU'
GROUP BY C#
(4)統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過10人的課程才統(tǒng)計(jì)).要求輸出課程號(hào)和選修人數(shù), 查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號(hào)升序排列.SELECT DISTINCT C#,COUNT(S#)
FROM SC
GROUP BY C#
HAVING COUNT(S#)>10
ORDER BY 2 DESC, C# ASC
(5)檢索學(xué)號(hào)比WANG同學(xué)大,而年齡比他小的學(xué)生姓名.SELECT X.SNAME
FROM S AS X, S AS Y
WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE(SELECT AVG(AGE)FROM S AS Y WHERE Y.SEX='女')
5,(1)往基本表S中插入一個(gè)學(xué)生元組('S9','WU',18).INSERT INTO S(S#,SNAME,AGE)VALUES('59','WU',18)
(2)在基本表S中檢索每一門課程成績(jī)都大于等于80分的學(xué)生學(xué)號(hào),姓名和性別, 并把檢索到的值送往另一個(gè)已存在的基本表STUDENT(S#,SANME,SEX).INSERT INTO STUDENT(S#,SNAME,SEX)
SELECT S#,SNAME,SEX
FROM S WHERE NOT EXISTS
(SELECT * FROM SC WHERE
GRADE<80 AND S.S#=SC.S#)
(3)在基本表SC中刪除尚無成績(jī)的選課元組.DELETE FROM SC
WHERE GRADE IS NULL
(4)把WANG同學(xué)的學(xué)習(xí)選課和成績(jī)?nèi)縿h去.DELETE FROM SC
WHERE S# IN
(SELECT S#
FROM S
WHERE SNAME='WANG')
(5)把選修MATHS課不及格的成績(jī)?nèi)臑榭罩?UPDATE SC
SET GRADE=NULL
WHERE GRADE<60 AND C# IN
(SELECT C#
FROM C
WHERE CNAME='MATHS')
6)把低于總平均成績(jī)的女同學(xué)成績(jī)提高5%.UPDATE SC
SET GRADE=GRADE*1.05
WHERE GRADE<(SELECT AVG(GRADE)FROM SC)AND S# IN(SELECT S# FROM S WHERE SEX='F')
(7)在基本表SC中修改C4課程的成績(jī),若成績(jī)小于等于75分時(shí)提高5%, 若成績(jī)大于75分時(shí)提高4%(用兩個(gè)UPDATE語句實(shí)現(xiàn)).UPDATE SC
SET GRADE=GRADE*1.05
WHERE C#='C4' AND GRADE75
6, 在宿主語言的程序中使用SLQ語句有以下規(guī)定:
(1)在程序中要區(qū)分SQL語句與宿主語言語句
(2)允許嵌入的SQL語句引用宿主語言的程序變量(稱為共享變量),但有兩條規(guī)定:
1)引用時(shí),這些變量前必須加“:”作為前綴標(biāo)識(shí),以示與數(shù)據(jù)庫中變量有區(qū)別.2)這些變量由宿主語言的程序定義,并用SQL的DECLARE語句說明.(3)SQL的集合處理方式與宿主語言單記錄處理方式之間要協(xié)調(diào).需要采用游標(biāo)機(jī)制,把集合操作轉(zhuǎn)換成單記錄處理方式.7,(1)INSERT,DELETE,UPDATE語句,查詢結(jié)果肯定是單元組時(shí)的SELECT語句, 都可直接嵌入在主程序中使用,不必涉及到游標(biāo).(2)當(dāng)SELECT語句查詢結(jié)果是多個(gè)元組時(shí),此時(shí)宿主語言程序無法使用, 一定要用游標(biāo)機(jī)制把多個(gè)元組一次一個(gè)地傳送給宿主語言處理.