单表查询

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

查询所有字段
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来进行查询,返回的结果就是表的交集。

mysql怎么搜索表中所有数据 mysql 搜索命令_字段名

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

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

mysql怎么搜索表中所有数据 mysql 搜索命令_mysql_02

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

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

mysql怎么搜索表中所有数据 mysql 搜索命令_表名_03

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

参考资料

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

《MySQL5.7从入门到精通》