什么是MySQL GENERATED COLUMN,以及在创建表时如何使用它?

基本上,生成的列是可以在CREATE TABLE或ALTER TABLE语句中使用的功能,并且是一种存储数据的方式,而无需实际通过SQL中的INSERT或UPDATE子句发送。MySQL 5.7中已添加此功能。生成的列在表域内工作。它的语法如下-

语法

column_name data_type [GENERATED ALWAYS] AS (expression)

[VIRTUAL | STORED] [UNIQUE [KEY]]

在这里,首先,指定列名称及其数据类型。

  • 然后添加GENERATED ALWAYS子句以指示该列是已生成的列。

  • 然后,使用相应的选项-VIRTUAL或STORED指示生成的列的类型。默认情况下,如果您未明确指定生成列的类型,则MySQL使用VIRTUAL。

之后,在AS关键字后的花括号内指定表达式。该表达式可以包含文字,不带参数的内置函数,运算符或对同一表中任何列的引用。如果使用函数,则它必须是标量和确定性的。

最后,如果存储了生成的列,则可以为其定义一个唯一约束。

示例

在此示例中,我们将创建一个名为employee_data的表,其中包含employee的详细信息以及生成的列,如下所示:

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

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');

mysql> INSERT INTO employee_data(first_name, Last_name) values('Krishan','Kumar');

mysql> INSERT INTO employee_data(first_name, Last_name) values('Rakesh','Arora');

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)

以上是 什么是MySQL GENERATED COLUMN,以及在创建表时如何使用它? 的全部内容, 来源链接: utcz.com/z/316688.html

回到顶部