`MySQL`の学習を進める中で、知識のストックができてきたので、アウトプットがてら**使用頻度が高そうな関数クエリ**について、まとめて行きたいと思います。
用語解説
テーブル名:nameList
id | name | age |
---|---|---|
1 | Abe | 42 |
2 | Ide | 31 |
3 | Hide | 24 |
4 | Ide | 39 |
テーブル
表の事。(上記なら nameList というテーブル名。)
レコード
表の行の事。(上記なら4つのレコードが存在する。)
カラム
表の列の事。(上記なら3つのカラムが存在する。)
数値の表示に関する関数
絶対値 - ABS()
SELECT ABS(-10);
SELECT ABS(10);
ABS()
は括弧の中の値の、絶対値を求める事ができます。
出力結果はこちら。
10
10
四捨五入 - ROUND()
SELECT ROUND(2.4);
SELECT ROUND(2.5);
ROUND()
は括弧の中の値を、四捨五入した結果を求めます。
出力結果はこちら。
2
3
小数点以下を切り上げ - CELL()
SELECT CEIL(2.4);
SELECT CEIL(2.5);
CEIL()
は括弧の中の小数点以下の値を、切り上げした結果を求めます。
出力結果はこちら。
3
3
小数点以下を切り下げ - FLOOR()
SELECT FLOOR(2.4);
SELECT FLOOR(2.5);
FLOOR()
は括弧の中の小数点以下の値を、切り下げした結果を求めます。
出力結果はこちら。
2
2
少数の桁数を指定 - TRUNCATE()
SELECT TRUNCATE(1.7589012, 4);
SELECT TRUNCATE(1.75, 4);
TRUNCATE()
は第一引数の小数点以下の表示桁数を、第二引数で指定する事ができます。
出力結果はこちら。
1.7589
1.7500
数値の計算を行う関数
使用するテーブル名:nameList
id | name | age |
---|---|---|
1 | Abe | 42 |
2 | Ide | 31 |
3 | Hide | 24 |
4 | Ide | 39 |
レコード数を取得 - COUNT()
SELECT COUNT(id) FROM nameList;
SELECT COUNT(id) FROM nameList WHERE name = "Ide";
COUNT()
はレコードの数を取得する事ができます。条件を指定すれば、その条件に当てはまるレコード数が取得できます。
利用例:注文数の集計、会員者数の集計 ...etc
上記の2行目なら、nameListテーブル
でnameカラムがIde
のレコード数を取得する事ができます。(引数はどのカラム名でも同じ結果。)
出力結果はこちら。
4
2
合計値を取得 - SUM()
SELECT SUM(age) FROM nameList;
SELECT SUM(age) FROM nameList WHERE name = "Ide";
SUM()
は合計値を取得する事ができます。また条件を指定すれば、その条件に当てはまるレコードで、合計値が取得できます。
利用例:注文した商品の合計金額を求める、月間の売り上げ金額を求める ...etc
上記の2行目なら、nameListテーブル
でnameカラムがIde
のレコードで、ageカラムの合計値
が取得できます。
出力結果はこちら。
136
70
平均値を取得 - AVG()
SELECT AVG(age) FROM nameList;
SELECT AVG(age) FROM nameList WHERE name = "Ide";
AVG()
は平均値を取得する事ができます。また条件を指定すれば、その条件に当てはまるレコードで、平均値が取得できます。
利用例:利用者の平均注文金額を求める、月別で平均売り上げを求める ...etc
上記の2行目なら、nameListテーブル
でnameカラムがIde
のレコードで、ageカラムの平均値
が取得できます。
出力結果はこちら。
34
35
Ideさんの平均年齢は35歳のようです。
最大値を取得 - MAX()
SELECT MAX(age) FROM nameList;
SELECT MAX(age) FROM nameList WHERE name = "Ide";
MAX()
は最大値を取得する事ができます。また条件を指定すれば、その条件に当てはまるレコードで、最大値が取得できます。
利用例:最も値段の高い商品を求める、最も売り上げた月の金額を求める ...etc
上記の2行目なら、nameListテーブル
でnameカラムがIde
のレコードで、ageカラムの最大値
が取得できます。
出力結果はこちら。
42
39
Ideさんの中で一番上の年齢は、39歳のようですね。
最小値を取得 - MIN()
SELECT MIN(age) FROM nameList;
SELECT MIN(age) FROM nameList WHERE name = "Ide";
MIN()
は選択された範囲内の最小値を取得する事ができます。また条件を指定すれば、その条件に当てはまるレコードで、最小値が取得できます。
利用例:最も値段の高い商品を求める、最も売り上げた月の金額を求める ...etc
上記の2行目なら、nameListテーブル
でnameカラムがIde
のレコードで、ageカラムの最小値
が取得できます。
出力結果はこちら。
24
31
Ideさんの中で一番下の年齢は、31歳のようです。
文字に関する関数
使用するテーブル名:nameList
id | name | age |
---|---|---|
1 | Abe | 42 |
2 | Ide | 31 |
3 | Hide | 24 |
4 | Ide | 39 |
文字列の連結 - CONCAT()
SELECT CONCAT("これは", "見本です。");
SELECT CONCAT(name, "は", age, "歳です。") FROM nameList;
CONCAT()
は文字列の連結した結果を取得する事ができます。また数値の連結や、数値と文字列の連結、カラムから取得した数値や文字列の連結にも使用できます。
使用例:利用者の名前と注文した商品名を任意の文字列で連結して出力 ...etc
上記の2行目なら、nameListテーブル
から取得したnameカラムの値
とageカラムの値
を、文字列として取得する事ができます。
出力結果はこちら。
これは見本です。
Abeは32歳です。
Ideは31歳です。
Hideは24歳です。
Ideは39歳です。
文字列の小文字化 - LOWER()
SELECT LOWER("ABC abc");
SELECT LOWER(name) FROM nameList;
LOWER()
は括弧内の文字列を小文字化した結果を取得する事ができます。
使用例:入力された値を小文字化してデータベースに保存(INSERT)、データベースに保存されている値を小文字化して取得(SELECT) ...etc
上記の2行目なら、nameListテーブル
のnameカラム
を小文字化して取得する事ができます。
出力結果はこちら。
abc abc
abe
ide
hide
ide
文字列の大文字化 - UPPER()
SELECT UPPER("ABC abc");
SELECT UPPER(name) FROM nameList;
UPPER()
は括弧内の文字列を大文字化した結果を取得する事ができます。
使用例:入力された値を大文字化してデータベースに保存(INSERT)、データベースに保存されている値を大文字化して取得(SELECT) ...etc
上記の2行目なら、nameListテーブル
のnameカラム
を大文字化して取得する事ができます。
出力結果はこちら。
ABC ABC
ABE
IDE
HIDE
IDE
文字列の文字数 - CHAR_LENGTH()
SELECT CHAR_LENGTH("abcd");
SELECT CHAR_LENGTH("日本語");
SELECT CHAR_LENGTH(name) FROM nameList;
CHAR_LENGTH()
は括弧内の文字列の文字数を計算した結果を取得する事ができます。(日本語も使用可能)
使用例:パスワードなどの入力された値が8文字以上か判断する材料 ...etc
上記の3行目なら、nameListテーブル
のnameカラム
の文字数を取得する事ができます。
出力結果はこちら。
4
3
3
3
4
3
※わかりやすくする為に、改行を挟んでいます。
日付に関する関数
現在の年月日と時刻 - CURRENT()
SELECT CURRENT_DATE();
SELECT CURRENT_TIME();
SELECT CURRENT_TIMESTAMP()
CURRENT_DATE()
は現在の年月日を取得。
CURRENT_TIME()
は現在の時刻を取得。
CURRENT_TIMESTAMP()
は現在の年月日と時刻を取得。
仮に2020年1月1日、10時20分30秒の時の出力結果はこちら。
2020-01-01
10:20:30
2020-01-01 10:20:30
因みにデフォルトの設定のままで、これを取得しようとすると、日本のタイムゾーンとは異なるので、日本のタイムゾーンで取得したい場合は、別途設定が必要になります。(これは日付に関する関数全般に関わります。)
曜日の取得 - DAYNAME()
SELECT DAYNAME("2020-01-01");
DAYNAME()
は括弧内の曜日を取得する事ができます。
出力結果はこちら。
Wednesday
2020年1月1日の曜日は、Wednesday(水曜日)のようです。
まとめ
ここで紹介した以外にも関数はありますが、個人的に使用頻度が低そうだったので、除外しております。もし他にも知りたい場合は、MySQLの公式リファレンスや他の記事を参照してみてください。
最後まで読んでくださり、ありがとうございました!
筆者:yuki|学習10日目で初案件獲得→現在はフルスタックエンジニア転職に向けて学習中
Qiita:https://qiita.com/yuki4839
Twitter:https://twitter.com/yuki35522891