第六章 分组查询和连接查询

1、分组查询的语法:

select 列(或者聚合函数)

from 表名

where 条件

group by 分组依据

对分组后的每个组内的记录进行一个聚集,通常用到聚合函数

注:分组查询所查询的列

(1)分组列——CourseID

(2)聚合函数计算出的列—— AVG(Score) AS 课程平均成绩

注:在分组查询的只能有两项:

(1)查询的结果(可以多个,比如可以同时查询平均分和总分)

(2)分组的依据(用哪个列分组)

2、分组筛选语句:

select ……                 --要查询的结果或者分组的列

from  <表名>                    --从哪一张表中查询

where ……              --查询的条件,列名作为判断条件

group by  ……          --分组

having……              --聚合函数得到的结果作为条件、

order by……           --排序选择哪一个列

WHEREHAVING的区别

WHERE子句:

用来筛选 FROM 子句中指定的操作所产生的行,WHERE子句只能对没有分组的数据进行筛选。

GROUP BY子句:

用来分组 WHERE 子句的输出

HAVING子句:

用来从分组的结果中筛选行,分组后的条件筛选必须使用HAVING子句。

3、连接查询

a) 内连接的语法:

  • 使用where判断列名:

select ……    --两张或者多张表中的一个或者多个列

from 1,表2……

where 1.相同列名=2.相同列名

  • 使用inner join on

select ……    --两张或者多张表中的一个或者多个列

from 1 as 别名1

inner join 2 as 别名2

on(别名1.相同列名=别名2.相同列名)

b) 外连接——主表全部出,次表出对应,没有就出NULL

  • 左外连接:主表和次表连接的时候,如果主表中的数据在次表中没有对应的数据,那么次表中用null返回到结果集中。

语法:

select ……

from 主表 as 别名

left join 次表 as 别名

on(主表别名.相同列=次表别名.相同列)

注:先出现的第一张表为主表(左表),第二章为次表

  • 右外连接:右外联接的原理与左外联接相同,右表逐条去匹配记录;否则NULL填充。

语法:

select……

from 次表 as 别名

right join 主表 as 别名

on(主表别名.相同列=次表别名.相同列)

注:先出现的第一张表为次表,第二章为主表(右表)

数据库中所有下标从1开始,编程语言中所有下标从0开始 

原文地址:https://www.cnblogs.com/suola/p/11344384.html