--01.内连接SElECT*FROM Student
INNERJOIN SC ON Student.Sid=SC.Sid--Student与SC连接起来SElECT Sname,Cid,Grade FROM Student S--为表取别名,AS可以省略JOIN SC ON S.Sid=SC.Sid--INNER可以省略SELECT Sname,Cname,Grade
FROM Student S
JOIN SC ON S.Sid=SC.Sid
JOIN Course C JOIN C.Cid=SC.Cid--涉及三张表,多一个表就多一个JOINWHERE Sdept='计算机系'AND Cname='计算机操作系统'SELECT Sname,Sdept
FROM Student S
JOIN SC ON S.Sid=SC.Sid
JOIN Course C JOIN C.Cid=SC.Cid--要查询的列与元组与SC无关,但是S与C要靠SC连接WHERE Cname='JAVA'SELECT Cid,COUNT(*) AS Total,AVG(Grade) AS AvgGrade,
MAX(Grade) AS MaxGrade,MIN(Grade) AS MinGrade
FROM Student S
JOIN SC ON SC.Sid=S.Sid
WHERE Sdept='计算机系'GROUPBY Cid
--02.自连接SELECT S2.Sname,S2.Sdept FROM Student S1
JOIN Student S2 ON S1.Sdept=S2.Sdept--要让物理上为同一张表在逻辑上成为两个表WHERE S1.Sname='张三'AND S2.Sname!='张三'--查询与张三在同一个系的学生--03.外连接--查询学生的选课情况,包括选了课程的学生和没选课程的学生--不满足表连接条件的也要显示出来,并在相应列上放置NULL--03.01左外连接SELECT Student.Sid,Sname,Cid,Grade
FROM Student LEFTOUTERJOIN SC--限制表2(这里指SC)中的数据必须满足连接条件,表1无所谓ON Student.Sid=Sc.Sid
--03.02右外连接 SELECT Student.Sid,Sname,Cid,Grade
FROM SC RIGHTOUTERJOIN Student--限制表1(这里指SC)中的数据必须满足连接条件,表2无所谓ON Student.Sid=Sc.Sid
--查询哪些课程没有人选,列出其课程名SELECT Cname FROM Course C LEFTJOIN SC
ON C.Cid=SC.Cid
WHERE SC.Cid ISNULL
TOP限制结果集
TOP n [percent] [WITH TIES]
--WITH TIES表示包括并列结果--查询年龄最大的三名学生SELECT TOP 3 Sname,Sid,Sdept
FROM Student
ORDERBY Sage DESC--查询Java成绩前三包括并列的学生SELECT TOP 3WITH TIES Sname,Sid,Grade
FROM Student S JOIN SC ON S.Sid=SC.Sid
JOIN Course C ON C.Sid=SC.Sid
WHERE Cname="Java"
ORDERBY Grade DESC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现