多表连接和子查询

多表连接和子查询

1、使用GROUP BY子句查询sc表中各个学生的平均成绩。

select avg(grade) from sc group by sno;

2、使用UNION查询在student 表中姓“李”的学生的学号、姓名与姓“林”的学生的学号、姓名返回在一个表中。

select sno,sname from student where sname like'李%'union select sno,sname from
student where sname like '林%';

3、在student 表中查找与“梁健华”性别相同的所有学生的姓名、出生日期。

select sno,sname from student where ssex like '男'

4、使用IN子查询查找所修课程编号为160004、160007的学生学号、姓名、性别。

select sno,sname,ssex from student where sno in(160004,160006);

5、使用ANY子查询查找学号为1001的学生的分数比1003号的学生的最低分数高的课程编号和分数。

select grade,cno from sc where sno=1001 and grade>all(select min(grade) from sc where sno=1003);

6、使用ALL子查询查找学号为1001的学生的分数比学号为1003的学生的最高成绩还要高的课程编号和分数。

select grade,cno from sc where sno=1001 and grade>all(select max(grade) from sc where sno=1003);

7、使用EXISTS子查询查找选修课程的学生学号和姓名

select sno,sname from student where exists(select sno from sc);

8、查询分数在80-90范围内的学生的学号、姓名、分数。

select student.sno,sname,sc.grade from sc inner join student where grade<80 and grade>70;

9、使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。

select student.sno,sname,sc.gradee from sc inner join studnet on student.sno=sc.sno
where sc.cno in(select cno from course where cname='数据库');

10、查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩

select max(grade),student.sno,sname from student inner joinsc on sc.sno=student.sno group by sc.sno;

11、使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。

select student.sno,sname,sum(grade)as '总成绩'from student
left join sc on student.sno=sc.sno group by student.sno;

12、使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数, 表中没有的课程列值为空。

select course.cname,course.cno,count(*)as'人数' from course right join sc on course.cno=sc.cno group by cno;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值