一、
带 OR 关键字的多条件查询
与AND
相反,在WHERE
声明中使用OR
关键字表示只需满足两个条件中的其中一个条件即可返回结果。
语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 OR 表达式2; |
distinct 的作用
在 mysql 中,distinct 关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,distinct 只可以在 select 中使用
语法规则为: SELECT DISTINCT 字段名 FROM 表名 WHERE 表达式; |
连接查询(多表查询)
又称多表查询,当查询的字段涉及多个表的时候,就要用到连接查询。
内连接
查询 A、B 交集部分数据
隐式内连接:
语法规则为: SELECT 字段列表 FROM 表1,表2 WHERE 表达式; |
显式内连接:
语法规则为: SELECT 字段列表 FROM 表1 【INNER】 JOIN 表2 ON 表达式; |
左右外连接
左外连接:
语法规则为: SELECT 字段列表 FROM 表1 LEFT 【OUTER】 JOIN 表2 ON 表达式; |
右外连接:
语法规则为: SELECT 字段列表 FROM 表1 RIGHT 【OUTER】 JOIN 表2 ON 表达式; |
自连接
自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。
语法规则为: SELECT 字段列表 FROM 表1 AS 别名1 JOIN 表2 AS 别名2 ON 表达式; |
聚合函数
在 MySQL 中,COUNT 和 SUM 是聚合函数,可以用于统计某个字段的值的数量和总和。比如,可以使用以下语句统计一个表中某个字段的值数量:
语法规则为: SELECT COUNT(字段列表) FROM 表名 |
也可以使用以下语句统计某个字段的总和:
语法规则为: SELECT SUM(字段列表) FROM 表名 |
使用 COUNT 和 SUM 函数可以方便地进行数据统计。
AVG()用于计算一组值或表达式的平均值
语法规则为: SELECT AVG(列名) FROM 表名 |
MAX()函数用于返回表达式值集中的最大值
语法规则为: SELECT MAX(列名) FROM 表名 |
MIN()函数用于返回表达式值集中的最小值
语法规则为: SELECT MIN(列名) FROM 表名 |
Group By 的用法
Group By 是一种 SQL 查询语句,常用于根据一个或多个列对查询结果进行分组。在 Group By 子句中指定的列将成为分组依据,而在 Select 子句中指定的列必须是聚合函数(例如 SUM、AVG、COUNT 等)或分组列。
语法规则为: SELECT 字段列表 SUM(字段名) FROM 表名 WHERE 表达式 GROUP BY 字段名; |
SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s);
exists 和 not exists
MySQL 中的 exists 和 not exists 是用于判断子查询中是否存在数据的关键字。
exists 表示子查询中存在数据时返回 true,否则返回 false。
not exists 表示子查询中不存在数据时返回 true,否则返回 false。
SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE table1.id = table2.id);
上述语句表示如果 table2中存在与 table1中 id 相同的数据,则返回 table1中所有数据。
SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.id = table2.id);
上述语句表示如果 table2中不存在与 table1中 id 相同的数据,则返回 table1中所有数据。
HAVING
HAVING 的作用
HAVING 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。
WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。
HAVING 语法 在 SELECT 查询中,HAVING 子句必须紧随 GROUP BY 子句,并出现在 ORDER BY 子句(如果有的话)之前。带有 HAVING 子句的 SELECT 语句的语法如下所示:
语法规则为: SELECT 字段列表 SUM(字段名) FROM 表名 WHERE 表达式 GROUP BY 字段名; SELECT 字段列表 FROM 表名1,表名2 WHERE [表达式] GROUP BY 字段列表 HAVING [表达式] ORDER BY 字段列表 |