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

MySQLのテーブルに仮想生成列(VIRTUAL GENERATED COLUMN)を追加する方法

MySQLのテーブルに仮想生成列(VIRTUAL GENERATED COLUMN)を追加する場合は、通常の列を追加するときと同じ構文を使用し、データ型の後ろに「AS(式)」を付け加えるだけです。これにより、他の列の値をもとに自動計算される列を簡単に作成できます。

基本構文

ALTER TABLE table_name
ADD COLUMN column_name AS(expression);

各項目の意味

  • table_name … 仮想生成列を追加する対象のテーブル名
  • column_name … 新しく追加する列の名前
  • expression … 列の値を生成するために評価される式

実際の使用例

次の例では、employee_dataテーブルに対して、First_nameLast_nameを連結して氏名を自動生成するFULLNameという仮想生成列を追加しています。CONCAT_WS()関数を使うことで、姓と名の間にスペースを挿入しながら文字列を結合できます。

mysql> ALTER TABLE employee_data ADD COLUMN FULLName VARCHAR(200) AS(CONCAT_WS(' ', First_name, Last_name));
Query OK, 0 rows affected (0.49 sec)
Records: 0 Duplicates: 0 Warnings: 0

続いて、DESCRIBEコマンドでテーブル構造を確認してみましょう。

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 |
| FULLName   | varchar(200) | YES  |     | NULL    | VIRTUAL GENERATED |
+------------+--------------+------+-----+---------+-------------------+
5 rows in set (0.00 sec)

出力結果の「Extra」列にVIRTUAL GENERATEDと表示されていることから、FULLNameが仮想生成列として正しく追加されたことが確認できます。

補足:仮想生成列の特徴

  • 仮想生成列は値をディスク上に物理保存せず、行が読み取られるたびに式が評価されて値が生成されます。
  • 値を物理的に保存したい場合は、定義時にSTOREDキーワードを付けてストアド生成列として作成することも可能です。
  • 生成列の式には、同一テーブル内の他の列や組み込み関数(今回の例ではCONCAT_WS()など)を利用できます。
  1. MySQLで一時テーブルの列(カラム)を一覧表示する方法

    MySQLで一時テーブル(TEMPORARY TABLE)の列を一覧表示するには、まず対象となる一時テーブルを作成しておく必要があります。ここでは例として、学生の詳細情報を格納する複数の列を持つ一時テーブルを作成してみましょう。mysql> CREATE TEMPORARY TABLE DemoTable745 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100), StudentAge int, StudentAddress varchar(100),

  2. MySQLでカラム(列)の順序を変更する方法|ALTER TABLEとAFTERの使い方

    はい、MySQLではカラム(列)の順序を変更することが可能です。ALTER TABLE文とAFTERキーワードを組み合わせることで、特定のカラムを好きな位置へ移動させられます。 1. サンプルテーブルを作成する まず、動作確認用として以下のようなテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> `Student_Key_Age` int, -> `Student_Key_Name` varchar(20), -> `Student_Key_CountryName` varchar