sql-语句
like
Exists子句只返回true值,Not Exists只返回false值。的用法
设教学数据库Education有三个关系:
学生关系S(Sno,Sname, Ssex,Sage,Sdept);
学习关系SC(Sno,Cno,Grade);
课程关系C(Cno,Cname,Cdept,Tname)
查所年龄在20至23岁之间的学生姓名、系别及年龄。
select Sname,Sdept,Sage
from S
where Sage between 20 and 23
查缺考的学生的学号和课程号。
select Sno,Cno
from SC
where Grade is null
查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。
select *
from S
order by Sdept asc,Sage desc
检索至少选修课程号为C2和C4的学生学号; (子查询)
select Sno
from SC
where Cno='C2' and Sno in
(select Sno
from SC
where Cno='C4')
检索学习全部课程的学生姓名;
//Exists子句只返回true值,Not Exists只返回false值。
select Sname
from S
where not exists
(select * from C
where not exists
(select * from SC
where S.Sno=SC.Sno and SC.Cno=C.Cno))
//查找学习了所有课程的学生,即是在C中不存在一门课程没有学。
查询计算机系选修了3门以上课程的学生的学号。
select S.Sno
from S,SC
where S.Sdept='CS' and S.Sno=SC.Sno
group by S.Sno
having count(*)>3
16、求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。
select Sage,count(Sno)
from S
group by Sage
having count(*)>50
order by count(*) asc,Sage desc
统计每一年龄选修课程的学生人数。
select Sage,count(distinct S.Sno)
from S,SC
where S.Sno=SC.Sno
group by S.Sage
查询全部学生的成绩 成绩为0分的用*代替,缺考的用_代替
SELECT name,CASE score.score WHEN 0 THEN '*' ELSE IFNULL(score.score,'_') END AS score FROM student LEFT JOIN score ON student.id=score.stu_id;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!