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

MySQL GENERATED COLUMNとは何ですか?テーブルの作成中にそれを使用する方法は?


基本的に生成される列は、CREATETABLEまたはALTERTABLEステートメントで使用できる機能であり、SQLのINSERTまたはUPDATE句を介して実際にデータを送信せずにデータを格納する方法です。この機能はMySQL5.7で追加されました。生成された列は、テーブルドメイン内で機能します。その構文は次のようになります-

構文
column_name data_type [GENERATED ALWAYS] AS (expression)
[VIRTUAL | STORED] [UNIQUE [KEY]]

ここでは、まず、列名とそのデータ型を指定します。

  • 次に、GENERATED ALWAYS句を追加して、列が生成された列であることを示します。
  • 次に、対応するオプション-VIRTUALまたはSTOREDを使用して、生成された列のタイプを示します。生成された列のタイプを明示的に指定しない場合、デフォルトではMySQLはVIRTUALを使用します。

その後、ASキーワードの後の中括弧内に式を指定します。式には、リテラル、パラメーターのない組み込み関数、演算子、または同じテーブル内の任意の列への参照を含めることができます。関数を使用する場合は、スカラーで決定論的である必要があります。

最後に、生成された列が保存されている場合は、その列に一意の制約を定義できます。

この例では、次のように生成された列とともに従業員の詳細を含むemployee_dataという名前のテーブルを作成しています-

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)

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)

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)

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)

  1. 作成済みのMySQLテーブルに新しい列を作成して入力するにはどうすればよいですか?

    最初にテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Value1 int,    -> Value2 int    -> ); Query OK, 0 rows affected (0.77 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(10,10); Query OK, 1 row affected (0

  2. MySQLテーブルを作成するときは、予約済みのキーワード「Key」を使用してください

    予約キーワード「キー」を使用するには、バックティック記号の概念を使用します。ここでは、この例では、列名の前後にバックチェック記号が必要な列名キーを使用しています。 まずテーブルを作成しましょう- mysql> create table DemoTable (    `Key` int ); Query OK, 0 rows affected (0.67 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(100); Query OK, 1 row affecte