目录 简介虚拟列的分类虚拟列使用示例 简介 Mysql的虚拟列是一种新特性,可以在查询时直接使用虚拟列(代替视图) 存储虚拟列可以用作实例化缓存,以用于动态计算成本高昂的复杂条件。虚拟列可
Mysql的虚拟列是一种新特性,可以在查询时直接使用虚拟列(代替视图) 存储虚拟列可以用作实例化缓存,以用于动态计算成本高昂的复杂条件。虚拟列可以在创建表时定义,并在查询时像普通列一样使用。虚拟列通常用于计算或汇总数据,例如计算总价、计算平均值等。
定义mysql虚拟列(generated-columns)是Mysql 5.7加入的新特性。从名字来讲,“生成的字段”,并不是主动插入的值。MySQL的文档,是这么解释虚拟列的:There are two kinds of Generated Columns: virtual (default) and store-generated (non-default). Virtual columns are generated on the fly as part of an INSERT or UPDATE statement, and they are not stored in the table. Stored-generated columns are calculated based on the values of other columns and are stored in the table.
在MySQL中,虚拟列有两种类型:STORED和VIRTUAL,分别表示存储列和虚拟列。
其中的公式为:
alter table table_name modify column_name int as (表达式) stored;
AS (表达式):定义该列为虚拟列,并指定其值的计算方式。表达式是一个SQL表达式,用于计算虚拟列的值。
STORED:表示该虚拟列的值会被计算出来并存储在表中。
其中公式为:
alter table table_name add column_name int as (表达式);
AS (表达式):定义该列为虚拟列,并指定其值的计算方式。表达式是一个SQL表达式,用于计算虚拟列的值。
创建数据库mydb,创建用户表并插入数据
create database mydb;use mydb;create table t_user( id bigint auto_increment primary key, name varchar(255) null, age int default 0 null);INSERT INTO mydb.t_user (name, age) VALUES ('小明', 12)INSERT INTO mydb.t_user (name, age) VALUES ('小红', 18)
插入两条数据。
创建虚拟存储列
alter table mydb.t_user add store_age int as (age + 9) stored;
创建了store_age的虚拟存储列,以age为标准加9.
展示效果
id | name | age | store_age |
---|---|---|---|
1 | 小明 | 12 | 21 |
2 | 小红 | 18 | 27 |
可以看到store_age的数据都是在age的基础上加了9
创建虚拟列
alter table mydb.t_user add virtual_age int as (age + 87);
创建了virtual_age的虚拟列,以age为标准加87.
展示效果
id | name | age | store_age | virtual_age |
---|---|---|---|---|
1 | 小明 | 12 | 21 | 99 |
2 | 小红 | 18 | 27 | 105 |
可以看到virtual_age的数据都是在age的基础上加了87.
来源地址:https://blog.csdn.net/qq_30503389/article/details/131243934
--结束END--
本文标题: 什么是mysql的虚拟列以及应用实例
本文链接: https://lsjlt.com/news/413217.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0