SQL Server数据库————连接查询和分组查询
分组查询
select 列from <表名>
where ……
group by 列
注意:跟order by一样group by 后面可以写多个列 写多个列则按照多列分组
having:对分组之后的结果进行筛选
!!!注意:having必须写在group by后面,没有group by,having也不能写
!!!对查询的列,要么出现在聚合函数,要么出现在分组,否则会出错
一条SQL语句同时出现 where group by having order by则排列顺序为:
Select…from 表....where…. group by....having…order by
/********联接查询***********/
多表联接查询实际上是通过各个表之间共同列的关联性来查询数据的
A.内连接:
1) 在where子句中指定连接条件
select 列名1,列名2... from 表1,表2
where 表1.列 = 表2.列
-如有多表,from中多个表名用逗号隔开,where中多个关系中用 and 连接
2) 在from子句中使用inner join…on
select 列名1,列名2.. from 表1 inner join 表2
on 表1.列 = 表2.列
!!!注意:如果两个表中的列名相同,在语句中如果查询这一列,需要写表名.列名
如果列名不同,不需要加表名
B.外连接:
左外连接:left join…on 或者left outer join…on
查询出左表所有的行,不仅仅是匹配的行。若左表某些数据在右表中没有对应的项,则以null填充
select 列名1,列名2... from 表1 left join 表2
on 表1.列 = 表2.列
右外连接:right join…on 或者right outer join…on
查询右表所有行,不仅仅是匹配的行。若右表的某些数据在左表中没有对应的项,则以null填充
select 列名1,列名2... from 表1 right join 表2
on 表1.列 = 表2.列