2301_81038546 2024-06-23 11:36 采纳率: 85.7%
浏览 1
已结题

新建数据表完成MySQL问题

img

img


(1)在学生表中找出所有学生的籍贯(distinct)并显示列属性名为(别名)籍贯

(2)查询学生的姓名和年龄 year(now())-出生年份

(3)查询有不及格课程的学生的学号、课程号及成绩。Where

(4)查询有不及格课程的学生的学号 去重复性

(5)在学生表中找出信电学院2000后出生的学生的记录 and

(6)查询出生年份在1996-1998年(包括1996和1998年)的学生的姓名、性别、学院和出生年份。Where Between and 《=》 where and

(7)查询信电学院、理学院和计算机学院的学生的学号、姓名和学院 in
Not in

(8)查询所有姓王的学生的姓名、学号和性别
查找名字中第二字为“小”字的学生的姓名和学号 like % _%
(9)查找课程名是DB_Design课程的课程号、课程性质 转义字符\ ESCAPE '\ '

(10)某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,下面查询缺少成绩的学生的学号和相应的课程号 is null

(11)查询各个课程号相应的选课人数 count group by

(12)查询学号在091501~ 091506至少选修了三门课程的学生的学号和选修课程的课程数。Where 选择满足条件的元组,having作用于组,从中选择满足条件的组。
//having必须和group by一起用,且在group by后面,但是group可以单独用来分组
(13)查询学生总人数 count(*)

(14)查询计算机学院学生的平均年龄 avg(year(now()-出生年份))

(15)查询学习180101号课程的学生最高分数。Max

(16)查询选修了180102号课程的学生学号和成绩,查询结果按成绩从高到低排列。 order by desc

(17)查询每个学生及其选修课程的情况。(inner join on 内连接、外连接)

(18)查询所有学生的姓名以及他们选修课程号和成绩(左外连接)

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-23 11:36
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你提供的查询问题,以下是对应的MySQL查询语句:

    1. 找出所有学生的不同籍贯,并为籍贯列设置别名。

      SELECT DISTINCT 籍贯 AS '籍贯' FROM 学生表;
      
    2. 查询学生的姓名和当前年龄,计算方式为当前年份减去出生年份。

      SELECT 姓名, YEAR(NOW()) - 出生年份 AS '年龄' FROM 学生表;
      
    3. 查询有不及格课程的学生的学号、课程号及成绩。

      SELECT 学号, 课程号, 成绩 FROM 学习表 WHERE 成绩 < 60;
      
    4. 查询有不及格课程的学生的不重复学号。

      SELECT DISTINCT 学号 FROM 学习表 WHERE 成绩 < 60;
      
    5. 在学生表中找出信电学院2000年后出生的学生记录。

      SELECT * FROM 学生表 WHERE 学院 = '信电' AND 出生年份 > 2000;
      
    6. 查询出生年份在1996到1998年(包括1996和1998年)的学生的姓名、性别、学院和出生年份。

      SELECT 姓名, 性别, 学院, 出生年份 FROM 学生表 WHERE 出生年份 BETWEEN 1996 AND 1998;
      
    7. 查询信电学院、理学院和计算机学院的学生的学号、姓名和学院,排除不在这些学院的学生。

      SELECT 学号, 姓名, 学院 FROM 学生表 WHERE 学院 IN ('信电', '理学院', '计算机');
      
    8. 查询所有姓王的学生的姓名、学号和性别,以及名字中第二字为“小”字的学生的姓名和学号。

      SELECT 姓名, 学号, 性别 FROM 学生表 WHERE 姓名 LIKE '王%';
      SELECT 姓名, 学号 FROM 学生表 WHERE 姓名 LIKE '__小%';
      
    9. 查找课程名为"DB_Design"的课程号和课程性质,注意转义字符的使用。

      SELECT 课程号, 课程性质 FROM 课程表 WHERE 课程名 LIKE 'DB\_Design';
      
    10. 查询有选课记录但缺少考试成绩的学生的学号和相应的课程号。

      SELECT 学号, 课程号 FROM 学习表 WHERE 成绩 IS NULL;
      
    11. 查询各个课程号相应的选课人数,并按课程号分组。

      SELECT 课程号, COUNT(*) AS '选课人数' FROM 学习表 GROUP BY 课程号;
      
    12. 查询学号在091501到091506之间至少选修了三门课程的学生的学号和选修课程的课程数。

      SELECT 学号, COUNT(DISTINCT 课程号) AS '选修课程数' FROM 学习表
      WHERE 学号 BETWEEN '091501' AND '091506'
      GROUP BY 学号 HAVING COUNT(DISTINCT 课程号) >= 3;
      
    13. 查询学生总人数。

      SELECT COUNT(*) AS '学生总人数' FROM 学生表;
      
    14. 查询计算机学院学生的平均年龄。

      SELECT AVG(YEAR(NOW()) - 出生年份) AS '平均年龄' FROM 学生表 WHERE 学院 = '计算机';
      
    15. 查询学习180101号课程的学生最高分数。

      SELECT MAX(成绩) AS '最高分数' FROM 学习表 WHERE 课程号 = '180101';
      
    16. 查询选修了180102号课程的学生学号和成绩,并按成绩从高到低排列。

      SELECT 学号, 成绩 FROM 学习表 WHERE 课程号 = '180102' ORDER BY 成绩 DESC;
      
    17. 查询每个学生及其选修课程的情况,使用内连接或外连接。

      SELECT 学生表.学号, 学生表.姓名, 学习表.课程号, 学习表.成绩
      FROM 学生表
      INNER JOIN 学习表 ON 学生表.学号 = 学习表.学号;
      
    18. 查询所有学生的姓名以及他们选修的课程号和成绩,使用左外连接。

      SELECT 学生表.姓名, 学习表.课程号, 学习表.成绩
      FROM 学生表
      LEFT JOIN 学习表 ON 学生表.学号 = 学习表.学号;
      

    请注意,以上SQL语句是基于你提供的信息编写的,实际使用时可能需要根据你的数据库表名和字段名进行调整。另外,由于你没有提供具体的表名和字段名,我使用了中文来代替,你需要根据实际情况替换成正确的表名和字段名。如果需要参考链接,可以查看MySQL官方文档或搜索相关的SQL教程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 6月23日