数据库 sql 语言问题 30分

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:03:11
表说明:

create table depart(系别 varchar(6),系号 varchar(5),primary key(系别));

create table course(课程号 varchar(2),课程名 varchar(20),先行课 varchar(2),学分 int,primary key(课程号));

create table student(学号 varchar(5),姓名 varchar(8),性别 char(2),年龄 int,系别 varchar(6),primary key(学号),foreign key (系别) references depart(系别));

create table xuanke(学号 varchar(5),课程号 varchar(2),成绩 int,foreign key (学号) references student(学号),foreign key (课程号) references course(课程号));

要求:
1,找出选修了学号为“05201”的学生所选修所有课程的学生姓名
2,求至少选修了“操作系统”和“数据结构”课程的学生学号
3,查询所有不姓刘的学生的姓名和平均成绩

--1,找出选修了学号为“05201”的学生所选修所有课程的学生姓名
select 姓名
from student
where 学号 in (select 学号
from xuanke
where 课程号 in (select 课程号
from xuanke
where 学号 = '05201')
group by 学号
having count(*) = (select count(*)
from xuanke
where 学号 = '05201'))

--2,求至少选修了“操作系统”和“数据结构”课程的学生学号
select 学号
from xuanke
where 课程号 in (select 课程号
from course
where 课程名 in ('操作系统', '数据结构'))
group by 学号
having count(*) = 2

--3,查询所有不姓刘的学生的姓名和平均成绩
select 姓名, avg(成绩) as '平均成绩'
from student, xuanke
where student.学号 = xuanke.学号 and 姓名 not like '刘%'
group by 姓名

这题目很有意思,做得我很爽……嘿嘿!

1.select a.姓名 from student a,xuanke b where a.学号=b.学号 and b.课程号='05201'
2.select a.学号 from xuanke a,course b where a.课程号=b.课程号 and b.课程名='操作系统' and b.课程名='数据结构'