SqlServer笔试基础篇
试用SQL查询语句表达下列对教学数据库中三个基本表 S、SC 、C 的查询: S(sno,sname,SAGE,SSEX) 各字段表示学号,姓名,年龄,性别 Sc(sno,cno,grade) 各字段表示学号,课程号,成绩、 C(cno,cname, TEACHER) 各字段表示课程号,课程名和教师名 其 中 SAGE, grade 是数值型,其他均为字符型。
1.求年龄大于所有女同学年龄的男学生姓名和年龄。
SELECTSNAME,SAGE FROM S AS X
WHERE X.SSEX=' 男'AND X.SAGE >ALL (SELECT SAGE FROMS AS Y WHERE
Y.SSEX=' 女')
2.求年龄大于女同学平均年龄的男学生姓名和年龄。
SELECT SNAME,SAGE
FROM S
WHERE SSEX=' 男'
AND SAGE>(SELECTAVG(SAGE) FROM S WHERE SSEX='女')
3.在 SC 中检索成绩为空值的学生学号和课程号。
SELECT Sno,CnoFROM SC WHERE GRADE IS NULL
4.检索姓名以 WANG 打头的所有学生的姓名和年龄。
SELECT SNAME,SAGE FROM S
WHERE SNAME LIKE 'WANG%'
5.检索学号比 WANG 同学大,而年龄比他小的学生姓名。
SELECTX.SNAME FROM S AS X, S AS Y
WHERE Y .SNAME='WANG' AND X.Sno>Y.Sno AND X.SAGE
SELECT SNAME
from s
where sno>(select sno from s where SNAME='WANG') andSAGE2
ORDER BY 2 DESC, Cno ASC
SELECT DISTINCT Cno,COUNT(Sno) as 人数
FROMSC GROUP BY Cno
HAVING COUNT(Sno)>2
ORDER BY 人 数 DESC, Cno ASC
7.求 LIU 老师所授课程的每门课程的学生平均成绩。
SELECT AVG(GRADE)
FROM SC join C on SC.Cno=C.Cno WHERE TEACHER='liu'
GROUP BY c.Cno
SELECTCNAME,AVG(GRADE) FROM SC ,C WHERE SC.Cno=C.Cno AND TEACHER='liu'
GROUP BY c.Cno,cname
8.求选修 C4 课程的学生的平均年龄。
SELECT AVG(SAGE )
FROMS WHERE Sno
IN(SELECT Sno FROM SC WHERE Cno='4')
SELECT AVG(SAGE)
FROM S,SC WHERES.Sno=SC.Sno AND Cno='4'
9.统计有学生选修的课程门数。
SELECT COUNT(DISTINCT Cno) FROM SC
试用 SQL 更新语句表达对教学数据库中三个基本表 S、 SC 、C的各个更新操作:
10.在基本表 SC 中修改 4 号课程的成绩,若成绩小于等于 75 分时提高 5% , 若成绩大于 75 分时提高 4% (用两个 UPDATE 语句实现)。
UPDATE SC SETGRADE=GRADE*1.05 WHERE Cno='4' AND GRADE75
11 .把低于总平均成绩的女同学成绩提高 5% 。
UPDATE SC SETGRADE=GRADE*1.05 WHERE GRADE |