sql server 连接查询和分组查询

1.分组查询
语法:SELECT …… FROM <表名>
WHERE ……
GROUP BY ……
注意:SELECT列表中只能包含
(1) 被分组的列
(2)为每个分组返回一个值的表达式,如聚合函数
2.多列分组
语法:
SELECT 列名1,列名2
FROM 表名
GROUP BY 列名1,列名2
ORDER BY 列名1或列名2
默认的分组排序以后面的一列为准
3.分组筛选
语法:SELECT …… FROM <表名>
WHERE ……
GROUP BY ……
HAVING……
4.WHERE与HAVING对比
WHERE子句:用来筛选 FROM 子句中指定的操作所产生的行
GROUP BY子句:用来分组 WHERE 子句的输出
HAVING子句:用来从分组的结果中筛选行
5.where与having的区别
(1)where子句用来筛选from子句中所指定的操作而产生的行,having子句从分组的结果中筛选行
(2)where子句不可以使用聚合函数,而having子句可以
(3)where语句在增删改查语句中都可以用,而having只可以用于select语句中
(4)where和having一起使用,where会先执行,having会后执行
5.常用的多表连接查询
内连接(INNER JOIN)
外连接:左外连接 (LEFT JOIN)
右外连接 (RIGHT JOIN)
6.内连接
典型的连接运算,使用像   =   或   <>   之类的比较运算符
内连接使用比较运算符根据每个表的通用列中的值匹配两个表中的行
语法1:SELECT ……
FROM 表1
INNER JOIN 表2
ON ……
语法2:SELECT ……
FROM 表1,表2
WHERE ……
7.左外连接
LEFT JOIN
主表(左表)Students中的数据逐条匹配表Score中的数据
1、匹配,返回到结果集
2、无匹配,NULL值返回到结果集
8.右外连接
RIGHT JOIN
是以右边表中的数据为基准,若右表有数据左表没有数据,否则显示右表中的数据左表中的数据显示为空 
9.全连接
FULL JOIN
完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值
10.内连接和外连接区别
(1)内连接只显示符合连接条件的记录,外连接除了显示符合条件的记录外,还显示表中的记录
(2)内连接是保证两个表中所有行都满足连接条件,而外连接不仅包含符合连接条件的行,还包含左表(左连接时)、右表(右连接时)或两个边接表(全外连接)中的所有数据行
11.sql连接查询网址
https://blog.csdn.net/qq_38036909/article/details/82720156

原文地址:https://www.cnblogs.com/zjx-959/p/13044610.html