MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの仮想生成列は組み込み関数とどのように連携できるのか?

MySQLの仮想生成列(VIRTUAL GENERATED COLUMN)は、CONCATをはじめとする組み込み関数と組み合わせて活用できます。ここでは、テーブル「employee_data」に仮想生成列を作成する例を通して、その具体的な動作を解説します。仮想生成列は、キーワード「VIRTUAL」を明示的に指定しても、省略しても作成できる点が特徴です。

例:CONCAT関数で氏名を自動生成する仮想生成列

mysql> CREATE TABLE employee_data(
    ID INT AUTO_INCREMENT PRIMARY KEY,
    First_name VARCHAR(50) NOT NULL,
    Last_name VARCHAR(50) NOT NULL,
    FULL_NAME VARCHAR(90) GENERATED ALWAYS AS (CONCAT(First_name,' ',Last_name))
);
Query OK, 0 rows affected (0.55 sec)

このテーブルでは、GENERATED ALWAYS AS句とCONCAT関数を使って、First_name(名)とLast_name(姓)を連結した値を持つFULL_NAME列を仮想生成列として定義しています。

テーブル構造の確認

mysql> DESCRIBE employee_data;
+------------+-------------+------+-----+---------+-------------------+
| Field      | Type        | Null | Key | Default | Extra             |
+------------+-------------+------+-----+---------+-------------------+
| ID         | int(11)     | NO   | PRI | NULL    | auto_increment    |
| First_name | varchar(50) | NO   |     | NULL    |                   |
| Last_name  | varchar(50) | NO   |     | NULL    |                   |
| FULL_NAME  | varchar(90) | YES  |     | NULL    | VIRTUAL GENERATED |
+------------+-------------+------+-----+---------+-------------------+
4 rows in set (0.00 sec)

DESCRIBEコマンドの出力では、FULL_NAME列のExtra欄に「VIRTUAL GENERATED」と表示されており、この列が仮想生成列であることが確認できます。仮想生成列の値はディスクに保存されず、行が読み取られるたびに動的に計算されるため、ストレージの節約にもつながります。

データの挿入

mysql> INSERT INTO employee_data(first_name, Last_name) VALUES('Yashpal','Sharma');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) VALUES('Krishan','Kumar');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) VALUES('Rakesh','Arora');
Query OK, 1 row affected (0.08 sec)

INSERT文ではFirst_nameとLast_nameのみを指定している点に注目してください。FULL_NAME列は生成列であるため、値を明示的に挿入する必要はありません。

結果の確認

mysql> SELECT * FROM employee_data;
+----+------------+-----------+----------------+
| ID | First_name | Last_name | FULL_NAME      |
+----+------------+-----------+----------------+
|  1 | Yashpal    | Sharma    | Yashpal Sharma |
|  2 | Krishan    | Kumar     | Krishan Kumar  |
|  3 | Rakesh     | Arora     | Rakesh Arora   |
+----+------------+-----------+----------------+
3 rows in set (0.00 sec)

SELECT文の結果を見ると、FULL_NAME列に「Yashpal Sharma」「Krishan Kumar」「Rakesh Arora」と、名と姓が連結された値が自動的に表示されています。このように仮想生成列は組み込み関数と連携することで、データの挿入や更新のたびに手動で計算・保存を行う必要がなく、動的な派生データを簡潔に実現できる強力な機能です。

  1. MySQLで配列変数を扱う方法|DUALテーブルを使った代替テクニックを解説

    MySQLに配列変数は存在しないMySQLには、他のプログラミング言語のような配列変数(Array)の機能が標準では用意されていません。そのため、配列のように複数の値を一つのリストとして扱いたい場合は、工夫が必要です。最もシンプルな代替手段が、DUALテーブルとUNION ALLを組み合わせる方法です。これにより、仮想的な「配列」として複数の値を縦方向のリスト形式で取得できます。DUALテーブルを使った基本的な構文以下のように、SELECT文をUNION ALLで連結することで、各値を1行ずつ持つ結果セットを作成できます。SELECT yourValue1 AS ArrayValue FROM

  2. MySQLで「&」を「&」に置き換える方法を解説

    MySQLで「&」を「&」に置き換える方法データベースにHTMLエンティティ形式の「&」が保存されており、これを通常のアンパサンド「&」に変換したいケースはよくあります。そんなときは、MySQLのREPLACE()関数を使えば簡単に解決できます。REPLACE()関数は、文字列の中から指定した部分文字列を検索し、別の文字列に置き換えることができる便利な関数です。ここでは、サンプルテーブルを使いながら、実際の置き換え手順を順番に解説していきます。手順1:サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。mysql> cre