【MySQL】関数の基本 - 処理のまとまり
MySQLの関数について解説します。
検証環境
関数
関数は“処理のまとまり”です。
MySQLでは標準で様々な関数が用意されており、複雑な処理の実現をサポートします。
実引数
実引数は“関数に与える値”です。
関数は与えられた値を使って処理を行います。
使い方
関数はクエリで使うことが可能です。
基本構文
関数名( 実引数1, 実引数2 ... )
関数名
に関数の名称、実引数
に関数へ与える値を記述します。
実引数(関数へ与える値)が複数個ある場合は、カンマ(,
)で区切ります。
サンプル
サンプルとしてCONCAT関数を示します。
CONCAT関数は実引数に与えた複数の文字列(値)を結合した文字列を生成します。
文字列を結合するCONCAT関数をサンプルとして示します。
___ih_hl_start
mysql> SELECT CONCAT('Pine', 'apple');
___ih_hl_end
+-------------------------+
| CONCAT('Pine', 'apple') |
+-------------------------+
| Pineapple |
+-------------------------+
1 row in set (0.01 sec)
1行目のCONCAT('Pine', 'apple')
がCONCAT関数です。
CONCAT
が関数名、'Pine'
と'apple'
が実引数になっています。
実行結果から2つの実引数を結合した文字列が生成されたことが分かります。
代表的な関数-3選
代表的な関数から、更に頻繁に使われる関数を3つご紹介します。
CONCAT
CONCAT
関数は引数で与えた文字列を結合します。
上記、サンプルで使用した関数と同じです。
mysql> DESC items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
___ih_hl_start
mysql> INSERT INTO items ( name )
-> VALUE ( CONCAT('Pine', 'apple') );
___ih_hl_end
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM items;
+----+-----------+
| id | name |
+----+-----------+
| 1 | Pineapple |
+----+-----------+
1 row in set (0.00 sec)
SUM
SUM
関数は合計値を計算します。
mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name | price | stock |
+----+-----------+-------+-------+
| 1 | Apple | 200 | 10 |
| 2 | Orange | 150 | 3 |
| 3 | Pineapple | 1100 | 1 |
| 4 | Grapes | 3500 | 1 |
+----+-----------+-------+-------+
4 rows in set (0.01 sec)
___ih_hl_start
mysql> SELECT SUM(price * stock) FROM items;
___ih_hl_end
+--------------------+
| SUM(price * stock) |
+--------------------+
| 7050 |
+--------------------+
1 row in set (0.00 sec)
NOW
NOW
関数は現在日時を取得します。
mysql> SELECT * FROM items;
+----+-------+-------+-------+---------------------+
| id | name | price | stock | updated_at |
+----+-------+-------+-------+---------------------+
| 1 | Apple | 200 | 10 | 2024-01-15 12:34:56 |
+----+-------+-------+-------+---------------------+
1 row in set (0.00 sec)
___ih_hl_start
mysql> UPDATE items SET updated_at = NOW() WHERE id = 1;
___ih_hl_end
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM items;
+----+-------+-------+-------+---------------------+
| id | name | price | stock | updated_at |
+----+-------+-------+-------+---------------------+
| 1 | Apple | 200 | 10 | 2024-02-14 09:24:31 |
+----+-------+-------+-------+---------------------+
1 row in set (0.00 sec)