zoukankan      html  css  js  c++  java
  • 分组和条件指定

    显然,where只能指定行的情况,如果想按照列分组,需要别的语句。关系型数据库的分组是通过 GROUP BY 来实现的。本指定的字段又称为:聚合键

    语句顺序和执行顺序

    select -> from -> where -> group BY为语句顺序,数据库子句的顺序不能改变或者替换。

    由于是老外开发,所以执行顺序不是从前到后:from->where->group by->select。在这个过程中,where会按照条件成成新表用来分组。通过顺序可以发现,GROUP BY不能使用别名。

    聚合函数

    定义:用于合计的函数,将多行处理成一行。

    常用的聚合函数:

    • COUNT
    • SUM
    • AVG
    • MAX
    • MIN

    NULL运算

    当判断是否为NULL的时候,应该使用is NULL/is not NULL。不能用=或者<>

    对于+-*/运算,和NULL的结果都是NULL(因为NULL代表空,不存在的val)

    COUNT函数

    有如下表:

    city myID
    beingjing 1
    (NULL) 2

    执行命令,select count(city),count(myID),count(*) from forLearn;

    结果是:1 2 2

    说明count函数的结果根据参数的不同而不同,并且只有count可以将*作为参数。
    count(*)得到包含NULL的数据的行数,count(col_name)会得到NULL之外的数据行数。

    其他聚合函数

    其他的聚合函数以列为参数,所以排除了NULL的值。例如:含有NULLint列,sum取和后也不是null

    条件指定

    SQL规定:where语句中不能使用聚合函数。如果需要聚合函数的使用,需要使用having语句。

    之前的语句顺序变为:select -> from -> where -> group BY -> having

    综上:HAVING、SELECT、ORDER BY中才能使用聚合函数。

    wherehaving

    对于什么时候使用哪个,当对行指定条件时,使用where。当对组指定条件时,使用having

    对于两者的性能,由于where在指定条件时,对数据进行了过滤,所以DBMS内部排序处理的压力会减小,因此where效率更高。

    ORDER BY排序

    GROUP BY分组的结果是无序的。因此,采用ORDER BY来排序。排序的字段,称为排序键。通常,它写在句子末尾。

    在处理null时候,由于NULL不能比较大小,所以NULL在开头或者末尾进行汇总。

    并且,SELECT实在GROUP BY子句之后,ORDER BY之前执行的。所以在排序键中可以使用别名。


    欢迎进一步交流本博文相关内容:

    博客园地址 : http://www.cnblogs.com/AsuraDong/

    CSDN地址 : http://blog.csdn.net/asuradong

    也可以致信进行交流 : xiaochiyijiu@163.com

    欢迎转载 , 但请指明出处  :  )


  • 相关阅读:
    POJ 1251 Jungle Roads
    1111 Online Map (30 分)
    1122 Hamiltonian Cycle (25 分)
    POJ 2560 Freckles
    1087 All Roads Lead to Rome (30 分)
    1072 Gas Station (30 分)
    1018 Public Bike Management (30 分)
    1030 Travel Plan (30 分)
    22. bootstrap组件#巨幕和旋转图标
    3. Spring配置文件
  • 原文地址:https://www.cnblogs.com/AsuraDong/p/7211972.html
Copyright © 2011-2022 走看看