当前位置 : 主页 > 网络编程 > 其它编程 >

SQL语法——MySQL列生成

来源:互联网 收集:自由互联 发布时间:2023-07-02
MySQL生成列简介创建新表时请在CREATETABLE语句中指定表列。然后可以使用INSERTUPDATE和DELETE语句直接 MySQL生成列简介 创建新表时请在CREATE TABLE语句中指定表列。然后可以使用INSERTUPDATE和DE
MySQL生成列简介创建新表时请在CREATETABLE语句中指定表列。然后可以使用INSERTUPDATE和DELETE语句直接

MySQL生成列简介

创建新表时请在CREATE TABLE语句中指定表列。然后可以使用INSERTUPDATE和DELETE 语句直接修改表中的列数据。

MySQL 5.7引入了一个名为generated column 的新功能。它被称为生成列因为此列中的数据是基于预定义的表达式或其他列计算的。

例如具有contacts以下结构

CREATE TABLE IF NOT EXISTS contacts (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL);

要获取联系人的全名请使用以下CONCAT()函数

SELECT id, CONCAT(first_name, , last_name), emailFROMcontacts;

通过使用MySQL生成的列您可以contacts按如下方式重新创建表

DROP TABLE IF EXISTS contacts;CREATE TABLE contacts (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,fullname varchar(101) GENERATED ALWAYS AS (CONCAT(first_name, ,last_name)),email VARCHAR(100) NOT NULL);

这GENERATED ALWAYS as (expression)是创建生成列的语法。

要测试fullname列请contacts在表中插入一行。

INSERT INTO contacts(first_name,last_name, email)VALUES(john,doe,john.doemysqltutorial.org);

可以从表中查询数据contacts。

SELECT *FROMcontacts;

在这里插入图片描述

当从contacts表中查询数据时将立即计算fullname列中的值。

MySQL提供了两种类型的生成列存储列和虚拟列。每次读取数据时都会动态计算虚拟列而在更新数据时会物理计算和存储存储的列。

根据此定义上例中的 fullname列是虚拟列。

MySQL生成了列的语法

定义生成列的语法如下

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

  • 指定列名称及其数据类型。
  • 添加GENERATED ALWAYS子句以指示列是生成的列。
  • 使用相应的选项指示生成列的类型VIRTUAL或STORED。默认情况下如果您未明确指定生成列的类型则使用VIRTUAL 。
  • 在AS关键字后面的大括号内指定表达式。表达式可以包含文字没有参数的内置函数运算符或对同一表中任何列的引用。如果使用函数它必须是标量和确定性的。
  • 如果存储了生成的列则可以为其定义 唯一约束。
  • 上一篇:丸目长惠是谁
    下一篇:没有了
    网友评论