整理常用的MySQL查询命令

    技术2022-07-12  88

    单表查询

    主要是针对一张表的数据查询操作,以下是单表查询中的各种查询方式的总结:

    查询所有字段

    SELECT * FROM 表名;

    查询指定字段

    SELECT 列名1,列名2,...,列名n FROM 表名;

    查询指定记录

    通过WHERE子句来对数据进行过滤,以获得过滤后的数据

    SELECT 列名1,列名2,...,列名n FROM 表名 WHERE 查询条件

    IN关键字

    IN关键字用于查询满足指定范围内的条件的记录,在使用时,将检索条件用括号括起来,多个检索条件之间用逗号分隔,当满足其中一个条件即可以匹配到。

    SELECT * FROM 表名 WHERE 列名 IN (n1,n2,n3,...); //条件范围内 SELECT * FROM 表名 WHERE 列名 NOT IN (n1,n2,n3,...); //条件范围外

    BETWEEN AND范围查询

    用于查询某个范围内的值,满足字段值指定的范围查询条件,即被返回。

    SELECT * FROM 表名 WHERE 列名 BETWEEN min AND max; //条件范围内 SELECT * FROM 表名 WHERE 列名 NOT BETWEEN min AND max; //条件范围外

    BETWEEN AND 和 IN 之间的区别:

    IN将括号内的数值当作数组处理,只要满足属性值等于括号内的数值之一,才会匹配到;BETWEEN AND指属性值在min和max之间,包括min和max

    LIKE模糊查询

    ’%’:匹配任意长度的字符,包括零字符

    ‘_’:匹配任意一个字符,需要匹配多个则是使用多个’_’

    SELECT * FROM 表名 WHERE 列名 LIKE '%xx'; //匹配以xx结尾的数据 SELECT * FROM 表名 WHERE 列名 LIKE '%xx%'; //匹配包含有xx的数据 SELECT * FROM 表名 WHERE 列名 LIKE 'xx%'; //匹配以xx开头的数据 SELECT * FROM 表名 WHERE 列名 LIKE '_xx'; //匹配xx结尾,且前面有一个字符的数据 SELECT * FROM 表名 WHERE 列名 LIKE '____xx'; //匹配xx结尾,且前面有四个字符的数据

    空值查询

    通过IS NULL子句,查询某字段内容为空的记录。

    SELECT * FROM 表名 WHERE 字段名 IS NULL; //查询字段值为null的记录 SELECT * FROM 表名 WHERE 字段名 IS NOT NULL; //查询字段值不为null的记录

    AND

    SELECT * FROM 表名 WHERE 条件1 AND 条件2 AND ... AND 条件n;

    OR

    SELECT * FROM 表名 WHERE 条件1 OR 条件2 OR ... OR 条件n;

    去重

    SELECT DISTINCT 列名 FROM 表名;

    排序

    DESC排序方式只应用到直接位于其前面的字段上。

    SELECT * FROM 表名 ORDER BY 字段1,字段2,...,字段n; //默认升序 ASC可以不写 SELECT * FROM 表名 ORDER BY 字段1,字段2,...,字段n DESC; //降序

    分组

    将数据按照某个或多个字段进行分组,使用GROUP BY关键字

    SELECT * FROM 表名 [GROUP BY 字段名][HAVING <条件表达式>]; //HAVING用于过滤分组

    HAVING 和 WHERE 的区别:

    + 都用于过滤数据 + HAVING在分组之后进行过滤 + WHERE在分组之前用来选择记录,且排除的记录不包括在分组中

    LIMIT限制查询

    SELECT * FROM 表名 LIMIT [位置偏移量],行数; //偏移量默认从0开始

    聚合函数查询

    COUNT()

    返回某列的行数

    SELECT COUNT(*) FROM 表名; //计算表中的总行数,无论有数值还是为空值 SELECT COUNT(字段名) FROM 表名; //计算指定列名下总行数,忽略为空值的行

    SUM()

    返回某个值的和,忽略值为NULL的行

    SELECT SUM(字段名) FROM 表名;

    AVG()

    返回某列的平均值,如果要得到多个列的平均值,则需每一列都使用AVG()函数

    SELECT AVG(字段名1),AVG(字段名2),...,AVG(字段名N) FROM 表名;

    MAX()

    返回某列的最大值

    SELECT MAX(字段名) FROM 表名;

    MIN()

    返回某列的最小值

    SELECT MIN(字段名) FROM 表名;

    连接查询

    内连接

    把表当作是一个集合,内连接使用关键字 INNER JOIN ON来进行查询,返回的结果就是表的交集。

    SELECT * FROM A INNER JOIN B ON A.字段名 = B.字段名;

    外连接

    左外连接

    使用关键字 LEFT JOIN ON(或者 LEFT OUTER JOIN ON),返回的结果是A表的结果和AB的交集。

    SELECT * FROM A LEFT JOIN ON A.字段名 = B.字段名;
    右外连接

    使用关键字 RIGHT JOIN ON(或者 RIGHT OUTER JOIN ON),返回的结果是 AB的交集和B表的结果。

    SELECT * FROM A RIGHT JOIN B ON A.字段名 = B.字段名;

    参考资料

    Mysql—— 内连接、左连接、右连接以及全连接查询

    《MySQL5.7从入门到精通》

    Processed: 0.017, SQL: 9