Mysql 查询数据
1. 基本查询语句
SELECT 属性列表 FROM 表名和视图列表 WHERE 条件表达式1 GROUP BY 属性名1 [HAVING 条件表达式2] ORDER BY 属性名2 [ASC | DESC];
GROUP BY表示按照属性名1指定的字段进行分组。如果后面包括HAVING关键字,则表示只有满足条件表达式2的才能输出。
2. 单表查询
1)查询所有字段
SELECT * FROM 表名;
2)查询指定字段
SELECT 属性名 FROM 表名;
3)查询指定记录
SELECT 属性名 FROM 表名 WHERE 条件表达式;
4)IN关键字查询
SELECT 属性名 FROM 表名 WHERE 属性名 [NOT] IN (元素1, 元素2, ...);
5)BETWEEN ADN查询
SELECT 属性名 FROM 表名 WHERE 属性名 [NOT] BETWEEN 取值1 AND 取值2;
6)LIKE关键字查询
SELECT 属性名 FROM 表名 WHERE 属性名 [NOT] LIKE '字符串';
7)查询空值
SELECT 属性名 FROM 表名 WHERE 属性名 IS [NOT] NULL;
8)AND多条件查询
SELECT 属性名 FROM 表名 WHERE 条件表达式1 AND 条件表达式2 AND ...;
9)OR多条件查询
SELECT 属性名 FROM 表名 WHERE 条件表达式1 OR 条件表达式2 OR ...;
10)查询结果不重复
SELECT DISTINCT 属性名 FROM 表名 WHERE 条件表达式;
11)对查询结果排序
SELECT 属性名1 FROM 表名 ORDER BY 属性名2 [ASC | DESC];
12)分组查询
SELECT 属性名1 FROM 表名 GROUP BY 属性名2 HAVING 条件表达式 WITH ROLLUP;
HAVING条件表达式用来限制条件,WITH ROLLUP表示加上一条表示所有记录总和的记录。
13)LIMIT限制查询结果的数量
SELECT * FROM 表名 LIMIT 记录数; SELECT * FROM 表名 LIMIT 初始位置, 记录数;
注意:第一条记录位置是0。
3. 使用集合函数查询
集合函数包括COUNT()、SUM()、AVG()、MAX()、MIN()。COUNT()统计记录的条数,SUM()计算字段值的总和。
4. 连接查询
1)内连接查询
只查询两表相匹配的记录。
SELECT 属性名列表 FROM 表名1, 表名2 WHERE 表名1.属性名1 = 表名2.属性名2;
SELECT 属性名列表 FROM 表名1 INNER JOIN 表名2 ON 表名1.属性名1 = 表名2.属性名2;
2)外连接查询
SELECT 属性名列表 FROM 表名1 LEFT | RIGHT JOIN 表名2 ON 表名1.属性名1 = 表名2.属性名2;
左连接查询:查询表名1中所有记录和表名2中匹配的记录。
右连接查询:查询表名2中所有记录和表名1中匹配的记录。
5. 子查询
1)IN关键字
SELECT * FROM 表名1 WHERE 属性名1 IN (SELECT查询子句);
2)比较运算符
子查询可以使用的比较运算符包括:=、!=、>、>=、<、<=、<>,其中!=和<>等价。
SELECT * FROM 表名1 WHERE 属性名1 比较运算符 (SELECT查询子句);
3)EXISTS关键字
SELECT * FROM 表名1 WHERE 属性名1 [NOT] EXISTS (SELECT查询子句);
4)ANY关键字
ANY表示满足其中任一条件即可。即只要满足内层查询语句返回结果中的任何一个,就可以通过该条件来执行外层查询语句。
5)ALL关键字
ALL表示满足所有条件。
6. 合并查询结果
SELECT 语句1 UNION | UNION ALL SELECT 语句2 UNION | UNION ALL ...
UNION:将所有查询结果合并在一起,然后去除相同的记录;
UNION ALL:简单合并。
7. 为表和字段取别名
1)为表取别名
表名 表的别名
2)为字段去别名
属性名 [AS] 别名
8. 使用正则表达式
属性名 REGEXP '匹配方式'