MySQL简单快速入门 (三)高级查询——JEPLUS软件快速开发平台

            QQ图片20180606145324.gif

03.SQL高级查询_分组:

    1).需求:一条查询,查询出每种商品的最高价格

    2).分组的命令:group by 分组字段

    3).实现上例:

        select category_id,max(price)  from product group by category_id;

      查询顺序:先分组,再聚合

    4).注意事项:

        分组查询的结果最多只能包含:分组列,聚合结果,不能包含其他字段。

    5).练习1:

        需求:查询每个生产日期的商品的数量是多少?

            select  proDate,count(*)  from product group by proDate;

    6).练习2:

        有如下学员信息表:

            编号    姓名    性别    年龄    科目

            1    张三    男    22    JavaEE

            2    李四    女    18    UI

            3    王五    男    23    JavaEE

            4    周六    女    21    JavaEE

            5    赵四    女    17    IOS

        需求1:每科目学员的最大年龄是多少?

            select 科目,max(年龄) from 学员信息表 group by 科目

        需求2: 每科目的总人数是多少?

            select 科目,count(*)  from 学员信息表 group by 科目

        需求3: 一个查询显示出每科目的男同学和女同学分别有多少人?

            1).先想出查询结果是什么样的:

                科目    性别    人数

                JavaEE    男    2

                JavaEE    女    1

                UI    男    0

                UI    女    1

                IOS    男    0

                IOS    女    1

            2).对多列进行分组:

                select 科目,性别,count(*) from 学员信息表 group by 科目, 性别;//先按第一列分组,然后再按第二列进行分组

    7).目前学习过的语句的编写顺序:

        select 筛选字段    from 表名 where 条件    group by 分组字段  order by 排序字段;

      执行顺序:

        1).from

        2).where

        3).group by

        4).如果有聚合函数,计算聚合的结果

        5).select

        6).order by

04.SQL高级查询_having子句:

    1).需求:查询每种商品的最高价格,要求结果只显示最大价格大于5000元的结果,你可能会想这样写:

        SELECT category_id,MAX(price) FROM product where max(price) > 5000  GROUP BY category_id  ORDER BY MAX(price);

        上述语句错误,因为where先执行,max()后执行,当where执行时,max()还没有结果,所以此语句错误。

    2).由于where不能对聚合后的结果进行筛选,要对聚合后的结果进行筛选要使用:having语句

        select category_id , max(price) from product group by category_id having max(price) > 5000 order by max(price);

05.SQL高级查询_分页查询:

    1).分页查询语句:

        select ... from ... limit m,n;

        说明:

        1).m : 表示从第几条记录开始取--记录的索引值(第一条记录的索引是0)。计算方式:(当前页- 1) * 每页显示条数

        2).n : 表示取几条记录;

    2).例如:查询product表,每页4条

        #第一页数据:

            select * from product limit 0,4;

            select * from product limit (1 - 1) * 4 , 4

        #第二页数据:

            SELECT * FROM product LIMIT 4,4;

            select * from product limit (2 - 1) * 4 , 4

        #第三页数据:

            SELECT * FROM product LIMIT 8,4;

            select * from product limit (3 - 1) * 4 , 4

        #第四页数据:

            SELECT * FROM product LIMIT 12,4;

            select * from product limit (4 - 1) * 4 , 4

    3).注意:

        1).m和n的值如果是负数、浮点数就会抛异常。

        2).其它情况如果超出范围,不抛异常,只是无结果而已;

06.SQL的备份与恢复:

    1).备份数据库的作用:

        1).备份数据,防止数据库软件发生异常,导致数据丢失。


查看原文及阅读更多

猜你喜欢

转载自blog.51cto.com/13797782/2134979