zoukankan      html  css  js  c++  java
  • 07 单表查询

    一、单表查询的语法
       SELECT 字段1,字段2... FROM 表名
                      WHERE 条件
                      GROUP BY field
                      HAVING 筛选
                      ORDER BY field
                      LIMIT 限制条数
    二、关键字的执行优先级(重点)

    重点中的重点:关键字的执行优先级
    from
    where
    group by
    having
    select
    distinct
    order by
    limit

    1.找到表:from

    2.拿着where指定的约束条件,去文件/表中取出一条条记录

    3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组

    4.将分组的结果进行having过滤

    5.执行select

    6.去重

    7.将结果按条件排序:order by

    8.限制结果的显示条数

    三、where约束
        where子句中可以使用
        1.比较运算符:>、<、>=、<=、<>、!=
        2.between 80 and 100 :值在80到100之间
        3.in(80,90,100)值是10或20或30
        4.like 'xiaomagepattern': pattern可以是%或者_。%小时任意多字符,_表示一个字符
        5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    四、group by 分组

        一旦分组之后 只能查看分组的字段,如果想查看组内的信息,我们要通过聚合函数
            count()  总数量
            max()  求最大值
            min()  求最小值
            avg()  求平均值
            sum()  求和
            group_concat()  组内的信息根据逗号连接

    #1、首先明确一点:分组发生在where之后,即分组是基于where之后得到的记录而进行的

    #2、分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息表的职位分组,或者按照性别进行分组等

    #3、为何要分组呢?
        取每个部门的最高工资
        取每个部门的员工数
        取男人数和女人数

    小窍门:‘每’这个字后面的字段,就是我们分组的依据

    #4、大前提:
        可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看组内信息,需要借助于聚合函数


    五、having过滤
    复制代码

    HAVING与WHERE不一样的地方在于

    #!!!执行优先级从高到低:where > group by > having
    #1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。

    #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数

    六、order by 查询排序
    按单列排序
        SELECT * FROM employee ORDER BY age;
        SELECT * FROM employee ORDER BY age ASC;
        SELECT * FROM employee ORDER BY age DESC;
    按多列排序:先按照age升序排序,如果年纪相同,则按照id降序
        SELECT * from employee
            ORDER BY age ASC,
            id DESC;
    七、limit  限制查询的记录数:
    示例:
        SELECT * FROM employee ORDER BY salary DESC
         LIMIT 3;                    #默认初始位置为0

        SELECT * FROM employee ORDER BY salary DESC
            LIMIT 0,5; #从第0开始,即先查询出第一条,然后包含这一条在内往后查5条

        SELECT * FROM employee ORDER BY salary DESC
            LIMIT 5,5; #从第5开始,即先查询出第6条,然后包含这一条在内往后查5条


      参考地址:https://www.cnblogs.com/majj/p/9170351.html

  • 相关阅读:
    黑客网站拒绝删除微软机密文件 被迫关停 狼人:
    微软:SE2010不是我们的杀毒软件 狼人:
    Websense互联网威胁报告: Web威胁更具混合性 狼人:
    安全厂商:至少100家企业遭遇谷歌同样攻击 狼人:
    金山毒霸:极虎继续发威 病毒借兽兽门大肆传播 狼人:
    网站站点百度再出新声明 内容始终是王道
    目标合并【C++】容器元素的复制和变换
    设置配置高可用的Mysql双机热备(Mysql_HA)
    百度高度js 检测web页面是否正在操作,如超过规定时间内未操作将自动跳转至指定页面。
    删除元素【C++】顺序容器 Vector 注意事项
  • 原文地址:https://www.cnblogs.com/mayugang/p/10222832.html
Copyright © 2011-2022 走看看