1. 使用INTO子句将STUDENT表中计算机系的学生信息放入JSJSTUDENT表中:
SELECT 学号, 姓名, 性别, 年龄
INTO JSJSTUDENT
FROM STUDENT
WHERE 系别 = '计算机系'
  1. 查询JSJSTUDENT表,将年龄最大的3位学生的信息放入本地临时表中:
SELECT TOP 3 学号, 姓名, 性别, 年龄
INTO #JSJSTUDENT
FROM JSJSTUDENT
ORDER BY 年龄 DESC

SELECT * FROM #JSJSTUDENT
  1. 使用显式内连接查询计算机系学生选修课程的信息:
SELECT S.学号, S.姓名, S.性别, C.选修课程名, C.成绩
FROM STUDENT S
INNER JOIN COURSE C ON S.学号 = C.学号
WHERE S.系别 = '计算机系'

使用派生表查询计算机系学生选修课程的信息:

SELECT S.学号, S.姓名, S.性别, C.选修课程名, C.成绩
FROM (
    SELECT 学号, 姓名, 性别
    FROM STUDENT
    WHERE 系别 = '计算机系'
) S
INNER JOIN COURSE C ON S.学号 = C.学号
  1. 使用外连接查询没有选修课程的学生学号,姓名和所在系:
SELECT S.学号, S.姓名, S.系别
FROM STUDENT S
LEFT JOIN COURSE C ON S.学号 = C.学号
WHERE C.学号 IS NULL
  1. 使用外连接查询没有人选修的课程号,课程名和学分:
SELECT C.课程号, C.课程名, C.学分
FROM COURSE C
LEFT JOIN STUDENT S ON C.课程号 = S.课程号
WHERE S.学号 IS NULL

使用嵌套查询查询没有人选修的课程号,课程名和学分:

SELECT 课程号, 课程名, 学分
FROM COURSE
WHERE 课程号 NOT IN (
    SELECT DISTINCT 课程号
    FROM STUDENT
)
  1. 统计每名学生选修课程的门数和平均分,显示学生学号,姓名,所在系和选课门数及课程平均分,结果显示选课门数排名前3的学生信息:
SELECT S.学号, S.姓名, S.系别, COUNT(C.课程号) AS 选课门数, AVG(C.成绩) AS 平均分
FROM STUDENT S
LEFT JOIN COURSE C ON S.学号 = C.学号
GROUP BY S.学号, S.姓名, S.系别
ORDER BY 选课门数 DESC
TOP 3
  1. 统计除2号课程外的其它课程的选课人数和平均分,显示课程号,课程名,学分,选课人数及平均分,最后结果中要包含2号课程的信息:
SELECT C.课程号, C.课程名, C.学分, COUNT(S.学号) AS 选课人数, AVG(S.成绩) AS 平均分
FROM COURSE C
LEFT JOIN STUDENT S ON C.课程号 = S.课程号
WHERE C.课程号 <> 2
GROUP BY C.课程号, C.课程名, C.学分
UNION ALL
SELECT 课程号, 课程名, 学分, COUNT(学号) AS 选课人数, AVG(成绩) AS 平均分
FROM COURSE
WHERE 课程号 = 2
GROUP BY 课程号, 课程名, 学分
  1. 查询选修每门课程的男女生人数和平均分,结果显示课程号、性别、选课人数和平均分,比较结果使用WITH ROLLUP和WITH CUBE短语:

使用WITH ROLLUP:

SELECT 课程号, 性别, COUNT(学号) AS 选课人数, AVG(成绩) AS 平均分
FROM COURSE
GROUP BY 课程号, 性别 WITH ROLLUP

使用WITH CUBE:

SELECT 课程号, 性别, COUNT(学号) AS 选课人数, AVG(成绩) AS 平均分
FROM COURSE
GROUP BY 课程号, 性别 WITH CUBE
  1. 查询所有学生的信息,结果统计总人数和平均年龄,可使用COMPUTE子句或使用批处理:

使用COMPUTE子句:

SELECT 学号, 姓名, 性别, 年龄
FROM STUDENT
COMPUTE COUNT(学号), AVG(年龄)

使用批处理:

SELECT 学号, 姓名, 性别, 年龄
FROM STUDENT

SELECT COUNT(学号) AS 总人数, AVG(年龄) AS 平均年龄
FROM STUDENT
  1. 查询每个学生选修课程的信息(学号、姓名、课程号、成绩),并统计每个学生选修的课程数和平均分,可使用COMPUTE BY子句或使用批处理:

使用COMPUTE BY子句:

SELECT 学号, 姓名, 课程号, 成绩
FROM COURSE
COMPUTE COUNT(课程号), AVG(成绩)
BY 学号, 姓名

使用批处理:

SELECT 学号, 姓名, 课程号, 成绩
FROM COURSE

SELECT 学号, 姓名, COUNT(课程号) AS 选修课程数, AVG(成绩) AS 平均分
FROM COURSE
GROUP BY 学号, 姓名
  1. 查询选修了'数据库'课程的计算机系学生信息,显示学生学号,姓名和成绩,要求最后结果中成绩以等级制显示(90分以上为'优秀',80-90分为'良好',70-80分为'中等',60-70分为'及格',60分以下为'不及格'):
SELECT S.学号, S.姓名, 
    CASE 
        WHEN C.成绩 >= 90 THEN '优秀'
        WHEN C.成绩 >= 80 AND C.成绩 < 90 THEN '良好'
        WHEN C.成绩 >= 70 AND C.成绩 < 80 THEN '中等'
        WHEN C.成绩 >= 60 AND C.成绩 < 70 THEN '及格'
        ELSE '不及格'
    END AS 成绩等级
FROM STUDENT S
INNER JOIN COURSE C ON S.学号 = C.学号
WHERE S.系别 = '计算机系' AND C.选修课程名 = '数据库'
  1. 将计算机系学生的所有成绩都降低5分,使用更新语句中的子查询方式:
UPDATE COURSE
SET 成绩 = 成绩 - 5
WHERE 学号 IN (
    SELECT 学号
    FROM STUDENT
    WHERE 系别 = '计算机系'
)

使用FROM子句方式:

UPDATE C
SET 成绩 = 成绩 - 5
FROM COURSE C
INNER JOIN STUDENT S ON C.学号 = S.学号
WHERE S.系别 = '计算机系'
  1. 删除计算机系成绩不及格学生的选课记录,使用删除语句中的子查询方式:
DELETE FROM COURSE
WHERE 学号 IN (
    SELECT 学号
    FROM STUDENT
    WHERE 系别 = '计算机系' AND 成绩 < 60
)

使用FROM子句方式:

DELETE C
FROM COURSE C
INNER JOIN STUDENT S ON C.学号 = S.学号
WHERE S.系别 = '计算机系' AND C.成绩 < 60
T-SQL 数据库操作练习:学生成绩管理

原文地址: https://www.cveoy.top/t/topic/phVr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录