`
fw2003
  • 浏览: 80174 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

个人对ORACLE中键保留表的理解

阅读更多
      相关资料键保留表给的定义很模糊,经过无数次验证,我对键保留表的理解是:一个复杂视图,指由多张基表组成的视图,若需要出现键保留表的话则必须保证基表中至少有一张表是有主键的!(可利用EMP表和DEPT表生成新的无约束表创建视图测试,无键保留表)
     其次,这两张表在进行关联时(可以是表连接也可以是多表查询,但一定要有关联条件!其关联条件其实相当于两表的主外键关系),如果关联条件是使用了主键的话,则外键表为键保留表。
     还是拿t2,t3这2张表来举例
      t2表内容如下:
  
     SID UNAME
-------- ---------
     100 fw
       2 sd
       3 accplz
       4 jr
       5 bigjr
       6 "Feng"
       7 FengWen
    
     t3表的内容如下:
  
   SID T3_UNAME
  ----- -----------
      1 fw
      2 sb
      3 accplz
      4 jr
      5 bigjr
      6 asda
      7 fhj

    那么创建连接视图:create or replace view t2_t3_view as select m1.sid,uname,t3_uname from t2 m1,t3 m2
where m1.sid = m2.sid;
    这时候,通过update t2_t3_view 修改表t2里的uname,或者是表t3里的t3_uname都是不行的,因为现在这2张表都是非键值保留表。那么,如果alter table t2 add constraint pk_sid primary key(sid)也就是将t2表里的sid设为主键的话,那么通过update t2_t3_view 可以修改t3_uname的值,而不能修改uname或sid的值。因为这时t3是外键表,也就是键保留表,而t2不是。那么,反过来,将t2的sid上的约束去掉,将t3的sid设为主键,那么可以通过update t2_t3_view 修改uname或sid的值,但不能修改t3_uname的值。也就是这时t2变成键保留表了,而t3不是。
    最后,如果t2,t3里的sid列都既是外键又是主键的话,那么t2,t3都会变成键保留表。
分享到:
评论

相关推荐

    Oracle关键字(保留字)大全

    在Oracle数据库系统中,关键字或保留字是用来执行特定功能和操作的预定义标识符。这些关键字对于编写有效的SQL语句至关重要,因为它们帮助开发者构建出清晰、逻辑严谨的数据库查询与管理指令。本文将详细介绍Oracle...

    Oracle 临时表用法

    本文将详细介绍Oracle临时表的创建方法、使用场景以及优缺点,帮助读者更好地理解和运用这一特性。 #### 二、Oracle临时表概述 Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的...

    SqlServer表结构转oracle表结构

    在数据库管理领域,将SQL Server的表结构转换到Oracle数据库是一项常见的需求,特别是在系统迁移或数据整合的过程中。本文将详细探讨如何实现这一过程,并提供C#开发源码的相关信息。 首先,我们需要理解SQL Server...

    Oracle在线建立超大表的索引

    3. **RC**:索引键排序,如果内存中无法容纳所有的数据,则会在磁盘上进行分段排序,涉及到临时表空间的写I/O。 4. **RD**:写入INDEX DB BLOCK的I/O。 5. **RE**:更改INDEX DB BLOCK产生的REDO I/O。 #### 最小化...

    Oracle复制表数据的两种用法

    在本文中,我们将深入探讨Oracle复制表数据的两种主要方法,并结合提供的“测试插入.sql”文件,理解其在实际操作中的应用。 首先,让我们了解第一种方法:使用`INSERT INTO SELECT`语句。这种方法适用于将一个表的...

    个人学习oracle笔记

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它由甲骨文公司开发和维护...通过阅读“个人学习Oracle笔记.txt”文件,你可以期望找到对这些概念的详细解释和实例,帮助你在Oracle学习之旅上取得进展。

    oracle表中已经有数据还能创建分区吗

    oracle创建分区表

    个人版oracle 11g安装图解

    7. 在 Oracle 数据库创建完毕后,完成了对 Oracle 数据库的安装 三、口令管理 1. 点击“口令管理”按钮,进行口令设置 2. 解锁“scott”账户,并设置口令 3. 完成对 Oracle 的安装 四、安装 PL/SQL.Developer 1....

    关于Oracle多表连接,提高效率,性能优化操作

    这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性...

    oracle导出数据库表结构到word文档中

    Oracle数据库表结构导出器是一套用来完成将Oracle数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。亲测oracle绝对好使 ,另附有链接信息,请先看好说明再操作.不会的加我qq87611894

    深入理解Oracle Exadata

    深入理解Oracle Exadata

    深入理解OracleRAC12c

    资源名称:深入理解Oracle RAC 12c内容简介:《深入理解Oracle RAC 12c》介绍了Oracle RAC 12c技术的方方面面,涵盖了与RAC技术相关的集群件知识、数据库知识、存储知识、网络知识,并在基于RAC的应用软件设计、优化...

    Oracle数据库导出表结构的工具

    虽然Data Pump已成为主流,但Oracle仍然保留了旧版的Export工具(EXP),对于不熟悉Data Pump或者在低版本Oracle中工作的用户,EXP仍然是一个选择。EXP可以导出表、视图、过程、函数等对象的定义,但其速度和效率...

    oracle数据库导出表结构到WORD文档

    在"压缩包子文件的文件名称列表"中提到的"oracle表结构导出器"可能是一个专用的工具,它简化了上述过程,能够直接将Oracle表结构导出为Word格式,无需手动操作。这种工具通常会包含预设的模板和格式,使得输出的文档...

    Oracle触发器修改自身表

    1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作

    深入理解Oracle RAC 12c(完整书签).pdf

    要完全掌握Oracle RAC 12c的使用和管理,需要深入学习上述内容,并通过实践经验来提升对这些概念的理解和应用能力。对于数据库管理员(DBA)而言,具备这些技能和知识是必要的,因为它们能够帮助DBA更好地设计、实施...

    oracle数据库、表空间及数据文件之间的关系

    综上所述,在Oracle数据库中,数据库、表空间和数据文件之间存在着明确的关系:数据库包含多个表空间,而表空间又由一个或多个数据文件组成。这种层次结构不仅有助于更好地组织和管理数据,还使得在扩展存储容量时变...

    Oracle中重做undo表空间

    在Oracle数据库系统中,"重做undo表空间"是一个至关重要的概念,它是数据库事务处理的基础。Undo表空间是用来存储事务撤销操作时所需信息的地方,这些信息被称为重做日志(Redo Log)。当一个事务对数据进行修改时,...

    Oracle表分区详解(优缺点)

    首先,理解表空间和分区表的概念至关重要。表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成,容纳了数据库的所有对象,包括表。当表的数据量过大时,查询效率会降低,这时可以通过表分区来...

Global site tag (gtag.js) - Google Analytics