- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
企业资料网企业管理资料库、法规库、音乐库 第七章 管理Oracle对象 管理表 概览 表是最基本的数据库对象,它用于存储用户数据,关系数据库的所有操作最终都是围绕用户表进行的。在Oracle数据库中,按照存储方式的不同,表可以分为普通表、分区表、索引组织表以及簇表等四种表。 7.3 管理数据的完整性 实现数据完整性可以使用应用代码、触发器和约束三种方法,如果要使用应用代码实现商业规则,那么既可以使用数据库存储过程实现,也可以使用客户端的过程和函数实现;而触发器则是隐含执行的PL/SQL存储程序,当执行DML操作时会触发触发器。与应用代码和触发器相比,约束不仅具有更好的性能,而且维护更加容易,所以实现数据完整性的首选方法是使用约束。 7.3.1 约束类型 1.NOT NULL约束 该约束用于指定列不能为NULL。当插人数据时,必须要为NOT NULL列提供数据。 只能在字段级定义NOT NULL约束,并且在同一个表中可以定义多个NOT NULL约束。 create table student ( sno number(5) primary key, sname varchar2(20) constraint c1 not null, sage number(3) ) ; 2.惟一约束 惟一约束用于指定列的数据不能重复。但大家需要注意,惟一约束列可以为NULL。 例如,建立部门表DEPT,要求部门名称Dname列值唯一。 create table dept ( deptno number primary key, dname varchar2(9) constraint u1 unique, loc varchar2(10) ); 注意:当指定惟一约束时,系统会自动基于惟一约束列建立索引。 5.显示区信息 当建立表时,Oracle会为表建立相应的表段。段逻辑上又是由一个或多个区组成的,而区又是由相邻的数据块所组成的,那么如何确定段包含哪些区,以及区的位置及尺寸呢?通过查询数据字典DBA_EXTENTS,可以显示区的详细信息,示例如下: select extent_id, file_id, block_id, blocks from dba_extents where owner=DEVEP and segment_name=DEPT; 其中,extent_id为区编号,file_id为区所在文件号,block_id为区的初始数据块号,blocks为区所包含的数据块个数。 6.显示行所在的实际位置 执行INSERT操作时,服务器进程会将数据插入到表段的相应数据块中,并且Oracle会生成惟一的ROWID对应于该行数据。但用户无法直接读懂ROWID,通过使用DBMS_ROWID包可以显示行所在数据文件、数据块位置以及行位置,如下所示: select deptno, dname, dbms_rowid.rowid_relative_fno(ROWID) file#, dbms_rowid.rowid_block_number(ROWID) block#, dbms_rowid.rowid_row_number(ROWID) row# from dept; 7.2 管理索引 索引的作用 索引是与表和簇相关的一种数据库对象,它的作用类似于书中的目录。在没有目录的情况下,要在书中查找指定的内容必须通读全书,而有了目录之后,只需要通过目录就可以快速地找到包含所需内容的页。合理地使用索引可以降低磁盘I/O操作次数,从而提高表的访问性能。 ROWID 在empno列上无索引 在empno列上存在索引 select * from emp where empno=7788 假定表EMP数据占用了1000个数据块,如果在EMPNO列上不存在索引,那么当执行“select * from emp where empno=7788”时需要扫描表的所有数据块,也就是说需要1000次I/O操作;如果在EMPNO列上存在索引,并假定索引层次为2,那么当执行“select * from emp where empno=7788”时,在检索了3个索引块后就可以定位到行所在的ROWID,然后根据ROWID可以直接定位到该行数据,也就是说只需要4次I/O操作。显然,使用索引可以大大提高查询速度。 2. 索引存储方式 索引与表一样,不仅需要在数据字典中保存索引的
您可能关注的文档
最近下载
- 22G101 三维彩色立体图集.docx VIP
- DB41T2454-2023 测量仪器检定校准证书有效性确认技术规范 (2).pdf VIP
- 全过程工程咨询流程.pptx VIP
- (完整版)初中物理新课标解读.pptx VIP
- 火电厂湿法脱硫脱硝石膏中氯离子的去除工艺、药品方法.pdf VIP
- 《党政主要领导干部和国有企业领导s人员经济责任审计规定》释义.doc VIP
- 2025年全国普通高校招生全国统一考试数学真题(新高考Ⅰ卷)(含答案).pdf
- T_JAASS 164-2025 零碳农业园区创建与评价技术规范.docx VIP
- 品牌代理合同范本.docx VIP
- 标准与标准化知识.ppt VIP
文档评论(0)