1.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') andSAGE<(select sAGE from s
where SNAME='WANG')
6.统计每门课程的学生选修人数 (超过 2 人的课程才统计) 。要求
输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按
课程号升序排列。
SELECTDISTINCT Cno,COUNT(Sno) FROM SC
GROUPBY Cno HAVING COUNT(Sno)>2
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 GRADE<=75
UPDATE SC SET GRADE=GRADE*1.04 WHERE Cno='4' AND GRADE>75
11 .把低于总平均成绩的女同学成绩提高 5% 。
UPDATE SC SETGRADE=GRADE*1.05 WHERE GRADE<(SELECT AVG(GRADE) FROM SC)
AND Sno IN (SELECT Sno FROM SWHERE SSEX=' 女')
12 .把选修数据库原理课不及格的成绩全改为空值。
UPDATE SC SET GRADE=NULL
WHERE GRADE<60 AND Cno IN(SELECT Cno FROM C
WHERE CNAME=' 数据库原理 ')
13.把WANG 同学的学习选课和成绩全部删去。
DELETEFROM SC WHERE Sno IN(SELECT Sno FROM S
WHERE SNAME='WANG')
14 .在基本表 SC 中删除尚无成绩的选课元组。
DELETE FROM SCWHERE GRADE IS NULL
15 .往基本表 S 中插入一个学生元组( ‘ S9’,‘ WU ’,18 )。。
INSERT INTO S(Sno,SNAME,SAGE) VALUES('59','WU',18)
16.什么是SQL注入式攻击?
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗
服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命
令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)