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

    单表查询

    简单查询

    查询所有字段

    SELECT * FROM 表名 ;
    

    查询指定字段

    SELECT 字段名1,字段名2,... FROM 表名 ;
    

    按条件查询

    带关系运算符的查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 关系表达式 ;
    

    "等于 =" "不等于 !=或<>“ ”小于 <“ ”大于 >“ ”小于等于 <=” ”大于等于 >=“
    带IN关键字的查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名 
    WHERE 字段名 [NOT] IN (元素1,元素2,...) ;
    

    NOT是可选参数,表示查询不在IN关键字指定集合范围中的记录。
    例如查询student表中id值为1,2,3的记录:select * from student where id in(1,2,3);
    带BETWEEN AND关键字的查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 字段名 [NOT] BETWEEN 值1 AND 值2 ;
    

    NOT是可选参数,表示查询不在在指定范围中的记录。
    例如查询student表中id范围为【2,5】的name:select name from student where between 2 and 5;
    空值查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 字段名 IS [NOT] NULL ;
    

    NOT是可选参数,表示查询不是空值的记录。
    例如查询student表中grade为空的学生姓名:select name from student where grade is NULL;
    带DISTINCT关键字的查询(用于过滤重复记录)

    SELECT DISTINCT 字段名 FROM 表名 ;
    

    当DISTINCT后字段名有多个时,只有多个字段的值一起重复才被认为是重复记录。
    带LIKE关键字的查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 字段名 [NOT] LIKE '匹配字符串' ;
    

    NOT是可选参数,使用NOT表示查询与指定字符串不匹配的记录。
    其中‘匹配字符串’指的是包含百分号(%)或者下划线( _ )的通配字符串:
    百分号(%)通配符,匹配任意长度的字符串,包括空字符串。例如"c%"指的是以c开头的字符串,"%c"指的是以c结尾的字符串,"%c%"指的是包含c的字符串(包含开头和结尾)。select id,name from student where name like '%c%' ;
    下划线( _ )通配符,一个下划线代表一个字符,例如"c_t"表示开头为c结尾为t长度为3的字符串;而且要注意空格,带有空格的“M_ _QL”只能匹配到MY SQL,不能匹配到MYSQL。
    特殊的:如果要匹配字符串中的%或_需要用转译字符“”,例如“%\%%”表示包含%的字符串。
    带AND关键字的多条件查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 表达式1 AND 表达式2 [... AND 表达式n]
    

    例如查询student表中id为1和2、name以c开头并且grade>50的记录:select * from student where id in(1,2) and name like 'c%' and grade>50;
    带OR关键字的多条件查询

    SELECT *|(字段名1,字段名2,... )
    FROM 表名
    WHERE 表达式1 OR 表达式2 [... OR 表达式n]
    

    满足其中一个表达式即可,例如查询student表中id<3或者sex为女的学生姓名:select name from student where id<1 or sex='女';
    拓展:OR和AND关键字一起使用时,AND的优先级高于OR,一起使用时,先运算AND两边的条件表达式,再算OR条件两边的条件表达式。

    高级查询

    聚合函数

    函数名称 作用
    COUNT( ) 返回某列的行数
    SUM( ) 返回某列的和
    AVG( ) 返回某列的平均值
    MAX( ) 返回某列的最大值
    MIN( ) 返回某列的最小值
    • COUNT( )函数:统计记录条数
    SELECT COUNT( * ) FROM 表名 ;
    
    • SUM( )函数:某个字段求和
    SELECT SUM(字段名) FROM 表名 ;
    
    • AVG( )函数:某个字段求平均值
    SELECT AVG(字段名) FROM 表名 ;
    
    • MAX( )函数:某个字段求最大值
    SELECT MAX(字段名) FROM 表名 ;
    
    • MIN( )函数:某个字段求最小值
    SELECT MIN(字段名) FROM 表名 ;
    

    对查询结果排序

    SELECT *|字段名1,字段名2,...
    FROM 表名
    ORDER BY 字段名1 [ASC|DESC],字段名2 [ASC|DESC]... ;
    

    ASC升序,DESC降序,rand()为随机排序,默认为升序。
    例如查出student表所有记录并按照grade排序:select * from student order by grade;
    当指定按照多个字段进行排序时,先对第一个字段排序,如果遇到字段值相同的再把这些按照下一个进行排序。

    分组查询

    使用GROUP BY按某个字段或者多个字段中的值进行分组,字段中值相同的为一组。

    SELECT *|字段名1,字段名2,...
    FROM 表名
    GROUP BY 字段名1,字段名2,...[HAVING 条件表达式] ;
    

    单独使用GROUP BY分组:
    查询的是每个分组中的一条记录。
    GROUP BY和聚合函数一起使用:
    例如查询student表的count( * )和sex,按照sex进行分组查询,再计算每个分组中各有多少学生select count(*),sex from student group by sex;结果为(其中1、5、3表示对应性别的个数)

    +----------+------+
    | count(*) | sex  |
    +----------+------+
    |        1 | NULL |
    |        5 | 女   |
    |        3 | 男   |
    +----------+------+
    3 rows in set (0.00 sec)
    

    GROUP BY和HAVING关键字一起使用
    HAVING关键字和WHERE关键字作用相同,都用于设置条件表达式,对查询结果进行过滤,两者区别:HAVING关键字之后可以跟聚合函数,而WHERE关键字不能。
    例如将student表按照sex字段进行分组查询,查出grade字段值之和大于200的分组:select sum(grade),sex from student group by sex having sum(grade)>200;
    使用LIMIT限制查询结果的数量
    该关键字可以指定查询结果从哪一条记录开始以及查询多少条信息。

    SELECT 字段名1,字段名2,...
    FROM 表名
    LIMIT [OFFSET,] 记录数 ;
    

    OFFSET为可选参数,表示偏移量,如果偏移量为0则从查询结果的第一条记录开始,偏移量为1从里二条开始,以此类推。不指定时默认值为0。‘记录数’表示返回查询记录的条数。
    例如查询student表中第2条到第5条的记录:select * from student limit 1,4;

  • 相关阅读:
    【T-SQL】分布抽取部分数据
    【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中
    【手记】F5调试报"由于缺少调试目标xxx无法开始调试xxx设置OutputPath和AssemblyName"
    【手记】未能从程序集System.Net.Http.Formatting中加载类型System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter
    摄影基础知识入门
    测试开发进阶必备(附源码)---Dubbo 接口测试技术
    App自动化之dom结构和元素定位方式的详细内容(不看后悔)
    接口自动化测试 | JsonPath 与 Mustache 请求传参的模板化技术
    一文搞定自动化测试框架 RESTAssured 实践(三):对 Response 结果导出
    一文搞定 REST Assured 实践(二):断言实现
  • 原文地址:https://www.cnblogs.com/xiaochen2715/p/13174688.html
Copyright © 2011-2022 走看看