Oracle 11G 虚拟列 Virtual Column 介绍

本文介绍了Oracle 11G数据库中的虚拟列(Virtual Column)特性,虚拟列是在表定义中基于其他列或表达式生成的非存储列,它们不存储数据,仅在查询时动态计算。虚拟列可以提高查询效率,减少冗余数据,并简化数据库维护。
摘要由CSDN通过智能技术生成

原文链接:http://www.javaarch.net/jiagoushi/705.htm

Oracle 11G 虚拟列 Virtual Column

Oracle 11G 在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值。

定义一个虚拟列的语法:

	column_name [datatype] [GENERATED ALWAYS] AS [expression] [VIRTUAL]

1.虚拟列可以用在select,update,delete语句的where条件中,但是不能用于DML语句
2.可以基于虚拟列来做分区
3. 可以在虚拟列上建索引,oracle的函数索引就类似。
4. 可以在虚拟列上建约束

创建一个带虚拟列的表:

	CREATE TABLE EMPLOYEE
	(
		empl_id        NUMBER,
		empl_nm        VARCHAR2(50),
		monthly_sal    NUMBER(10,2),
		bonus          NUMBER(10,2),
		total_sal      NUMBER(10,2) GENERATED ALWAYS AS (monthly_sal*12 + bonus)
	);
	
 total_sal就是一个虚拟列
 
查看下表定义内容:

	SELECT column_name, data_type, data_length, data_default, virtual_column
	  FROM user_tab_cols
	 WHERE table_name = 'EMPLOYEE';
	 
	COLUMN_NAME | DATA_TYPE | DATA_LENGTH | DATA_DEFAULT             | VIRTUAL_COLUMN
	EMPL_ID     | NUMBER    | 22          | null                     | NO           
	EMPL_NM     | VARCHAR2  | 50          | null                     | NO           
	MONTHLY_SAL | NUMBER    | 22          | null                     | NO           
	BONUS       | NUMBER    | 22          | null               
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值