SQL数据库语句实现数据表的综合查询

本文详细介绍了SQL数据库查询中的嵌套查询(子查询)和连接查询的应用,涵盖从基本的SELECT语法到复杂的多表联合查询。通过实例讲解如何查询与特定学生专业相同的学生信息、课程选修人数、比较成绩、连接查询多表数据等。
  1. SELECT语句的基本语法和查询条件表示方法;
  2. 单表查询、连接查询、嵌套查询等常用查询的使用方法。

注意:以下所有实验基于该表✈点击前往查看

嵌套查询(子查询)

(一)请使用嵌套查询(子查询)完成下列查询要求

  1. 查询与“赵青”专业相同的学生学号、姓名和性别;
select s_id,sname,ssex
from student
where smajor in(
select smajor
from student
where sname='赵青')
  1. 查询选修了8号课程的学生基本情况;
select *
from student
where s_id in(
select s_id
from grade
where c_id in(
select c_id
from course
where c_id='8' )
)
  1. 查询选修了“大学英语”的学生学号、姓名、性别和专业;
select s_id,sname,ssex,smajor
from student
where s_id in(
select s_id
from grade
where c_id in(
select c_id
from course
where cname='大学英语' )
)
  1. 查询未选修课程的学生信息;
select *
from student
where smajor in(
select smajor
from student
where smajor='NULL')
  1. 查询课程的选修人数及其平均成绩;
select course.c_id 课程号,平均成绩=AVG(grade.grade),选修人数=COUNT(*)
from course,grade
where course.c_id=grade.c_id
group by course.c_id
  1. 查询比“刘星”年龄大的学生信息;
select *
from student
where sbirthday>all(
select sbirthday
from student
where sname='刘星')
  1. 查询选修了1号课程的学生学号,要求该门课程的成绩不低于5号课程的最低分;
select student.s_id
from student,grade
where grade <any(
select grade
from grade
where c_id='5')and c_id='1'
  1. 查询比所有软件工程专业的学生总学分都高的学生基本信息;
select student.*
from student,grade
where grade>any(select SUM(grade)
from grade,student 
where grade.s_id=student.s_id
and smajor='软件工程')
  1. 查询只选修了一门课程的学生的学号、姓名和所在院系;
select *
from student
where s_id in(select grade.s_id
from grade group by grade.s_id having
COUNT(grade.s_id)='1')
  1. 查询至少一门课程和“李华”所选课程一样的学生的学号;
select student.s_id
from student,course,grade
where student.s_id=grade.s_id
and grade.c_id=course.cc_id
and student.s_id in
(
select grade.s_id
from grade
where grade.c_id in
(
select course.c_id
from course,student
where grade.s_id=student.s_id
and student.sname='李华'
)
)

连接查询

(二)请使用连接查询完成下列查询。

  1. 查询每个学生的基本情况以及选修的课程情况;
select student.*,cname
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
  1. 查询每个专业选修的课程数量;
select smajor,COUNT(*) as '课程数量'
from student
group by smajor
  1. 查询选修每门课程的人数,结果中包含课程名及选修的人数;
select smajor as'课程名',COUNT(*) as'选修人数'
from student
group by samjor
  1. 查询计算机专业和软件工程专业所有男生的选课情况,结果中包括学号、姓名、课程号、课程名及成绩;
select student.s_id,sname,course.c_id,cname,grade.grade
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
and cname in ('计算机网络','软件工程') and ssex='男'
  1. 查询学号为“201815016”的学生的选课情况,结果中包括选修的课程号、课程名、学分及成绩;
select course.c_id 学号,cname 名字,credit 课程分,grade 成绩
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
and student.s_id='201815016'
  1. 查询选修了“大学英语”且成绩在80分以上的学生学号、姓名及成绩;
select student.s_id,sname,grade
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
and cname='大学英语' and grade>80
  1. 查询所有被选修课程的课程号、课程名、学分及平均成绩;
select grade.c_id 课程号,cname 课程名,credit 学分,AVG(grade) as '平均成绩'
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
group by grade.c_id,cname,credit
  1. 查询“管理”专业学生的选课情况,结果中包括学号、姓名、课程名及成绩;
select student.s_id,sname,cname,grade
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
and cname='经济管理'
  1. 查询“数据库”课程的最高分、最低分和平均成绩;
select MAX(grade) 最高分,MIN(grade) 最低分,AVG(grade) 平均成绩
from grade,course
where grade.c_id=course.c_id
and cname='数据库'
  1. 查询所有不及格学生的学号、姓名及其选修的课程名;
select student.s_id,sname,cname
from student,grade,course
where student.s_id=grade.s_id
and course.c_id=grade.c_id
and grade<60
  1. 查询“外语”专业学生的最高分;
select MAX(grade) 最高分
from grade,course
where course.c_id=grade.c_id
 and cname in('大学英语','日语')
  1. 查询15号课程被选修的情况,结果中包含课程名、开课学期、学分及选修人数。
select cname 课程名,cp_id 开课学期,credit 学分,COUNT(*) 选修人数
from course
where  c_id='15'
group by cname,cp_id,credit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值