MySQL生成列(Generated Columns)

MySQL生成列(Generated Columns),第1张

MySQL: 5.7.25-log

1.生成列语法:

2.生成列支持两种创建方式,分别对应关键词 VIRTUAL 和 STORED:

3.其他:

1.不指定关键字时候默认为 VIRTUAL生成列

2.VIRTUAL不占用存储空间,STORED占用存储空间

向三表插入相同的大量数据,然后查询表空间文件大小如下:

3.一个表中可以既包含 VIRTUAL 列,又包含 STORED 列

4.可指定列是否为NULL,是否唯一索引,是否二级索引,是否有COMMENTS(选择部分测试),但不能使用auto_increment属性

5.STORED生成列可指定是否主键,VIRTUAL生成列不支持

6.不支持不确定性函数

7.可基于生成列再创建生成列,但有先后顺序,基于基础列便无先后顺序

8.CREATE TABLE ... LIKE 建表,目标表会保留源表的生成列信息

9.CREATE TABLE ... AS SELECT 建表,不复制生成列信息

10.支持基于生成列创建分区表

11.不论是表还是视图,显示更新生成列时仅支持值 DEFAULT

11.基于json字段建 生成列+索引

12.使用生成列的表达式进行查询亦可走索引,但条件苛刻

还有一些限制及特性,就不一一列举了。

https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html

https://dev.mysql.com/doc/refman/5.7/en/create-table-secondary-indexes.html

https://dev.mysql.com/doc/refman/5.7/en/generated-column-index-optimizations.html

步骤是 1 先插入一个新列

$sql_str='alter table 表名 add column 新列名 varchar(30)'

2 用两列的商的值更新插入的新列

$sql_str='update 表名 set 新列名=列名1/列名2'

把博客中的内容粘贴一下

第一种方法

select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it

第二种方法:

set @rownum=0

select @rownum:=@rownum+1 as rownu


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6217164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存