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


    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开始 

  • 相关阅读:
    ubuntu安装openssh-server 报依赖错误的解决过程
    LDA(Latent Dirichlet Allocation)主题模型算法
    ajax乱码
    virtualbox安装xp虚拟机缺少驱动
    mysql命令行操作
    hibernate本地验证
    mingw下的msys显示与输入乱码
    msys访问windows其他盘
    LeetCode 364. Nested List Weight Sum II
    LeetCode 535. Encode and Decode TinyURL
  • 原文地址:https://www.cnblogs.com/suola/p/11344384.html
Copyright © 2020-2023  润新知