MySQL簡單快速入門 (三)高級查詢——JEPLUS軟件快速開發平臺

03.SQL高級查詢_分組:html

    1).需求:一條查詢,查詢出每種商品的最高價格數據庫

    2).分組的命令:group by 分組字段函數

    3).實現上例:學習

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

      查詢順序:先分組,再聚合htm

    4).注意事項:blog

        分組查詢的結果最多隻能包含:分組列,聚合結果,不能包含其餘字段。排序

    5).練習1:索引

        需求:查詢每一個生產日期的商品的數量是多少?ci

            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).備份數據,防止數據庫軟件發生異常,致使數據丟失。

查看原文及閱讀更多

相關文章
相關標籤/搜索