MySql操作[数据查询-范围-空值-分组]-20211224

SELECT

范围查询 BETWEEN AND

BETWEEN AND 关键字,用来判断字段的数值是否在指定范围内。

  1. 语法:
    • [NOT] BETWEEN value1 AND value2
      • NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
      • value1:表示范围的起始值。
      • value2:表示范围的终止值。
mysql> SELECT name,price FROM car_list
    -> WHERE price BETWEEN 20 AND 23;

mysql> SELECT name,price FROM car_list
    -> WHERE price NOT BETWEEN 20 AND 23;

mysql> SELECT name,produce_date FROM car_list
    -> WHERE produce_date BETWEEN '2021-10-01' AND '2021-12-31';

空值查询 NULL

IS NULL 关键字 可以判断所选的字段值是否为空值[NULL] 空值不是0 ,也不是空字符串

  1. 语法:
    • IS [NOT] NULL
mysql> SELECT name,price FROM car_list 
    -> WHERE name IS NULL;
    #选出 name 字段值为NULL的记录

mysql> SELECT name,price FROM car_list 
    -> WHERE name IS NOT NULL;
    #选出 name 字段值 不为NULL的记录

IS NULL 关键字 作为一个整体出现 IS 不能 替换成'='/'===' 等字符 将不会有任何结果返回 出现 Emptyset 类似提示。

分组查询 GROUP BY

GROUP BY 关键字 可以根据一个或多个字段对查询结果进行分组。

  1. 语法:
    • GROUP BY <字段名>
      • 字段名 如果有多个时 逗号隔开 字段1,字段2

2.使用:

单独使用

查询结果只显示 分组的第一条记录

上代码

mysql> SSELECT name,price FROM car_list 
    -> GROUP BY price;

+-----------+-------+
| name      | price |
+-----------+-------+
| magontan  |  30   |
| sigartar  |  20   |
+-----------+-------+

GROUP BY 与 GROUP_CONCAT()

GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。
GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。

mysql> SELECT `sex`, GROUP_CONCAT(name) FROM tb_students_info 
    -> GROUP BY sex;
+------+----------------------------+
| sex  | GROUP_CONCAT(name)         |
+------+----------------------------+
| 女   | Henry,Jim,John,Thomas,Tom  |
| 男   | Dany,Green,Jane,Lily,Susan |
+------+----------------------------+

多个字段分组查询时,会先按照第一个字段进行分组。如果第一个字段中有相同的值,MySQL 才会按照第二个字段进行分组。如果第一个字段中的数据都是唯一的,那么 MySQL 将不再对第二个字段进行分组。

GROUP BY 与聚合函数

简要记录一下聚合函数有那些:

  1. COUNT() 统计记录条数
  2. SUM() 用来计算字段值总和
  3. AVG() 用来计算字段值平均值
  4. MAX() 用来查询字段最大值
  5. MIN() 用来查询字段最小值
    更多聚合函数参考 http://c.biancheng.net/mysql/function/
mysql> SELECT sex,COUNT(sex) FROM tb_students_info 
    -> GROUP BY sex;
+------+------------+
| sex  | COUNT(sex) |
+------+------------+
| 女   |          5 |
| 男   |          5 |
+------+------------+

GROUP BY 与 WITH ROLLUP

WITH POLLUP 关键字用来在所有记录的最后加上一条记录,这条记录是上面所有记录的总和,即统计记录数量。

    mysql> SELECT sex,GROUP_CONCAT(name) FROM tb_students_info 
        ->GROUP BY sex WITH ROLLUP;
    +------+------------------------------------------------------+
    | sex  | GROUP_CONCAT(name)                                   |
    +------+------------------------------------------------------+
    | 女   | Henry,Jim,John,Thomas,Tom                            |
    | 男   | Dany,Green,Jane,Lily,Susan                           |
    | NULL | Henry,Jim,John,Thomas,Tom,Dany,Green,Jane,Lily,Susan |
    +------+------------------------------------------------------+

GROUP_CONCAT(name) 显示了每个分组的 name 字段值。同时,最后一条记录的 GROUP_CONCAT(name) 字段的值刚好是上面分组 name 字段值的总和。

你可能感兴趣的:(MySql操作[数据查询-范围-空值-分组]-20211224)