目錄
一、實(shí)驗(yàn)學(xué)時(shí)
二、實(shí)驗(yàn)?zāi)康?/h2>
三、實(shí)驗(yàn)要求
四、實(shí)驗(yàn)內(nèi)容
五、實(shí)驗(yàn)思考
? ? ? 六、不問初心,方得始終,加油,諸君!??!
一、實(shí)驗(yàn)學(xué)時(shí)
2學(xué)時(shí)
二、實(shí)驗(yàn)?zāi)康?/h3>
(1)掌握查詢的概念和方法。
(2)掌握查詢命令窗口的使用方法。
(3)熟練掌握單表查詢的select語句。
(4)熟練掌握聚合函數(shù)的使用。
(5)熟練掌握復(fù)雜查詢的select語句。
(6)熟練掌握連接查詢方法。
(7)熟練掌握嵌套查詢方法。
三、實(shí)驗(yàn)要求
(1)硬件設(shè)備:奔騰II或奔騰II以上計(jì)算機(jī),局域網(wǎng)。
(2)軟件環(huán)境:WINDOWS 9X/NT、WINDOWS SERVER、WINDOWS 7、WINDOWS 10、MySQL。
(3)實(shí)驗(yàn)課前預(yù)習(xí),課后及時(shí)完成實(shí)驗(yàn)內(nèi)容。
(4)實(shí)驗(yàn)過程及記錄按題目格式要求填寫代碼清單。
四、實(shí)驗(yàn)內(nèi)容
1.基本查詢
(1)查詢學(xué)生表中全體學(xué)生的所有信息。
T-SQL語句:
SELECT*
FROM student;
(2)檢索全體學(xué)生的學(xué)號(hào)、姓名。
T-SQL語句:
SELECT Sno,Sname
FROM Student;
2.查詢時(shí)改變列標(biāo)題的顯示
檢索全體學(xué)生的學(xué)號(hào)、姓名、性別信息,并分別加上“學(xué)號(hào)”、“姓名”、“性別”的別名信息。
T-SQL語句:
SELECT Sno AS 學(xué)號(hào),Sname AS 姓名,Ssex AS 性別 from student;
3.條件查詢
(1)查詢成績(jī)大于90分的學(xué)生的學(xué)號(hào)及課程號(hào)、成績(jī)。
T-SQL語句:
(2)查詢成績(jī)介于85~90分的學(xué)生的學(xué)號(hào)及課程號(hào)、成績(jī)。
T-SQL語句:
Select*
From sc
Where grade between 85 And 90;
(3)查詢選修了課程號(hào)為“2”,且成績(jī)大于88的學(xué)生的學(xué)號(hào)。
T-SQL語句:
select sno
from sc
WHERE Cno='2' AND Grade>88;
4.基于IN子句的數(shù)據(jù)查詢
從課程表中查詢出“數(shù)學(xué)”、“PASCAL語言”的所有信息。
T-SQL語句:
SELECT *
from course
where cname in('數(shù)學(xué)','PASCAL語言');
5.基于Like子句的查詢
(1)從學(xué)生表中分別檢索出姓張的所有同學(xué)的資料;檢索名字的第二個(gè)字是“紅”或“虹”的所有同學(xué)的資料。
T-SQL語句:
SELECT *
from student
WHERE sname like '_紅%'OR Sname LIKE '_虹%';
(2)如果用戶查詢的匹配字符串本身就含有%或_,比如在課程表中,添加一門課程為Visual_Basic,其它相關(guān)信息自取。若要查詢名為Visual_Basic的課程的學(xué)分,則T-SQL語句為:
(提示:使用ESCAPE短語,MySQL轉(zhuǎn)義字符不能用“\”)
selest Ccredit
FROM course
WHERE Cname LIKE 'Visual/_Basic' ESCAPE'/';
6.查詢部分?jǐn)?shù)據(jù)
分別從課程表中檢索出前5個(gè)的課程信息。(提示:MySQL使用limit)
T-SQL語句:
SELECT *
FROM course
Limit 5;
7.消除重復(fù)行
檢索出學(xué)生已選課程的課程號(hào),要求顯示的課程號(hào)不重復(fù)。
T-SQL語句:
SELECT DISTINCT Cno
from sc;
8.查詢經(jīng)過計(jì)算的值
查詢?nèi)w學(xué)生的姓名及其出生年份,要求為計(jì)算值取別名“出生年份”。(提示:用系統(tǒng)函數(shù)獲取當(dāng)前的年份減去年齡即為出生年份。MySQL中取系統(tǒng)時(shí)間函數(shù)為now()。)
T-SQL語句:
select YEAR(now())-Sage'出生年份'
FROM student;
9.使用ORDER BY語句對(duì)查詢的結(jié)果進(jìn)行排序
升序的關(guān)鍵字是ASC,降序的關(guān)鍵字是DESC,系統(tǒng)默認(rèn)的是升序排列。
顯示所有學(xué)生的基本信息,并按學(xué)生的年齡的升序排列。
T-SQL語句:
SELECT *
FROM student
ORDER BY Sage ASC;
10.使用Group子句進(jìn)行查詢
如果要在數(shù)據(jù)檢索時(shí)對(duì)表中數(shù)據(jù)按照一定條件進(jìn)行分組匯總或求平均值,就要使用Group BY子句并使用集合函數(shù)。
(1)匯總總分大于200分的學(xué)生的學(xué)號(hào)及總成績(jī)。
T-SQL語句:
SELECT sno,sum(ALL grade)'總成績(jī)'
FROM sc
GROUP BY sno
HAVING sum(Grade)>200;
(2)查詢各個(gè)課程號(hào)相應(yīng)的選課人數(shù)。
T-SQL語句:
SELECT Cno,COUNT(distinct Sno)'選課人數(shù)'
FROM SC
GROUP BY Cno;
11.使用聚合函數(shù)
(1)查詢學(xué)生總?cè)藬?shù)。
T-SQL語句:
SELECT COUNT(*)'學(xué)生總?cè)藬?shù)'
FROM student;
(2)計(jì)算“2”號(hào)課程的學(xué)生平均成績(jī)、最高分、最低分。
T-SQL語句:
SELECT AVG(Grade)'平均成績(jī)',MAX(Grade)'最高分',MIN(Grade)'最低分'
FROM sc;
where cno='2';
12.查詢比“王敏”年紀(jì)大的男學(xué)生信息。
T-SQL語句:
select *
FROM student
WHERE Sage>(
??SELECT Sage
??FROM student
??where sname='王敏'
);
13.檢索所有學(xué)生的選課信息。(提示:使用外連接)
T-SQL語句:
Select*
FROM student LEFT outer join sc on(student.Sno=sc.sno);
14.查詢已選課學(xué)生的學(xué)號(hào)、姓名、課程名、成績(jī)。(提示:連接查詢)
T-SQL語句:
SELECT student.sno,Sname,Cname,Grade
FROM student,sc,course
WHERE student.sno=sc.sno AND course.cno=sc.cno;
15.查詢選修了“信息系統(tǒng)”的學(xué)生的學(xué)號(hào)和姓名。
T-SQL語句:
SELECT student.sno,Sname
FROM student,sc,course
WHERE student.sno=sc.sno AND
???sc.cno=course.cno AND
???course.Cname='信息系統(tǒng)';
16.查詢與“劉晨”在同一個(gè)系的學(xué)生學(xué)號(hào)、姓名、性別。
子查詢T-SQL語句:
SELECT sno,sname,Ssex
FROM student
WHERE Sdept IN
? ????(SELECT Sdept
? ?????FROM student
? ?????WHERE Sname='劉晨'
? ????);
連接查詢T-SQL語句:
SELECT S1.Sno,s1.Sname,s1.Sdept
FROM student s1,student s2
WHERE s1.Sdept=s2.Sdept AND s2.Sname='劉晨';
17.查詢其他系中比計(jì)算機(jī)科學(xué)系任一學(xué)生年齡大的學(xué)生的學(xué)號(hào)、姓名。
帶有ANY或ALL謂詞的子查詢語句:
SELECT sname,sage
FROM student
WHERE Sage>ANY(
? ???SELECT Sage
? ???FROM student
? ???WHERE Sdept='CS'
);
用聚合函數(shù)實(shí)現(xiàn):
SELECT Sname,Sage
FROM student
WHERE Sage>(
? ???SELECT MIN(Sage)
? ???FROM student
? ???WHERE Sdept='cs'
) AND Sdept<>'cs';
18.檢索選修3門以上課程的學(xué)生的學(xué)號(hào)、總成績(jī)。
T-SQL語句:
SELECT Sno,sum(grade)'總成績(jī)'
FROM sc
GROUP BY Sno HAVING COUNT(*)>3;
19.檢索多于2名學(xué)生選修的課程號(hào)及平均成績(jī)。
T-SQL語句:
SELECT cno,AVG(grade)'平均成績(jī)'
FROM sc
GROUP BY cno HAVING COUNT(*)>2;
五、實(shí)驗(yàn)思考
1. 查詢所有沒有選修課程的學(xué)生的學(xué)號(hào)、姓名。
SELECT sno,Sname
FROM student
WHERE sno not in(
SELECT Sno
FROM sc
);
2. 查詢選修課程的人數(shù)。
SELECT count(DISTINCT sno)'選修課程的人數(shù)'
FROM sc;
- 查詢選課人數(shù)大于等于3人的課程編號(hào)、課程名稱、人數(shù)。
SELECT sc.Cno, Cname,COUNT(sno)’人數(shù)’
FROM course RIGHT JOIN sc on(course.cno=sc.cno)
GROUP BY sc.Cno HAVING COUNT(*)>=2;
4. 在查詢的FROM子句中實(shí)現(xiàn)表與表之間的連接有哪幾種方式?對(duì)應(yīng)的關(guān)鍵字分別是什么?
左 left join 左表為準(zhǔn)
右 left join 右表為準(zhǔn)
內(nèi) inner join 左右表中多出現(xiàn)文章來源:http://www.zghlxwxcb.cn/news/detail-427627.html
交叉 cross join 實(shí)際中暫時(shí)沒用到。文章來源地址http://www.zghlxwxcb.cn/news/detail-427627.html
六、不問初心,方得始終,加油,諸君?。?!
到了這里,關(guān)于實(shí)驗(yàn)二 數(shù)據(jù)庫的查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!