zoukankan      html  css  js  c++  java
  • mysql查询的语法

    单表查询语法

    SELECT DISTINCT 字段1,字段2... FROM 表名
                                  WHERE 条件
                                  GROUP BY field
                                  HAVING 筛选
                                  ORDER BY field
                                  LIMIT 限制条数

    关键字执行的优先级

    from
    where
    group by
    select
    having
    distinct
    order by
    limit
    

      

    1.找到表:from

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

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

    4.执行select(去重)

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

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

    7.限制结果的显示条数

    where约束

    where字句中可以使用:

    1. 比较运算符:> < >= <= <> !=
    2. between 80 and 100 值在80到100之间
    3. in(80,90,100) 值是80或90或100
    4. like 'e%'
        通配符可以是%或_,
        %表示任意多字符
        _表示一个字符 
    5. 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    

      

    group by 

    单独使用GROUP BY关键字分组
        SELECT post FROM employee GROUP BY post;
        注意:我们按照post字段分组,那么select查询的字段只能是post,想要获取组内的其他相关信息,需要借助函数
    
    GROUP BY关键字和GROUP_CONCAT()函数一起使用
        SELECT post,GROUP_CONCAT(emp_name) FROM employee GROUP BY post;#按照岗位分组,并查看组内成员名
        SELECT post,GROUP_CONCAT(emp_name) as emp_members FROM employee GROUP BY post;
    
    GROUP BY与聚合函数一起使用
        select post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人

    聚合函数

    复制代码
    #强调:聚合函数聚合的是组的内容,若是没有分组,则默认一组
    
    示例:
        SELECT COUNT(*) FROM employee;
        SELECT COUNT(*) FROM employee WHERE depart_id=1;
        SELECT MAX(salary) FROM employee;
        SELECT MIN(salary) FROM employee;
        SELECT AVG(salary) FROM employee;
        SELECT SUM(salary) FROM employee;
        SELECT SUM(salary) FROM employee WHERE depart_id=3;

    HAVING过滤

    HAVING与WHERE不一样的地方在于!!!!!!

    ORDER BY 查询排序

    按单列排序
        SELECT * FROM employee ORDER BY salary;
        SELECT * FROM employee ORDER BY salary ASC;
        SELECT * FROM employee ORDER BY salary DESC;
    
    按多列排序:先按照age排序,如果年纪相同,则按照薪资排序
        SELECT * from employee
            ORDER BY age,
            salary 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条

    使用正则表达式查询

    SELECT * FROM employee WHERE emp_name REGEXP '^ale';
    
    SELECT * FROM employee WHERE emp_name REGEXP 'on$';
    
    SELECT * FROM employee WHERE emp_name REGEXP 'm{2}';
    
    
    小结:对字符串匹配的方式
    WHERE emp_name = 'egon';
    WHERE emp_name LIKE 'yua%';
    WHERE emp_name REGEXP 'on$';
  • 相关阅读:
    for循环原来是这样
    C#中属性的作用
    腾讯、百度、阿里、微软面试题精选(不断更新)
    不容易:社会保险法历时3年终获通过 事关亿万百姓利益
    Oracle操作大对象BLOB示例
    Oracle操作大对象CLOB
    设计模式的分类和每种类型的作用
    LinkedList、ArrayList和Vector集合类型的区别和联系?
    hashmap,hashtable,TreeMap, WeakHashMap的区别和联系?
    hdu 2551
  • 原文地址:https://www.cnblogs.com/ellisonzhang/p/10489797.html
Copyright © 2011-2022 走看看