什么是虚拟列
虚拟列顾名思义,就虚拟的列,它的值是不存储在磁盘上的,而是在查询的时候,根据定义的表达式临时计算后得到的结果。虚拟列可以用在查询、DML、DDL 语句中。索引可以建在虚拟列上。用户可以像使用普通列一样使用虚拟列。
示例
建表
CREATE TABLE emp
(
empl_id NUMBER,
empl_nm VARCHAR2(20),
monthly_sal NUMBER(10,2),
bonus NUMBER(10,2),
total_sal NUMBER(10,2) GENERATED ALWAYS AS (monthly_sal*12 + bonus)
);
插入记录,虚拟列是根据其他列计算生成,因此不能插入值
INSERT INTO emp (empl_id, empl_nm, monthly_sal, bonus)
WITH DATA AS
(SELECT 100 empl_id, '赵' empl_nm, 20000 monthly_sal, 3000 bonus
FROM DUAL
UNION
SELECT 200, '钱', 12000, 2000
FROM DUAL
UNION
SELECT 300, '孙', 32100, 1000
FROM DUAL
UNION
SELECT 400, '李', 24300, 5000
FROM DUAL
UNION
SELECT 500, '周', 12300, 8000
FROM DUAL)
SELECT * FROM DATA;
查询数据
SQL> select * from emp;
行号 EMPL_ID EMPL_NM MONTHLY_SAL BONUS TOTAL_SAL
---------- ------- ------- ----------- ------- ---------
1 100 赵 20000.00 3000.00 243000.00
2 200 钱 12000.00 2000.00 146000.00
3 300 孙 32100.00 1000.00 386200.00
4 400 李 24300.00 5000.00 296600.00
5 500 周 12300.00 8000.00 155600.00
达梦云适配技术社区:https://eco.dameng.com