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が使用するデータベース情報
二、データベース列向けの関数.
1、AVG関数
定義および使用AVG関数は、数値列の平均値を返します.NULL値は計算に含まれません.構文 ケース
2、COUNT()
COUNT()関数は、指定した条件に一致する行数を返します.構文
注記:COUNT(DISTINCT)はORACLEおよびMicrosoft SQL Serverに適用されますが、Microsoft Accessには使用できません.ケース:
3、FIRST()関数
FIRST()関数は、指定したフィールドの最初のレコードの値を返します.ヒント:ORDER BY文を使用してレコードをソートできます. SQL FIRST()構文 備考:MySqlはこの関数をサポートしていません.ソート関数とlimit関数を組み合わせて類似の機能を実現できます.
4、LAST()関数
LAST()関数は、指定したフィールドの最後のレコードの値を返します.ヒント:ORDER BY文を使用してレコードをソートできます. SQL LAST()構文 備考:MySqlはこの関数をサポートしていません.ソート関数とlimit関数を組み合わせて類似の機能を実現できます.
5、MAX()関数
MAX関数は、カラムの最大値を返します.NULL値は計算に含まれません. SQL MAX()構文
注記:MINとMAXは、アルファベット順に並べられた最高値または最低値を得るためにテキスト列にも使用できます.ケース:最高のオファー を得る
6、MIN()関数
MIN関数は、カラムの最小値を返します.NULL値は計算に含まれません. SQL MIN()構文:
注記:MINとMAXは、アルファベット順に並べられた最高値または最低値を得るためにテキスト列にも使用できます.ケース:最低のオファー を得る
7、SUM()関数
SUM関数は、数値列の合計(合計)を返します. SQL SUM()構文 ケース:受注総額 を取得
8、GROUP BY文
SUMなどの合計関数には、GROUP BY文を追加する必要があることが多い.
GROUP BY文は、合計関数と組み合わせて、結果セットを1つ以上の列に基づいてグループ化するために使用されます. SQL GROUP BY構文 ケース:受注から受注を取得した会社
9、HAVING句
SQLにHAVING句を追加する理由は、WHEREキーワードが合計関数とともに使用できないためです. SQL HAVING構文: ケース:1回以上注文を受けた会社:
三、データベース列向けの関数.
1、UCASE()関数
UCASE関数はフィールドの値を大文字に変換します. SQL UCASE()構文: ケース:発注会社の大文字 を入手
2、LCASE()関数
LCASE関数はフィールドの値を小文字に変換します. SQL LCASE()構文 ケース:発注会社の小文字 を入手
3、MID()関数
MID関数は、テキストフィールドから文字を抽出するために使用されます. SQL MID()構文:
パラメータ
説明
column_name
必要です.文字を抽出するフィールド.
start
必要です.開始位置を指定します(開始値は1).
length
オプション.返される文字数.省略すると、MID()関数は残りのテキストを返します.ケース:受注会社の略称(3文字)
4、LEN()関数
LEN関数は、テキストフィールドの値の長さを返します. SQL LEN()構文
備考:MySqlで、関数は:lengthです.ケース:受注会社名の長さを取得します.
5、ROUND()関数
ROUND関数は、数値フィールドを指定した小数点以下の桁数に丸めます. SQL ROUND()構文
パラメータ
説明
column_name
必要です.端数処理するフィールド.
decimals
必要です.戻る小数点以下の桁数を指定します.
6、NOW()関数
NOW関数は、現在の日付と時刻を返します.ヒント:Sql Serverデータベースを使用している場合は、getdate()関数を使用して現在の日時を取得します. SQL NOW()構文 ケース:
7、FORMAT()関数
FORMAT関数は、フィールドの表示をフォーマットするために使用されます. SQL FORMAT()構文:
パラメータ
説明
column_name
必要です.書式設定するフィールド.
format
必要です.書式を定める.
一、SQL中の関数タイプ
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文を使用してレコードをソートできます.
SELECT FIRST(column_name) FROM table_name
4、LAST()関数
LAST()関数は、指定したフィールドの最後のレコードの値を返します.ヒント:ORDER BY文を使用してレコードをソートできます.
SELECT LAST(column_name) FROM table_name
5、MAX()関数
MAX関数は、カラムの最大値を返します.NULL値は計算に含まれません.
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値は計算に含まれません.
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関数は、数値列の合計(合計)を返します.
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つ以上の列に基づいてグループ化するために使用されます.
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キーワードが合計関数とともに使用できないためです.
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
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関数はフィールドの値を大文字に変換します.
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関数はフィールドの値を小文字に変換します.
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関数は、テキストフィールドから文字を抽出するために使用されます.
SELECT MID(column_name,start[,length]) FROM table_name
パラメータ
説明
column_name
必要です.文字を抽出するフィールド.
start
必要です.開始位置を指定します(開始値は1).
length
オプション.返される文字数.省略すると、MID()関数は残りのテキストを返します.
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関数は、テキストフィールドの値の長さを返します.
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関数は、数値フィールドを指定した小数点以下の桁数に丸めます.
SELECT ROUND(column_name,decimals) FROM table_name
パラメータ
説明
column_name
必要です.端数処理するフィールド.
decimals
必要です.戻る小数点以下の桁数を指定します.
6、NOW()関数
NOW関数は、現在の日付と時刻を返します.ヒント:Sql Serverデータベースを使用している場合は、getdate()関数を使用して現在の日時を取得します.
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関数は、フィールドの表示をフォーマットするために使用されます.
SELECT FORMAT(column_name,format) FROM table_name
パラメータ
説明
column_name
必要です.書式設定するフィールド.
format
必要です.書式を定める.