mysql常用语法

1. group by

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

比如:

MariaDB [test]> select * from class;
+----+------+-------+
| id | name | score |
+----+------+-------+
|  1 | a    |    80 |
|  2 | a    |    70 |
|  3 | a    |    85 |
|  4 | b    |    85 |
|  5 | b    |    80 |
|  6 | b    |    90 |
|  7 | c    |    90 |
|  8 | c    |    90 |
|  9 | c    |   100 |
| 10 | d    |    60 |
| 11 | d    |    70 |
| 12 | e    |    90 |
+----+------+-------+
12 rows in set (0.000 sec)

MariaDB [test]> select name from class group by name;
+------+
| name |
+------+
| a    |
| b    |
| c    |
| d    |
| e    |
+------+
5 rows in set (0.000 sec)
# 找出平均分大于80的人
MariaDB [test]> select name, avg(score) from class group by name having avg(score) > 80;
+------+------------+
| name | avg(score) |
+------+------------+
| b    |    85.0000 |
| c    |    93.3333 |
| e    |    90.0000 |
+------+------------+

2. having

having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

3. left join和right join和inner join

left join(左连接): 会从左表 (table1) 那里返回所有的行,即使在右表 (table2) 中没有匹配的行。

right join(右连接): 会从右表 (table2) 那里返回所有的行,即使在左表 (table1) 中没有匹配的行。

inner join(内连接): 会返回两个表字段匹配的行。

4. case when

根据条件执行不同的操作。

4. with as

用于创建临时表,方面后面临时用

Last updated

Was this helpful?