您现在的位置是:主页 > news > 什么视频网站可以做链接地址/成都网站seo公司
什么视频网站可以做链接地址/成都网站seo公司
admin2025/4/20 11:23:43【news】
简介什么视频网站可以做链接地址,成都网站seo公司,兰州网站建设推广,潍坊360做网站怎么样MySQL中的Generated Column列(计算列) MySQL的Generated Column又称为虚拟列或计算列。Generated Column列的值是在列定义时包含了一个计算表达式计算得到的。 一、定义Generated Column列的语法格式 定义Generated column列的语法如下: …
MySQL中的Generated Column列(计算列)
MySQL的Generated Column又称为虚拟列或计算列。Generated Column列的值是在列定义时包含了一个计算表达式计算得到的。
一、定义Generated Column列的语法格式
定义Generated column列的语法如下:
列名 类型
[GENERATED ALWAYS] AS (expr) [VIRTUAL | STORED]
[NOT NULL | NULL]
[UNIQUE [KEY]]
[[PRIMARY] KEY]
[COMMENT 'string']
说明:
(1)AS(expr)用于生成计算列值的表达式。
(2)VIRTUAL或STORED关键字表示是否存储计算列的值:
VIRTUAL:列值不存储,虚拟列不占用存储空间,默认设置为VIRTUAL。
STORED:在添加或更新行时计算并存储列值。存储列需要存储空间,并且可以创建索引。
二、计算列表达式的要求
Generated column表达式必须遵循以下规则。如果表达式包含不允许的定义方式,则会发生错误。
(1)允许使用文本、内置函数和运算符,但不能使用返回值不确定的函数,比如NOW()。
(2)不允许使用存储函数和用户定义函数。
(3)不允许使用存储过程和函数参数。
(4)不允许使用变量(系统变量、用户定义变量和存储程序的局部变量)。
(5)不允许子查询。
(6)计算列在定义时可以引用其他的计算列,但只能引用表定义中较早出现的列。
(7)可以在计算列上创建索引,但不能在VIRTUAL类型的计算列上创建聚集索引。
三、计算列举例
1、表的定义
mysql> create table sales(-> goods_id int primary key,-> goods_name char(20),-> unit_price int,-> quantity int,-> amount int generated always as (unit_price*quantity));
Query OK, 0 rows affected (0.02 sec)
2、插入数据
mysql> insert into sales(goods_id,goods_name,unit_price,quantity) values(100101,'Apple',2,4);
Query OK, 1 row affected (0.00 sec)mysql> select * from sales;
+----------+------------+------------+----------+--------+
| goods_id | goods_name | unit_price | quantity | amount |
+----------+------------+------------+----------+--------+
| 100101 | Apple | 2 | 4 | 8 |
+----------+------------+------------+----------+--------+
1 row in set (0.00 sec)
3、查看创建表的语句
可见,计算列的默认类型为VIRTUAL。
mysql> show create table sales\G
*************************** 1. row ***************************Table: sales
Create Table: CREATE TABLE `sales` (`goods_id` int(11) NOT NULL,`goods_name` char(20) DEFAULT NULL,`unit_price` int(11) DEFAULT NULL,`quantity` int(11) DEFAULT NULL,`amount` int(11) GENERATED ALWAYS AS ((`unit_price` * `quantity`)) VIRTUAL,PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
去式
create table json_tab
(id int unsigned primary key auto_increment comment '主键',json_info json comment 'json数据',json_id int generated always as (json_info -> '$.id') comment 'json数据的虚拟字段',index json_info_id_idx (json_id)
)