MySqlのSQL文学習ノート(五)

8829 ワード

1、AVG関数2、COUNT()3、FIRST()関数4、LAST()関数5、MAX()関数6、MIN()関数7、SUM()関数8、GROUP BY文9、HAVING句10、UCASE()関数11、LCASE()関数12、MID()関数13、LEN()関数14、ROUND()関数15、NOW()関数16、FORMAT()関数
一、SQL中の関数タイプ
  • 1、データベース向けカラム
  • 2、データベース列の値です.

  • ps:demoが使用するデータベース情報
    mysql> select * from orders;
    +------+---------+-------------+------+------------+
    | Id_O | Company | OrderNumber | Id_p | OrderPrice |
    +------+---------+-------------+------+------------+
    |    1 | IBM     | 3532        | 1    |         34 |
    |    2 | Baidu   | 2356        | NULL |         62 |
    |    3 | Ali     | 6534        | 4    |         56 |
    |    4 | Apple   | 4698        | 2    |         78 |
    |    5 | Tencent | 6953        | 5    |         24 |
    |    6 | Xiaomi  | 7890        | 4    |         10 |
    |    7 | LeEco   | 2876        | 9    |         18 |
    |    8 | JD      | 3847        | 6    |         47 |
    |    9 | Apple   | 8762        | 2    |         90 |
    |   10 | Xiaomi  | 9328        | 4    |         52 |
    |   11 | Xiaomi  | 1098        | 4    |         27 |
    +------+---------+-------------+------+------------+
    11 rows in set (0.00 sec)
    

    二、データベース列向けの関数.
    1、AVG関数
    定義および使用AVG関数は、数値列の平均値を返します.NULL値は計算に含まれません.
  • 構文
  • SELECT AVG(column_name) FROM table_name
    
  • ケース
  • --           
    mysql> select avg(OrderPrice) from Orders;
    +-----------------+
    | avg(OrderPrice) |
    +-----------------+
    |         45.2727 |
    +-----------------+
    1 row in set (0.00 sec)
    
    --      ,       
    mysql> select Company,avg(OrderPrice) from Orders group by Company;
    +---------+-----------------+
    | Company | avg(OrderPrice) |
    +---------+-----------------+
    | Ali     |         56.0000 |
    | Apple   |         84.0000 |
    | Baidu   |         62.0000 |
    | IBM     |         34.0000 |
    | JD      |         47.0000 |
    | LeEco   |         18.0000 |
    | Tencent |         24.0000 |
    | Xiaomi  |         29.6667 |
    +---------+-----------------+
    8 rows in set (0.00 sec)
    
    mysql> 
    

    2、COUNT()
    COUNT()関数は、指定した条件に一致する行数を返します.
  • 構文
  • -- 1、COUNT(column_name)             (NULL    ):
    SELECT COUNT(column_name) FROM table_name
    
    -- 2、COUNT(*)           :
    SELECT COUNT(*) FROM table_name
    
    -- 3、COUNT(DISTINCT column_name)               :
    SELECT COUNT(DISTINCT column_name) FROM table_name
    

    注記:COUNT(DISTINCT)はORACLEおよびMicrosoft SQL Serverに適用されますが、Microsoft Accessには使用できません.
  • ケース:
  • mysql> select count(*) from orders;
    +----------+
    | count(*) |
    +----------+
    |       11 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> select count(Id_p) from orders;
    +-------------+
    | count(Id_p) |
    +-------------+
    |          10 |
    +-------------+
    1 row in set (0.00 sec)
    
    mysql> select count(distinct Company) from orders;
    +-------------------------+
    | count(distinct Company) |
    +-------------------------+
    |                       8 |
    +-------------------------+
    1 row in set (0.00 sec)
    
    mysql> 
    

    3、FIRST()関数
    FIRST()関数は、指定したフィールドの最初のレコードの値を返します.ヒント:ORDER BY文を使用してレコードをソートできます.
  • SQL FIRST()構文
  • SELECT FIRST(column_name) FROM table_name
    
  • 備考:MySqlはこの関数をサポートしていません.ソート関数とlimit関数を組み合わせて類似の機能を実現できます.

  • 4、LAST()関数
    LAST()関数は、指定したフィールドの最後のレコードの値を返します.ヒント:ORDER BY文を使用してレコードをソートできます.
  • SQL LAST()構文
  • SELECT LAST(column_name) FROM table_name
    
  • 備考:MySqlはこの関数をサポートしていません.ソート関数とlimit関数を組み合わせて類似の機能を実現できます.

  • 5、MAX()関数
    MAX関数は、カラムの最大値を返します.NULL値は計算に含まれません.
  • SQL MAX()構文
  • SELECT MAX(column_name) FROM table_name
    

    注記:MINとMAXは、アルファベット順に並べられた最高値または最低値を得るためにテキスト列にも使用できます.
  • ケース:最高のオファー
  • を得る
    mysql> select max(OrderPrice) from orders;
    +-----------------+
    | max(OrderPrice) |
    +-----------------+
    |              90 |
    +-----------------+
    1 row in set (0.00 sec)
    

    6、MIN()関数
    MIN関数は、カラムの最小値を返します.NULL値は計算に含まれません.
  • SQL MIN()構文:
  • SELECT MIN(column_name) FROM table_name
    

    注記:MINとMAXは、アルファベット順に並べられた最高値または最低値を得るためにテキスト列にも使用できます.
  • ケース:最低のオファー
  • を得る
    mysql> select min(OrderPrice) from orders;
    +-----------------+
    | min(OrderPrice) |
    +-----------------+
    |              10 |
    +-----------------+
    1 row in set (0.00 sec)
    

    7、SUM()関数
    SUM関数は、数値列の合計(合計)を返します.
  • SQL SUM()構文
  • SELECT SUM(column_name) FROM table_name
    
  • ケース:受注総額
  • を取得
    mysql> select sum(OrderPrice) from orders;
    +-----------------+
    | sum(OrderPrice) |
    +-----------------+
    |             498 |
    +-----------------+
    1 row in set (0.00 sec)
    

    8、GROUP BY文
    SUMなどの合計関数には、GROUP BY文を追加する必要があることが多い.
    GROUP BY文は、合計関数と組み合わせて、結果セットを1つ以上の列に基づいてグループ化するために使用されます.
  • SQL GROUP BY構文
  • SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    
  • ケース:受注から受注を取得した会社
  • mysql> select company from orders group by company;
    +---------+
    | company |
    +---------+
    | Ali     |
    | Apple   |
    | Baidu   |
    | IBM     |
    | JD      |
    | LeEco   |
    | Tencent |
    | Xiaomi  |
    +---------+
    8 rows in set (0.00 sec)
    

    9、HAVING句
    SQLにHAVING句を追加する理由は、WHEREキーワードが合計関数とともに使用できないためです.
  • SQL HAVING構文:
  • SELECT column_name, aggregate_function(column_name) 
    FROM table_name 
    WHERE column_name operator value 
    GROUP BY column_name 
    HAVING aggregate_function(column_name) operator value
    
  • ケース:1回以上注文を受けた会社:
  • mysql> select company from orders group by company having count(company)>1;
    +---------+
    | company |
    +---------+
    | Apple   |
    | Xiaomi  |
    +---------+
    2 rows in set (0.00 sec)
    

    三、データベース列向けの関数.
    1、UCASE()関数
    UCASE関数はフィールドの値を大文字に変換します.
  • SQL UCASE()構文:
  • SELECT UCASE(column_name) FROM table_name
    
  • ケース:発注会社の大文字
  • を入手
    mysql> select distinct ucase(company) from orders;
    +----------------+
    | ucase(company) |
    +----------------+
    | IBM            |
    | BAIDU          |
    | ALI            |
    | APPLE          |
    | TENCENT        |
    | XIAOMI         |
    | LEECO          |
    | JD             |
    +----------------+
    8 rows in set (0.00 sec)
    

    2、LCASE()関数
    LCASE関数はフィールドの値を小文字に変換します.
  • SQL LCASE()構文
  • SELECT LCASE(column_name) FROM table_name
    
  • ケース:発注会社の小文字
  • を入手
    mysql> select distinct lcase(company) from orders;
    +----------------+
    | lcase(company) |
    +----------------+
    | ibm            |
    | baidu          |
    | ali            |
    | apple          |
    | tencent        |
    | xiaomi         |
    | leeco          |
    | jd             |
    +----------------+
    8 rows in set (0.01 sec)
    

    3、MID()関数
    MID関数は、テキストフィールドから文字を抽出するために使用されます.
  • SQL MID()構文:
  • SELECT MID(column_name,start[,length]) FROM table_name
    

    パラメータ
    説明
    column_name
    必要です.文字を抽出するフィールド.
    start
    必要です.開始位置を指定します(開始値は1).
    length
    オプション.返される文字数.省略すると、MID()関数は残りのテキストを返します.
  • ケース:受注会社の略称(3文字)
  • mysql> SELECT MID(City,1,3) as SmallCity FROM Persons;
    +-----------+
    | SmallCity |
    +-----------+
    | Lon       |
    | New       |
    | Bei       |
    | Lon       |
    | Bei       |
    | NULL      |
    +-----------+
    6 rows in set (0.00 sec)
    

    4、LEN()関数
    LEN関数は、テキストフィールドの値の長さを返します.
  • SQL LEN()構文
  • SELECT LEN(column_name) FROM table_name
    

    備考:MySqlで、関数は:lengthです.
  • ケース:受注会社名の長さを取得します.
  • mysql> select length(Company) from orders;
    +-----------------+
    | length(Company) |
    +-----------------+
    |               3 |
    |               5 |
    |               3 |
    |               5 |
    |               7 |
    |               6 |
    |               5 |
    |               2 |
    |               5 |
    |               6 |
    |               6 |
    +-----------------+
    11 rows in set (0.00 sec)
    

    5、ROUND()関数
    ROUND関数は、数値フィールドを指定した小数点以下の桁数に丸めます.
  • SQL ROUND()構文
  • SELECT ROUND(column_name,decimals) FROM table_name
    

    パラメータ
    説明
    column_name
    必要です.端数処理するフィールド.
    decimals
    必要です.戻る小数点以下の桁数を指定します.
    6、NOW()関数
    NOW関数は、現在の日付と時刻を返します.ヒント:Sql Serverデータベースを使用している場合は、getdate()関数を使用して現在の日時を取得します.
  • SQL NOW()構文
  • SELECT NOW() FROM table_name
    
  • ケース:
  • mysql> select now() from orders limit 1;
    +---------------------+
    | now()               |
    +---------------------+
    | 2017-07-06 19:51:18 |
    +---------------------+
    1 row in set (0.00 sec)
    

    7、FORMAT()関数
    FORMAT関数は、フィールドの表示をフォーマットするために使用されます.
  • SQL FORMAT()構文:
  • SELECT FORMAT(column_name,format) FROM table_name
    

    パラメータ
    説明
    column_name
    必要です.書式設定するフィールド.
    format
    必要です.書式を定める.