【MySQL】関数の基本 - 処理のまとまり

【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)