• Select


     

    select:简单查询(单表查询),多表查询

    syntax:
      select [distinct|distinctrow|all]
        select_expression,... --列名|表达式|*
          [FROM table_references
            [where where_definition]
              [GROUP BY col_name]
                [HAVING where_definition]
                  [ORDER BY {unsigned_integer|col_name|formula}[ASC|DESC],...]
                    [LIMIT[offset,]rows]
                      [PROCEDURE procedure_name]
          ]

     


      先是关于执行顺序问题
      看一个完整的语句

    select Ssex,avg(Sage)
      from db_school.t_student
        group by Ssex
          having avg(Sage)>21;

     


      然后试着执行

      

    select Ssex,avg(Sage) from db_school.t_student;
    Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'db_school.t_student.Ssex'; this is incompatible with sql_mode=only_full_group_by.

      即是说select 的字段必须包含在group字段里.这样看来select 关键字只能是最后执行即先进行结果集的行选再进行结果集的列选,那首先执行的from生成第一次结果集,where 子句筛选后生成新的结果集,group 对结果集进行分组,使用聚集函数进行计算,having 子句筛选分组,计算出其他的表达式,select 的字段对结果集进行列选,最后使用order by 对结果集进行排序.

      在执行的整个过程中应该注意到where和having各自的作用时间|作用域,where 对第一次结果集其作用,第一结果集没有分组没有聚集函数没有其他的表达式的结果若执行

    select avg(Sage)
      from db_school.t_student
        where avg(Sage)>21;

     


    是报错Error Code: 1111. Invalid use of group function.问题还是出在编译顺序,执行顺序上,所以只能写成

    select avg(Sage)
      from db_school.t_student
        having avg(Sage)>21;

     

    语法补充1:关于别名
    select id [as] 名册,'OK' 状态,NOW() as data
    from Sale;--单引号引用表示常量,不引用表示列名;也可以使用函数注意函数的返回值也就算数据类型,
    select id as 名册,'OK' as "状 态"
    from Sale;--别名有特殊情况使用双引号作标记最好as不省略
    语法补充2:where_definition 条件子句的可以使用的谓词
    in()
    not
    between A and B
    is NULL--NULL在数据库中是混沌状态可以有真值判断不能进行比较不能进行=null的查询
    like:通配符
    _:代表任意一个字符,%:代表任意多的字符
    and
    or
    >,<,!=,=,<=,>=
    语法补充3:聚合函数也叫集合函数属于表达式聚合函数同order by、distinct、top等都是一样的,都是作用于最终的结果集合的,而不是最用于单行元组的,所以在SQL语句的处理过程当中一定要分清该关键字是作用域单行记录的,还是作用于最终的结果集合的。
    count([DISTINCT]列名|*):NULL不记数,count(*)主键?
    sum():
    avg():
    max()
    min()
    lower()
    upper()

  • 相关阅读:
    许多其他C++的class样本
    cocos2d-x 3.2 它 2048 —— 第三
    hdu 4035 可能性DP 成都网络游戏
    OpenWrt 主的发展版本号trunk MT7620N 无线驱动程序bug
    [leetcode]Permutation Sequence
    Java Swing编程接口(30)---列表框:JList
    [创新工场]2014创新工场校园招聘回文字符串维修
    FFmpeg来源简单分析:结构会员管理系统-AVClass
    [Angular 2] Component relative paths
    [TypeScript] Reflection and Decorator Metadata
  • 原文地址:https://www.cnblogs.com/lihaqwq/p/12370197.html
Copyright © 2020-2023  润新知