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 查询选了“大数据”课程但没选“人工智能”课程的学生信息。
-- 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 查询选了“大数据”课程但没选“人工智能”课程的学生信息。
我是卢东方 这位同学哪个班上的?