以下查询操作使用SQL语句完成: (1)查询所有教师的教工号、姓名和电话号码信息; (2)查询“计算机”系的所有副教授的基本信息; (3)查询所有女同学的姓名及所在的系,显示结果不允许重复出现; (4)查询各教师的教工号、姓名、工资及按工资的95%发放的预发工资,查询结果列名用中文描述,其中,预发工资列名为“预发95%的工资”; (5)假设学号的5个数字中,前2位代表年级,后3位为序号,检索计算机系2006级总学分在58~85分的学生信息,并按学号降序排列; 注:可使用字符串取子串函数SUBSTRING(串,开始位置,长度)。 (6)查询平均成绩最高的前两名同学的学号及平均成绩; (7〉查询课程号不为“1”、“4”和“7”的课程信息; (8)查询所有姓“张”或“刘”或“高”的学生信息; (9)查询每个系有多少个同学; (10)查询各课程的平均成绩并按成绩降序排列; (11)查询至少有两门课在90分以上的学生学号及90分以上的课程数;(12)统计每门课程的选课人数、平均成绩、最高成绩、最低成绩;(13)列出课程表中有先行课的课程名。
时间: 2024-03-31 07:38:51 浏览: 304
1. 查询所有教师的教工号、姓名和电话号码信息:SELECT 工号, 姓名, 电话号码 FROM 教师表;
2. 查询“计算机”系的所有副教授的基本信息:SELECT * FROM 教师表 WHERE 系名='计算机' AND 职称='副教授';
3. 查询所有女同学的姓名及所在的系,显示结果不允许重复出现:SELECT DISTINCT 学生表.姓名, 学生表.系名 FROM 学生表 WHERE 学生表.性别='女';
4. 查询各教师的教工号、姓名、工资及按工资的95%发放的预发工资,查询结果列名用中文描述,其中,预发工资列名为“预发95%的工资”:SELECT 教师表.工号 AS 教工号, 教师表.姓名 AS 姓名, 教师表.工资 AS 工资, 教师表.工资*0.95 AS 预发95%的工资 FROM 教师表;
5. 假设学号的5个数字中,前2位代表年级,后3位为序号,检索计算机系2006级总学分在58~85分的学生信息,并按学号降序排列:SELECT 学生表.学号 FROM 学生表 WHERE 学生表.系名='计算机' AND SUBSTRING(学生表.学号, 1, 2)='06' AND (SELECT SUM(成绩表.学分) FROM 成绩表 WHERE 成绩表.学号=学生表.学号 AND 成绩表.成绩 BETWEEN 58 AND 85)>=0 ORDER BY 学生表.学号 DESC;
6. 查询平均成绩最高的前两名同学的学号及平均成绩:SELECT TOP 2 学号, AVG(成绩) AS 平均成绩 FROM 成绩表 GROUP BY 学号 ORDER BY 平均成绩 DESC;
7. 查询课程号不为“1”、“4”和“7”的课程信息:SELECT * FROM 课程表 WHERE 课程号 NOT IN ('1', '4', '7');
8. 查询所有姓“张”或“刘”或“高”的学生信息:SELECT * FROM 学生表 WHERE 姓名 LIKE '张%' OR 姓名 LIKE '刘%' OR 姓名 LIKE '高%';
9. 查询每个系有多少个同学:SELECT 系名, COUNT(*) AS 学生数 FROM 学生表 GROUP BY 系名;
10. 查询各课程的平均成绩并按成绩降序排列:SELECT 课程表.课程名, AVG(成绩表.成绩) AS 平均成绩 FROM 课程表 LEFT OUTER JOIN 成绩表 ON 课程表.课程号=成绩表.课程号 GROUP BY 课程表.课程名 ORDER BY 平均成绩 DESC;
11. 查询至少有两门课在90分以上的学生学号及90分以上的课程数:SELECT 学号, COUNT(*) AS 课程数 FROM 成绩表 WHERE 成绩>=90 GROUP BY 学号 HAVING COUNT(*)>=2;
12. 统计每门课程的选课人数、平均成绩、最高成绩、最低成绩:SELECT 课程表.课程名, COUNT(*) AS 选课人数, AVG(成绩表.成绩) AS 平均成绩, MAX(成绩表.成绩) AS 最高成绩, MIN(成绩表.成绩) AS 最低成绩 FROM 课程表 LEFT OUTER JOIN 成绩表 ON 课程表.课程号=成绩表.课程号 GROUP BY 课程表.课程名;
13. 列出课程表中有先行课的课程名:SELECT DISTINCT 课程表.课程名 FROM 课程表 INNER JOIN 先行课表 ON 课程表.课程号=先行课表.课程号;
阅读全文