《SQL數(shù)據(jù)查詢策略》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL數(shù)據(jù)查詢策略(5頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、實(shí)驗(yàn)名稱:SQL數(shù)據(jù)查詢
一、 實(shí)驗(yàn)?zāi)康模?
數(shù)據(jù)查詢語(yǔ)句是SQL語(yǔ)句的重要組成部分,合理使用數(shù)據(jù)查詢語(yǔ)句,可以極大的簡(jiǎn)化應(yīng) 用程序編制、快速的定位分析數(shù)據(jù)庫(kù)系統(tǒng)的故障,查詢語(yǔ)句是編程人員與數(shù)據(jù)庫(kù)管理人員必 不可少的工具,通過(guò)實(shí)驗(yàn)達(dá)到以下目的:
(1 )加深學(xué)生對(duì)查詢語(yǔ)句基本概念的理解與掌握 ,最終達(dá)到靈活應(yīng)用。
(2) 掌握SELECT語(yǔ)句的基本語(yǔ)法。
(3) 掌握簡(jiǎn)單單表查詢、連接查詢、嵌套查詢。
(4) 學(xué)會(huì)使用聚函數(shù)和進(jìn)行分組查詢。
二、 實(shí)驗(yàn)內(nèi)容:
1、 單表查詢:
2、 連接查詢
3、 嵌套查詢
三、 實(shí)驗(yàn)環(huán)境
Windows xp 系統(tǒng) SQL Server
2、2000 服務(wù)器
四、 程序源碼與運(yùn)行結(jié)果
1、單表查詢:
設(shè)計(jì)查詢語(yǔ)句完成對(duì) *、distinet 、like(% 和_)、in、not in、between and、order by、group by等的應(yīng)用。
(1) 檢索出學(xué)生信息表中所有女生的記錄。
Select * from stude nt where sex= '女'
(2) 從選課成績(jī)表中檢索出所有學(xué)生的成績(jī),并去除重復(fù)值。
select disti net grade from es
(3) 從課程表中檢索出全部數(shù)據(jù)的信息。
select * from course where en ame like '
3、數(shù)據(jù) %'
(3) 從學(xué)生信息表中檢索出姓王的學(xué)生的信息。
select * from stude nt where sn ame like ' 王 _'
(4) 從成績(jī)表中找出成績(jī)等于60分的學(xué)生的性別。
select sex from stude nt where sno in (select sno from cs where grade='60')
(5) 找出不在成績(jī)表中的學(xué)生的所有信息。
select * from student where sno not in (select sno from cs)
(6) 在成績(jī)表中找出成績(jī)從70到85分的所有信息。
sel
4、ect * from cs where grade betwee n 70 and 85
(7) 將學(xué)生表中的所有學(xué)生的年齡按升序排列。
select * from stude nt order by age
(8) 檢索出沒(méi)門課程的平均分。
select eno ,avg(grade) from cs group by eno
2、 連接查詢
設(shè)計(jì)查詢語(yǔ)句,分別用兩種方式(where+連接條件和join…on)表示連接條件實(shí)現(xiàn)連 接查詢
(1) 找出成績(jī)大于90分的姓名和他們所在的專業(yè)。(where+連接條件)
select disti net sn ame,dept fro
5、m stude nt,cs where (grade>90)
(2) 找出成績(jī)大于85分的姓名和他們所在的專業(yè)。(join…on)
select dist inct sn ame,dept
from stude nt join cs on( stude nt.s no=cs.s no) where (grade>85)
3、 嵌套查詢
具體要完成的任務(wù)如下:
1. 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名
select sno,sn ame from stude nt
2. 查詢?nèi)w學(xué)生的全部信息,并為學(xué)生表命名別名。
select * from stude nt W,course E ,c
6、s B where W.sno=B.s no and E.c no=B.c no
3. 查全體學(xué)生的出生年份,并為年份加上標(biāo)題
select 出生日期 from student
4. 查詢選修了課程的學(xué)生學(xué)號(hào),要求消除重復(fù)行
select sno from stude nt where sno in (select sno from cs)
5. 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。
select sn ame,age from stude nt where age<20
6. 查詢年齡在20~23歲的學(xué)生信息(要求至少使用兩種方式完成查詢)
select * from
7、 stude nt where age betwee n 20 and 23 (第一種)
select * from stude nt where (age>=20 and age<=23) (第二種)
7. 使用IN關(guān)鍵字查詢信息系(IS)、數(shù)學(xué)系(MA和計(jì)算機(jī)科學(xué)系(CS的學(xué)生
select * from stude nt
where sno in (select sno from stude nt where dept='IS')
select * from stude nt
where sno in (select sno from stude nt where dept=
8、'MA')
select * from stude nt
where sno in (select sno from student where dept='CS')
8. 查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。
select sn ame,sex from stude nt
where dept!='MA'a nd dept!='CS'a nd dept!='IS'
9. 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。
select sn ame,s no ,sex from stude nt where sn ame like ' 劉 %
10. 查詢名字中
9、第2個(gè)字為"陽(yáng)"字的學(xué)生的姓名和學(xué)號(hào)。
select sn ame,s no from stude nt where sn ame like '_ 陽(yáng)'
11. 查詢DB_Design課程的課程號(hào)和學(xué)分(先在 Course表中插入“ DB_Desigr”課程 信息)。
select cn ame,score from course where cn ame='DB_Desig n'
12. 查詢沒(méi)有考試成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。
select sno,cno from cs where grade is n ull
13. 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
select s
10、n ame from stude nt where age<20 and dept='CS'
14. 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡 降序排列。
select * from stude nt order by dept,age desc
15. 查詢學(xué)生總?cè)藬?shù)。
select coun t(s no) from stude nt
16. 查詢選修了課程的學(xué)生人數(shù)。
select coun t(disti net sno) from cs
17. 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。
select avg(grade) from cs where
11、eno='C001'
18. 查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。
select max(grade) from cs where eno='C001'
19. 求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。
select eno ,co un t(s no) from cs group by eno
20. 查詢選修了 3門以上課程的學(xué)生學(xué)號(hào)(提示用 Having字句)
select sno ,co un t(c no) from cs group by sno hav ing coun t(c no) >=3
21、 查詢有3門以上課程是90分以上的學(xué)生的學(xué)號(hào)及(90分以上的)課程數(shù)。
sel
12、ect sno ,co un t(c no) from cs where grade>=90
group by sno hav ing coun t(c no) >=3
22、 查詢?nèi)w學(xué)生與選課表的笛卡爾積。
select * from stude nt cross joi n course
23、 查詢每個(gè)學(xué)生及其選修課程的情況。
select disti net * from stude nt cross join cs where stude nt.s no=cs.s no
24、 查詢每個(gè)學(xué)生及其選修課程的情況(去掉重復(fù)屬性)
select a.s no,s name,
13、sex,dept,age,b.c no,c name,score,c.grade
from stude nt a,course b,cs c where a.s no=c.s no and b.c no=c.c no
25、 查詢某門課程考試成績(jī)相同的學(xué)生學(xué)號(hào)和課程信息
select a.s no ,b.c no ,b.c name,b.score from cs a,course b
where a.c no=b.c no and (select coun t(*) from cs where cno=cno and grade=grade)>=2
26、 查詢每個(gè)學(xué)生的選修課程包
14、括沒(méi)有選修課程的學(xué)生(外連接)
select * from stude nt a,cs b where a.s no *=b.s no
27、 查詢每個(gè)學(xué)生的選修課程包括沒(méi)有被學(xué)生選修的課程(外連接)
select * from stude nt ,cs where stude nt.s no =*cs.s no
28、 查詢每個(gè)學(xué)生的選修課程即包括沒(méi)有被學(xué)生選修的課程又包括沒(méi)有被學(xué)生選修的課程
(全連接)
select * from stude nt full join cs on stude nt.s no=cs.s no
29、 查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生
15、的學(xué)號(hào)、姓名
select sno,sn ame from stude nt
where sno in( select sno from cs where grade>='90'a nd eno='C002')
30、 查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)
select stude nt.s no,sn ame,c name,grade from stude nt,course,cs
where (stude nt.s no=cs.s no) and (course.c no=cs.c no)
31、 查詢與“張三”在一個(gè)系學(xué)習(xí)的學(xué)生(IN)
select * from
16、stude nt
where dept in( select dept from stude nt where sn ame=' 張三')
32、 查詢選修了課程名為“信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名。
select sno,sn ame from stude nt
where sno in (select sno from cs where eno in (select eno from course where cn ame='
信息系統(tǒng)'))
33、 查詢與“張三”在同一個(gè)系學(xué)習(xí)的學(xué)生
select * from stude nt
where dept in (select d
17、ept from stude nt where sn ame=' 張三')
34、 查詢選修了課程1或者選修了課程2的學(xué)生(要求消除重復(fù)組 UNION
(select sno from cs where cno='C001' ) UNION
(select sno from cs where eno='C002')
35、 查詢選修了課程1或者選修了課程2的學(xué)生(要求不消除重復(fù)組 UNION ALL
(select sno from cs where cno='C001' ) UNION all
(select sno from cs where eno='C002')
五、實(shí)驗(yàn)總結(jié)
通過(guò)本次試驗(yàn),掌握了使用 SQL語(yǔ)句查詢的技巧。