查询格式:
select <目标列名序列> ---需要哪些列
from <表名> ---来自于哪些表
where <行选择条件> ---根据什么条件
group by <分组依据列>
having <组选择条件>
order by <排序依据列>
连接查询:
关键字:内连接查询、外连接查询、交叉连接查询
1、内连接查询
关键字:from 表1 join 表2 on <连接条件>
SELECT s.sno,sname 姓名,AVG(grade) 平均分 FROM student s JOIN score sc ON s.sno = sc.sno GROUP BY 姓名
//内连接实现显示学生平均分和该同学的名字和学号
SELECT s2.`sdept`,COUNT(s1.`sno`) 男生人数,COUNT(s2.`sno`)女生人数 FROM student s1 JOIN student s2 ON s1.`sdept` = s2.`sdept` WHERE s1.`ssex` = ‘男‘ AND s2.`ssex` = ‘女‘ GROUP BY s2.`sdept`
//显示每个系的系别,男生人数,女生人数和总人数(再想想)
内连接(默认):
关键字:from 表1 [innner] join 表2 on <连接条件>
作用域:如果两个表的相关字段满足连接条件就从两个表中提取相关字段的数据组成新的记录。(满足条件的查询)
自连接:(两张同样的表,取了别名后进行相互的连接)
外连接:左连接,右连接
关键字:from 表1 [left|right] [outer] join 表2 on <连接条件>
作用域:不满足条件的也一并输出,
参考资料:https://www.cnblogs.com/yyjie/p/7788413.html
top 限定结果查询(仅限在SQL server中使用)
关键词:select top n X... from 表 ...
例:select top 3 s.sname,s.sdept,sc.grade from student s join score on s.sno = sc.sno order by sc.grade
子查询:
可以运用在select,insert,update,delete.
关键字:
基于集合的子查询:
where 表达式 [not]in(子查询)
先执行子查询后执行主查询
SELECT * FROM student WHERE sno NOT IN (SELECT sno FROM student WHERE sdept = ‘计算机系‘)