m0_74208532 2022-10-11 15:18 采纳率: 100%
浏览 67
已结题

大学数据库mysql 求解答下

Student
sno char(6) 主键 学号
sname varchar(20) 姓名
birthday date 生日

Course
cno char(6) 主键 课程号
cname varchar(20) 课程名

Grade
sno char(6) 外键 学号
cno char(6) 外键 课程号 -- 复合主键是学号和课程号
grade int 成绩

根据上面三个表的描述完成下面内容。
--1 写出创建Course表的语句。
--2 写出向学生表中插入3条数据的语句。
--3 查询姓名第二个字是“红”的学生信息。
--4 查询年龄大于20岁的学生的信息。
--5 查询总分高于300分的学生信息。
--6 查询课程成绩高于课程平均分的学生信息。
-- 7 查询“数据库应用”课程比“C语言”课程成绩高的学生的信息。
-- 8 查询选了“大数据”课程但没选“人工智能”课程的学生信息。

  • 写回答

3条回答 默认 最新

  • 往事随风云渐起 2022-10-11 15:51
    关注
    
    
    -- 1 写出创建Course表的语句。
     
    CREATE TABLE course (
      cno char(6) NOT NULL COMMENT '课程号',
      cname varchar(20) DEFAULT NULL COMMENT '课程名',
      PRIMARY KEY (cno)
    );
    -- 2 写出向学生表中插入3条数据的语句。
    insert into student values('1001','张三','1992-08-28');
    insert into student values('1002','李四','1992-01-28');
    insert into student values('1003','王红','1992-03-28');
    
    -- 3 查询姓名第二个字是“红”的学生信息。
    select * from student
    where sname like '_红%';
    -- 4 查询年龄大于20岁的学生的信息。
    select * from student
    where TIMESTAMPDIFF(YEAR, birthday, CURDATE())>20;
    -- 5 查询总分高于300分的学生信息。
    select a.* from student a
    join 
    (select sno,sum(grade) as grade from grade group by sno) b
    on a.sno = b.sno
    where b.grade > 300;
    
    -- 6 查询课程成绩高于课程平均分的学生信息。
    select * from student where sno in
    (
    select a.sno from grade a
    left join
    (select cno,avg(grade) avg_g from grade group by cno) b
    on a.cno = b.cno
    where a.grade > b.avg_g) c
    
    -- 7 查询“数据库应用”课程比“C语言”课程成绩高的学生的信息。
    
    -- 8 查询选了“大数据”课程但没选“人工智能”课程的学生信息。
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月19日
  • 已采纳回答 10月11日
  • 修改了问题 10月11日
  • 修改了问题 10月11日
  • 展开全部