這個應該要兩個小時的上機實驗吧,我記得第一次做這個實驗,我沒做完,下面是我課後做的除了最後三小題還沒寫,12.13.14.15我沒找到書上的例子不知道對不對,留下參考,等下次問老師,看老師的方法
實驗五SQL的數據查詢(4學時)
一、實驗目的
1. 熟練使用SQL語言select 命令進行數據庫數據的各類查詢:單表查詢、多表連接查詢、分組統計查詢及嵌套查詢等。
2.會使用帶有子查詢的數據更新命令insert、update、delete。
二、實驗準備及任務
1.複習教材上SQL語言中select 命令和帶有子查詢的insert、update、delete
命令。
2.使用教師已經錄入相關數據的附錄二的“xsglsjk”數據庫,完成以下查詢,預先寫好相應的命令。
(1)查詢姓名中第二個字爲“勇”的男學生的姓名和班級。
(2)查詢成績爲68、78、88和98的選修記錄。
(3)查詢選修了“4”號課程沒有成績的學生學號。
(4)查詢“00311”班所有女生的學號、姓名和出生年份。
(5)查詢“李勇敏”同學的班長姓名。
(6)查詢“2001102”同學的選課門數。
(7)統計學生表中的班級數。
(8)查詢“00311”班每位同學的課程平均分。
(9)查詢哪些學生最低分大於70,最高分小於90,輸出他們的學號。
(10)計算Student×Cj×Course的結果。
(11)以clno升序、Sage降序列出Student表的學生信息。
(12)列出成績高於學號爲“2000101”、課程號爲“3”的成績的所有選課記錄。
(13)查詢和“張婷婷”同學在同一班級的學生信息。
(14)查詢不及格課程在三門及以上的同學。
(15)*查詢選修了目前Course中所有課程的同學。
3. 完成帶有子查詢的insert、update、delete的任務,預先寫好相應的命令。
(16)對每位同學,求平均成績,並把結果存入新建立的表中。
(17)將班級號爲“01312”班級的所有女學生的成績加5分。
(18)刪除“01311”班級的所有學生的成績記錄。
mycode:
select sname,clno
from student
where sname like '_勇%';
select sno
from cj
where grade in ('68', '78', '88', '98');
--或者寫成where grade = 68 or grade = 78 or grade = 88 or grade = 98;兩者等價
select sno
from cj
where cno = 4 and grade is null;
select sno, sname, 2018 - sage
from student
where clno = '00311' and ssex = '女';
select sname
from student
where sno =
(
select monitor
from class
where clno =
(
select clno
from student
where sname = '李勇敏'
)
)
select count(cno)
from cj
where sno = '2001102'
select count(distinct clno)
from student
select sno,avg(grade)
from cj
where sno in
(select sno
from student
where clno = '00311'
)
group by sno
select sno
from cj
group by sno
having min(grade)>70 and max(grade)<90;
select student.sno,sname,ssex,sage,grade,clno
from student,cj,course
where student.sno = cj.sno;
select sno,clno,sage
from student
order by sage desc,clno asc;
select grade
from cj
where grade >
(
select grade
from cj
where sno = '2000101' and cno = 3
)
select sno,sage,sname
from student
where clno in
(
select clno
from student
where sname = '張婷婷'
)
select Sno
from cj
having count((grade)<60)>30
select sno
from cj
where cno = *;