虚拟列是指使用表达式或函数进行定义的数据列。逻辑上,表的虚拟列与普通列具有相同的语法含 义,但虚拟列的值并不保存在任何物理存储介质上,而是在 SQL 的执行过程中,根据定义虚拟列 的表达式或函数进行计算而获得。
虚拟列语法图:
创建一个带虚拟列的表:
例如,创建带虚拟列的表 employee,其中 total_sal 为表达式定义的虚拟列:
CREATE TABLE employee
(
empl_ID INT,
empl_Nm VARCHAR(50),
monthly_Sal DECIMAL(10,2),
bonus DECIMAL(10,2),
total_Sal DECIMAL(10,2) GENERATED ALWAYS AS (monthly_Sal*12 + bonus)
);
向带虚拟列的表中插入数据 对虚拟列执行 INSERT 操作,需明确写出插入表的各字段名称。
例如,向带虚拟列的表中正确插入数据:
INSERT INTO employee(empl_ID,empl_Nm,monthly_Sal,bonus) VALUES(1,'zhangSan',9000,560);
返回结果:成功
只写表名不明确写出各字段名称:
INSERT INTO employee VALUES(1,'zhangSan',9000,560);
返回结果:报错误代码-981