SQL语言训练1

本文详细介绍了SQL语言在数据库操作中的各种应用场景,包括查询特定分数以上的学生、特定学生的课程信息、课程的先修课、同时选修多门课程的学生、不同系学生的比较等复杂查询操作。通过实例解析了SQL的左连接、分组统计、嵌套查询等技巧,为读者提供全面的SQL学习资源。
摘要由CSDN通过智能技术生成

文章目录


创建表格说明

学生表 (学号,姓名,性别,年龄,所在系)
CREATE TABLE Student (Sno varCHAR(10) NOT NULL UNIQUE, Sname varCHAR(30), Ssex varCHAR(20) check (Ssex='男' or Ssex='女' ), Sage int, Sdept varCHAR(20) );
课程表 (课程号,课程名,先修课程,学分)
create Table Course( Cno varCHAR(10), Cname varCHAR(60), Cpno varCHAR(10), Ccredit int not null, Primary key(Cno), FOREIGN KEY (Cpno) REFERENCES Course(Cno) );
选课表 (学号,课程号,成绩)
CREATE TABLE SC( Sno varCHAR(10), Cno varCHAR(10), Grade int, Primary key (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );


SQL语言实现查询

1. 查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数

sc表,限定90分以上并以学号分组,count统计

SELECT sno, count(*) 
FROM sc 
WHERE grade>90 
GROUP BY sno 
HAVING count(*) >3;

2. 查询张三所选修的课程编号和成绩

可以将学生表与课程表合并,限定条件查询,对于表内相同的列一定要标注,例如选课表的学号sc.sno,标注方式(表.列),一定记得标注每一个有歧义的,或者自定义命名

select cno, grade 
from student, sc 
where student.sno=sc.sno 
   and sname='张三' ;

3. 查询张三选修的课程名称及学分

合并三张表最容易,缺点就是费内存,对于嵌套查询会在下一次训练使用

select cname, ccredit 
from student, course, sc 
where student.sno=sc.sno 
  and sc.cno=course.cno 
  and sname= '张三' ;

4. 查询每个学生的学号、姓名、选修的课程名及成绩

想必很多也知道要合并表输出,但是这里得使用基于学生表的左连接left join(表)on(连接条件)
(或者右连接right join,此时学生表要放右边),基于学生表的左连接可以做到查找出没有选课的学生,仅仅是自然连接会统计不到未选课的,左连接效果更好。

select student.sno,sname,cname,grade 
from (student left join sc on student.sno=sc.sno) 
   left join course on sc.cno=course.cno;

5. 查询所有学生的选课情况,列出学号、姓名、课程号、课程名、成绩、学分。

跟4很像,而这个所有学生,只能用左连接

select student.sno,sname,sc.cno,cname,grade,ccredit 
from (student left join sc on student.sno=sc.sno) 
left join course on sc.cno=course.cno;

6. 查询所有低于90分的学生成绩记录,并按学号降序排列,列出学号、姓名、课程号、课程名、成绩。

order by …desc降序排列

select student.sno,sname,sc.cno,cname,grade 
from student,sc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值