`
weiruan85
  • 浏览: 384180 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

oracle 虚拟列

阅读更多
11g以前的创建一个函数索引时, 实际上也是加了一个虚拟列的, 只不过DESC也不显示出来. 在11g中则可以在建表时加上虚拟列, 并可将这个列用于SQL, 分区列中, 还可以在上面建索引
官方new feature介绍:
1.4.2.11 Virtual Columns
Virtual columns are defined by evaluating an expression the results of which become the metadata of the columns for tables. Virtual columns can be defined at table creation or modification time.

Virtual columns enable application developers to define computations and transformations as the column (metadata) definition of tables without space consumption. This makes application development easier and less error-prone, as well as enhances query optimization by providing additional statistics to the optimizer for these virtual columns.

1.4.2.12 Virtual Column-Based Partitioning
In Oracle Database 11g, you can now partition key columns defined on virtual columns of a table.

Frequently, business requirements to logically partition objects does not match existing columns in a one-to-one manner. Oracle partitioning has been enhanced to allow a partitioning strategy being defined on virtual columns, thus enabling a more comprehensive match of the business requirements.


例子:
SQL> CREATE TABLE MAYJ.T3
  2  (
  3    A  NUMBER(2),
  4    B  NUMBER(2),
  5    C  AS ((A+B)*5) VIRTUAL
  6  );
Table created.

SQL> desc t3;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
A                                                  NUMBER(2)
B                                                  NUMBER(2)
C                                                  NUMBER
SQL> select dbms_metadata.get_ddl('TABLE','T3') from dual; --用get_ddl显示不全
DBMS_METADATA.GET_DDL('TABLE','T3')
--------------------------------------------------------------------------------
  CREATE TABLE "MAYJ"."T3"
   (    "A" NUMBER(2,0),
        "B" NUMBER(2,0),
        "C" NUMB

SQL> insert into t3 (a,b) values (1,2);
1 row created.
SQL> select * from t3;
         A          B          C
---------- ---------- ----------
         1          2         15
SQL> insert into t3 values (1,2,15);  --在虚拟列上insert或update都会失败
insert into t3 values (1,2,15)
            *
ERROR at line 1:
ORA-54013: INSERT operation disallowed on virtual columns

SQL> create index idx_1 on t(c);
Index created.  --可以在虚拟列创建索引.
分享到:
评论

相关推荐

    彻底删除oracle11g(10g也适用)

    彻底删除oracle,本人亲测有效。删除不干净,安装不了新的。

    Oracle数据创建虚拟列和复合触发器的方法

    本文我们主要介绍Oracle数据库的虚拟列和复合触发器方面的相关知识,包括虚拟列和复合触发器的创建等,并给出了创建示例,接下来就让我们来一起了解这一过程吧。 一、虚拟列 Oralce 的虚拟列解决了以前很多需要使用...

    用Oracle 10g列值掩码技术隐藏敏感数据

    Oracle 10g 列值掩码技术隐藏敏感数据 Oracle 10g 列值掩码技术是一种非常有用的技术,用于隐藏敏感数据,可以对数据库中的敏感数据进行保护。下面是关于 Oracle 10g 列值掩码技术隐藏敏感数据的知识点: 1. ...

    Oracle数据库使用分组函数来对数据进行聚集

    Oracle数据库使用分组函数来对数据进行聚集

    oracle伪列以及伪表.doc

    DUAL表是Oracle提供的一种特殊表,通常只有一行,用于在SELECT语句中提供一个虚拟的记录集,以确保语句的完整性。例如,查询当前日期和时间可以写成`SELECT sysdate, to_char(sysdate, 'yyyy-mm-dd HH24:mm:ss') ...

    EMC IT的虚拟化ORACLE部署框架

    EMC IT Oracle虚拟化基础架构部署的核心在于选择合适的技术和策略,以满足不同业务场景下的需求。 - **技术栈**:主要包括VCE Vblock、VMware vSphere等关键技术。 - **高可用性**:通过Distributed Resource ...

    oracle 虚拟专用数据库详细介绍

    总的来说,Oracle虚拟专用数据库通过行级别和列级别控制,实现了更精细的数据访问权限管理,既保护了数据安全,又避免了对应用程序的大量修改。这种机制特别适合大型企业或机构,其中不同部门或员工需要访问不同级别...

    基于Oracle虚拟专用数据库的用户管理设计.pdf

    Oracle虚拟专用数据库(VPD,Virtual Private Database)是一种高级安全特性,它允许数据库管理员实现细粒度访问控制,确保每个用户只能看到他们被授权的数据。VPD通过在数据行级别实施安全策略,使得用户看到的数据...

    Oracle JDeveloper与Oracle数据库

    - **View**:视图是基于一个或多个表的虚拟表,可以用来简化复杂的查询语句。 - **Procedure**:存储过程是一种预先定义并编译好的SQL程序,可以接受参数并返回结果。 ##### 2. 查看表数据 通过展开表组件,可以...

    oracle通过sql实现字符串转数字oracle函数

    如果转换操作非常频繁,可以考虑创建一个虚拟列或者物化视图,将转换后的结果存储起来,从而减轻运行时的计算压力。 最后,当我们谈论“字符串的最终排序”时,使用转换后的数字字段进行排序将更准确,因为字符串...

    ORACLE数据库 ORACLE数据库

    - **视图**:虚拟表,由SQL查询定义,提供不同角度的数据查看。 - **触发器**:在特定数据库事件发生时自动执行的程序代码。 - **存储过程**:预编译的SQL和PL/SQL代码块,可重复使用和调用。 2. **特点** - **...

    Oracle经典教程1——走进Oracle

    伪列不是真正的列,而是Oracle提供的特殊标识符,用于获取额外的信息。例如,`ROWID`用于获取行的唯一标识符,`LEVEL`用于生成递增序号等。 #### Oracle函数 Oracle提供了丰富的内置函数,用于进行数值计算、字符...

    Oracle与DB2数据类型分类对应说明

    Oracle 中的 ROWID 虚拟列用于对表中的某一列进行唯一标示,DB2/400 中也有这样的数据类型 ROWID,它与 Oracle 中的 ROWID 的功能相似。DB2/400 中的 ROWID 可以存放 40 byte 的数据用来唯一标示表中的每一行。 ...

    Oracle数据库管理员指南-管理表-中文版.pdf Administrator's Guide Oracle Managing Tables

    虚拟列通过计算表达式来存储值,它们并不占用存储空间,因为不能显式写入虚拟列。此外,还需要考虑表的存储位置和是否使用并行创建表、NOLOGGING、表压缩等选项。 创建表之后,可以使用SQL语句或Oracle大容量装载...

    Oracle入门心得文档

    视图是从一个或多个表中选择数据的虚拟表,提供了不同的数据视图。索引是为了加快数据检索速度而创建的数据结构,常见的有B树索引和位图索引。分区是将大表分成更小、更易管理的部分,可以提高查询性能和维护效率,...

    oracle开发入门书籍

    每个表由列(字段)和行(记录)组成,一个表可以看作是数据的集合。视图则可以看作是一个虚拟表,视图中的数据来自于一个或多个表的查询结果。索引可以加快对数据的检索速度,而序列用于生成唯一的数值,同义词则是...

Global site tag (gtag.js) - Google Analytics