MySQL(数据分组-GROUP BY、HAVING子句、联合查询、查询结果限定、通配符)

 

目录

分组:

GROUP BY子句的真正作用:

分组函数:

分组函数重要规则:

HAVING子句

HAVING与WHERE的区别

MySQL 多行数据合并 GROUP_CONCAT

联合查询

查询结果限定

MySQL中的通配符:


分组:

把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录。

GROUP BY子句的真正作用:

在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。

分组函数:

    分组函数忽略空值。
    结果集隐式按升序排列,如果需要改变排序方式可以使用Order by 子句。

分组函数重要规则:

    如果使用了分组函数,或者使用GROUP BY 的查询:出现在SELECT列表中的字段,要么出现在组合函数里,要么出现在GROUP BY 子句中。

    GROUP BY 子句的字段可以不出现在SELECT列表当中。

    使用集合函数可以不使用GROUP BY子句,此时所有的查询结果作为一组。

HAVING子句

        ——数据分组--限定组的结果

        HAVING子句用来对分组后的结果再进行条件过滤。

HAVING与WHERE的区别

        WHERE是在分组前进行条件过滤

        HAVING子句是在分组后进行条件过滤

        WHERE子句中不能使用聚合函数

        HAVING子句可以使用聚合函数。


    分组函数的错误用法:
        不能在WHERE 子句中限制组.
        限制组必须使用HAVING 子句.
        不能在WHERE 子句中使用组函数


MySQL 多行数据合并 GROUP_CONCAT

语法: GROUP_CONCAT(expr)

    示例:fruits表按s_id,将供应水果名称合并为一行数据
    mysql> select s_id, group_concat(f_name)
     -> from fruits
     -> group by s_id;

使用 GROUP_CONCAT()函数必须对源数据进行分组,否则所有数据会被合并成一行

联合查询

-- 中国或美国城市信息

SELECT * FROM city
WHERE countrycode IN ('CHN' ,'USA');
SELECT * FROM city WHERE countrycode='CHN'
UNION ALL
SELECT * FROM city WHERE countrycode='USA'

说明:一般情况下,我们会将 IN 或者 OR 语句 改写成 UNION ALL,来提高性能
UNION   去重复
UNION ALL 不去重复

查询结果限定

SELECT语句最后可以用LIMLT限定查询结果返回的起始记录和总数量(MySQL特有)
语法格式:

SELECT … LIMIT offset_start,row_count;

offset_start:第一个返回记录行的偏移量。默认为0.
row_count:要返回记录行的最大数目。



例子:
SELECT * FROM TB_EMP LIMIT 5;/*检索前5个记录*/
SELECT * FROM TB_EMP LIMIT 5,10;/*检索记录行6-15*/


MySQL中的通配符:

MySQL中的常用统配符有三个:

   %:用来表示任意多个字符,包含0个字符

   _ : 用来表示任意单个字符

   escape:用来转义特定字符

你可能感兴趣的:(DateBase,mysql,数据库,windows,SELECT)