当前位置: 首页 > news >正文

【Oracle专栏】Oracle中的虚拟列

 Oracle相关文档,希望互相学习,共同进步

风123456789~-CSDN博客


1.背景

        在EXP方式导出时,发现 出现如下提示 EXP-00107: virtual column 不支持,因此采用expdp方式导出。于是本文针对oracle虚拟列进行简单介绍。

2. 相关资料

       Oracle数据库中的“虚拟列”通常指的是在表中使用表达式生成的列,这些列不存储数据,而是在查询时动态计算其值。Oracle从11g版本开始引入了虚拟列的概念,也称为“生成列”。这种类型的列可以基于表中其他列的值进行计算,或者在插入或更新记录时自动生成值。


      Oracle中的虚拟列是一种不占据实际存储空间的列,其值是基于其他列计算得出的。虚拟列通常是只读的,并且不能被直接插入或更新。

创建虚拟列的语法如下:

优势:

1.节省存储空间:由于虚拟列的值不存储在数据库中,只在查询时计算,节省了存储空间。

2.数据一致性:虚拟列的值始终是计算得到的,能够保持数据的一致性。

3.简化查询:通过虚拟列,可以简化查询语句,不需要在每次查询时重复计算表达式。

3.实验

(1)创建表:

CREATE TABLE feng_test (kid NUMBER PRIMARY KEY,first_name VARCHAR2(50),last_name VARCHAR2(50),birth_date DATE,age AS (TRUNC(MONTHS_BETWEEN(SYSDATE, birth_date)) / 12) VIRTUAL
);

说明:

1)创建表时,通过使用Oracle 内置函数或自定义函数来定义虚拟列。
     自定义函数须在虚拟列定义前声明.定义完虚拟列后,还可以修改自定义的函数定义。

2)age是一个虚拟列,它通过计算当前日期与birth_date之间的月份数然后除以12来得到员工的年龄。 

(2)增加虚拟列:

ALTER TABLE feng_test
ADD (age1 AS (TRUNC(MONTHS_BETWEEN(SYSDATE, birth_date)) / 12) VIRTUAL);

(3)删除虚拟列:

ALTER TABLE feng_test  DROP COLUMN age1;

 (4)查询虚拟列:

select * from feng_test;

(5)可在虚拟列上建立分区

create table feng_part
(kid  number(6),
sal  number(8,2),
jbxs  number(8,2),
name  varchar2(10)
sal_all  generated always as( sal+nvl(jbxs,0)  )  virtual
)
partition by range(sal_all)( partition sal_4000 values less then (4000),partition sal_4000 values less then (8000),partition sal_default values less then (MAXVALUE))

4.总结

(1) 只有堆组织表(heap-organized table)才可以定义虚拟列

(2) 虚拟列不能引用其他的虚拟列

(3) 虚拟列只能引用自己表中的列, 不能引用其他表中的列。

(4) 虚拟列值只能是标量 scalar value (a single value, not a set of values)

(5)虚拟类自动计算,不可插入

Oracle 采用虚拟列占用CPU时间,但节约了磁盘的存储空间

 


项目管理--相关知识   

项目管理-项目绩效域1/2-CSDN博客

项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客

项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客

高项-案例分析万能答案(作业分享)-CSDN博客

项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客

项目管理-配置管理与变更-CSDN博客

项目管理-项目管理科学基础-CSDN博客

项目管理-高级项目管理-CSDN博客

项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客


Oracle其他文档,希望互相学习,共同进步

Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客

oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客

ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客

EXP-00091: Exporting questionable statistics.解决方案-CSDN博客

Oracle 更换监听端口-CSDN博客

相关文章:

  • pnpm确认全局下载安装了还是显示cnpm不是内部或外部命令,也不是可运行的程序
  • 算法分析传输加密数据格式密文存储代码混淆逆向保护
  • Mac上Cursor无法安装插件解决方法
  • 【大模型】RAG(Retrieval-Augmented Generation)检索增强生成
  • 使用 NEAT 进化智能体解决 Gymnasium 强化学习环境
  • 分布类相关的可视化图像
  • 从内核到用户态:Linux信号内核结构、保存与处理全链路剖析
  • DMA映射
  • 大模型S2S应用趋势感知分析
  • SSM(SpringMVC+spring+mybatis)整合的步骤以及相关依赖
  • 计算机视觉与深度学习 | LSTM原理,公式,代码,应用
  • n8n 中文系列教程_04.半开放节点深度解析:Code与HTTP Request高阶用法指南
  • 人形机器人马拉松:北京何以孕育“领跑者”?
  • SpringBoot实战3
  • llamafactory的包安装
  • springboot起步依赖的原理是什么?
  • 企业工商信息查询API接口开发指南 - 基于模糊检索的工商数据补全方案
  • 单例模式与消费者生产者模型,以及线程池的基本认识与模拟实现
  • 再探模板与泛型编程
  • sizeof和strlen区分,(好多例子)
  • 正荣地产旗下“H20正荣2”债未能于宽限期内支付分期偿付款,尚未就新兑付方案达成一致
  • 巴基斯坦航天员选拔工作正在进行,1人将以载荷专家身份参加联合飞行
  • 东方富海陈玮: 什么样的创业者能让天使投资人愿意下注
  • 秦洪看盘|热点凌乱难抑多头雄心
  • 洛阳白马寺存争议的狄仁杰墓挂牌,当地文物部门:已确认
  • 大理杨徐邱上诉案开庭:当事人称曾接受过两次测谎测试