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注入式攻击。

posted @   似梦亦非梦  阅读(24)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示