Oracle数据库管理第9章 视图、索引、序列、同义词

合集下载

第9章 视图与索引

第9章 视图与索引

例9.11 为scott.emp表增加一个新字段后, 对例9.8中创建的视图view1重新编译。 ALTER TABLE scott.emp ADD(c1 NUMBER); ALTER VIEW view1 COMPILE;
9.5.3 删除视图
命令格式如下: DROP VIEW view_name
判断视图中的列是否可以被更新:
根据常识,如本例中的sal 和 sal*1.2 利用下面的命令判断:
--定义各列的显示宽度
COLUMN owner format a10 COLUMN table_name format a10 COLUMN column_name format a10
注意,如果一个列已经包含了索引那么无法在该 列上再创建索引。
9.2.1 创建B树索引
B树索引是创建索引时的默认类型。
当用户为表创建主键约束时,系统将自动为该列 创建一个B树索引。 也可以使用CREATE INDEX命令创建B树索引。
例9.1 在scott.emp表的sal字段上创建一个 名为index_sal的B树索引,按字段值的降序 排列。 CREATE INDEX index_sal ON scott.emp(sal desc) TABLESPACE users;
全局分区索引
全局非分区索引
9.2 创建索引 创建索引的语法如下:
CREATE [UNIQUE | BITMAP] INDEX [schema.]<index_name> ON [schema.]<table_name> (<column_name> | <expression> ASC| DESC, <column_name>|<expression> ASC| DESC,…) [TABLESPACE <tablespace_name>] [STORAGE(<storage_settings>) [LOGGING | NOLOGGING] [NOSORT | REVERSE] [PARTITION | GLOBAL PARTITION<partition_setting>]

oracle基础知识总结

oracle基础知识总结

oracle基础知识总结Oracle是一种关系型数据库管理系统(RDBMS),常用于企业级应用程序的开发和部署。

它具有强大的数据存储和管理能力,以及高度可靠和安全的特性。

以下是对Oracle基础知识的总结。

1. Oracle架构:Oracle数据库由多个组件构成,包括实例、进程、内存结构和物理存储结构。

实例是数据库运行的一个副本,它由后台进程和共享内存所组成。

进程是用来执行具体任务的实例的子进程。

内存结构包括SGA(System Global Area)和PGA(Process Global Area),用于存储数据和共享信息。

物理存储结构包括数据文件、控制文件和重做日志文件。

2. 数据库对象:数据库对象是存储在数据库中的数据或程序的结构。

常见的数据库对象包括表、视图、索引、序列和存储过程。

表是存储数据的基本单位,由列和行组成。

视图是基于一个或多个表的查询结果的虚拟表。

索引是提高查询性能的数据结构,基于某一列或多列的值创建。

序列是用于产生唯一序号的对象。

存储过程是存储在数据库中的一组SQL语句。

3. SQL语言:SQL(Structured Query Language)是用于操作数据库的标准语言。

它包括数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)。

DDL用于创建、修改和删除数据库对象,如CREATE TABLE、ALTERTABLE和DROP TABLE。

DML用于查询和操作数据,如SELECT、INSERT、UPDATE和DELETE。

DCL用于控制数据库访问权限,如GRANT和REVOKE。

4. 数据类型:Oracle支持多种数据类型,包括字符型、数值型、日期型、布尔型和大型对象型。

常见的字符型数据类型包括CHAR和VARCHAR2,用于存储字符数据。

数值型数据类型包括NUMBER、INTEGER和FLOAT,用于存储数值数据。

日期型数据类型包括DATE和TIMESTAMP,用于存储日期和时间数据。

oracle数据库知识点总结

oracle数据库知识点总结

oracle数据库知识点总结一、概述Oracle是一种关系型数据库管理系统(RDBMS),它是由Oracle Corporation开发和维护的。

Oracle数据库具有高可用性、可扩展性、安全性和可靠性等优点,因此被广泛应用于企业级应用程序。

二、基础知识1. 数据库对象:表、视图、索引、序列等。

2. 数据类型:数值型、字符型、日期型等。

3. SQL语言:DDL(数据定义语言)、DML(数据操作语言)、DCL (数据控制语言)等。

4. 数据库事务和锁:ACID特性、并发控制、锁机制等。

三、高级特性1. 分区表:将大表分解为多个小表,提高查询效率。

2. 备份和恢复:使用RMAN进行备份和恢复,保证数据的完整性和可靠性。

3. 高可用性:使用Data Guard实现主备库切换,保证系统的连续性。

4. 性能优化:使用AWR报告进行系统调优,提高系统响应速度。

四、安全管理1. 用户管理:创建用户并分配权限,限制用户对数据库的访问权限。

2. 角色管理:创建角色并分配权限,方便对多个用户进行权限管理。

3. 数据加密:使用TDE对敏感数据进行加密,保证数据安全。

4. 审计管理:记录用户的操作行为,并进行审计分析,保证数据的安全性和完整性。

五、常见问题1. ORA错误:常见的ORA错误有ORA-00904、ORA-01017等。

2. 数据库性能问题:常见的数据库性能问题有慢查询、死锁等。

3. 数据库备份和恢复问题:常见的备份和恢复问题有备份失败、恢复失败等。

4. 安全管理问题:常见的安全管理问题有密码泄露、权限不当等。

六、总结Oracle数据库是企业级应用程序中最为流行的关系型数据库之一。

掌握Oracle数据库的基础知识和高级特性,以及安全管理和常见问题解决方法,对于保证系统稳定运行和数据安全具有重要意义。

oracle 同义词语句

oracle 同义词语句

oracle 同义词语句
同义词是指具有相同或者类似含义的词语。

在Oracle数据库中,同义词是指一个对象的替代名称,用于提供对其他用户的对象的访
问权限。

当用户没有直接访问某个对象的权限时,可以通过同义词
来间接访问该对象。

同义词的语句通常包括以下关键字和语法:
1. 创建同义词的语句:
CREATE SYNONYM synonym_name FOR object_name;
其中,synonym_name是要创建的同义词的名称,
object_name是要引用的对象的名称。

通过这个语句,可以创建一
个同义词,使得用户可以通过同义词来访问指定的对象。

2. 删除同义词的语句:
DROP SYNONYM synonym_name;
这条语句用于删除指定的同义词,使得用户不能再通过该同
义词访问对象。

3. 显示同义词的语句:
SELECT FROM ALL_SYNONYMS;
SELECT FROM USER_SYNONYMS;
这两条语句分别用于显示所有用户可访问的同义词,以及当前用户自己创建的同义词。

总的来说,同义词在Oracle数据库中起到了简化访问权限管理和提高数据安全性的作用。

通过合理使用同义词,可以更好地组织和管理数据库对象,提高数据库的可用性和安全性。

Oracle同义词详解(synonym)

Oracle同义词详解(synonym)

Oracle同义词详解(synonym)Oracle 同义词详解(synonym)⼀、Oracle同义词概念 Oracle 数据库中提供了同义词管理的功能。

同义词是数据库⽅案对象的⼀个别名,经常⽤于简化对象访问和提⾼对象访问的安全性。

在使⽤同义词时,Oracle数据库将它翻译成对应⽅案对象的名字。

与视图类似,同义词并不占⽤实际存储空间,只有在数据字典中保存了同义词的定义。

在Oracle数据库中的⼤部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。

⼆、Oracle同义词分类 Oracle同义词有两种类型,分别是公⽤Oracle同义词与私有Oracle同义词。

1)公⽤Oracle同义词:由⼀个特殊的⽤户组Public所拥有。

顾名思义,数据库中所有的⽤户都可以使⽤公⽤同义词。

公⽤同义词往往⽤来标⽰⼀些⽐较普通的数据库对象,这些对象往往⼤家都需要引⽤。

2)私有Oracle同义词:它是跟公⽤同义词所对应,他是由创建他的⽤户所有。

当然,这个同义词的创建者,可以通过授权控制其他⽤户是否有权使⽤属于⾃⼰的私有同义词。

三、Oracle同义词创建及删除 创建公有Oracle同义词的语法:Create [public] synonym 同义词名称 for [username.]objectName; Drop [public] synonym 同义词名称四、Oracle同义词的作⽤ 1) 多⽤户协同开发中,可以屏蔽对象的名字及其持有者。

如果没有同义词,当操作其他⽤户的表时,必须通过user名.object名的形式,采⽤了 Oracle同义词之后就可以隐蔽掉user名,当然这⾥要注意的是:public同义词只是为数据库对象定义了⼀个公共的别名,其他⽤户能否通过这个别名访问这个数据库对象,还要看是否已经为这个⽤户授权。

2) 为⽤户简化sql语句。

上⾯的⼀条其实就是⼀种简化sql的体现,同时如果⾃⼰建的表的名字很长,可以为这个表创建⼀个Oracle同义词来简化sql开发。

Oracle期末模拟题

Oracle期末模拟题

Oracle期末模拟题一.单选题 13分1.Oracle数据库的恢复可分为两大类:Instance recovery和media recovery,其中前者是由(A)进程自动执行的?A.SMONB.PMONC.DBWND.LGWN2.显示数据库归档模式的数据字典是(C)A.V$ACCESSB.V$SESSIONC.V$ARCHIVELOGD.V$CONTEXT3.PL/SQL不包括以下哪一部分?(C)A.DECLAREB.BEGINC.ENDD.EXCEPTION4.增加外键约束的时候加()选项可以在子表记录存在的情况下直接删除父表记录,而不用受约束的限制;在delete语句的末尾加上(),就可以实现两张表的级删除。

(B)A.ON DELETE, \B. ON DELETE CASCADE, CASCADEC. ON DELETE, CASCADED. ON DELETE CASCADE, \5. select distinct name, id from A,这句语句去重的是(A),idC.idD.都没有去重6. select id, distinct name from A,这句语句的执行情况是(D)A.对id和name同时去重B.对name去重C.执行成功,但没有去重D.会提示错误,因为distinct必须放在开头7.若关系中的某一属性组的值能唯一地标识一个元组,我们称之为(B)A.主码B.候选码C.外码D.联系8.以下不属于数据模型的三要素的是(C)A.数据结构B.数据操纵C.数据控制D.完整性约束9.在Oracle的逻辑存储结构中,(A)是最小的I/O单元。

A.块B.区C.段D.表空间10.解析后的SQL语句在SGA的哪个区域中进行缓存?(C)A.数据缓冲区B.日志缓存区C.共享池D.大池11.如果一个服务进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?(D)A.DBWRB.LGWRC.SMOND.PMON12.当数据库运行在归档模式下时,如果发生日志切换,为了保证不覆盖旧的日志信息,系统将启动如下哪个进程?(D)A.DBWRB.LGWRC.SMOND.ARCH13.如果服务器进程无法在数据缓冲区中找到空闲缓存块,以添加从数据文件中读取的数据块,则将启动如下哪一个进程?(D)A.CKPTB.SMONC.LGWRD.DBWR14.下列哪一个进程用于将修改过的数据从内存保存到磁盘数据文件中?(A)A.DBWRB.LGWRC.RECOD.ARCH15.SQL*Plus工具中,复制输出结果到文件的命令是(A)A.spollB.editC.describeD.get16.将SQL*Plus的显示结果输出到d:\data1.txt文件中的命令是(D)A.write to d:\data1.txtB.spool to d:\data1.txtC.spool on d:\data1.txtD.spoold:\data1.txt17.在SQL*Plus中执行刚输入的一条命令用(A)A.正斜杠(/)B.反斜杠(\)C.感叹号(!)D.句号(.)18.创建大文件表空间,使用(B)关键字A.temporaryB.bigfileC.undoD.blocksize19.()选项表示删除表空间的所有对象,()表示级联删除所有数据对象(C)A.including contents, including contentsB.including contents and datafiles, including contents and datafilesC.including contents, including contents and datafilesD.including contents and datafiles, including contents20.在自己的模式中创建一个新表,用户必须具有()系统权限,如果要在其他用户模式中创建表,则必须具有()系统权限。

oracle synonyms用法

oracle synonyms用法

oracle synonyms用法Oracle Synonyms 用法: 简介与用途介绍:Oracle Synonyms(同义词)是Oracle数据库中的重要功能之一。

它允许用户为表、视图、序列、过程等数据库对象创建一个替代的名称。

通过使用同义词,用户可以简化对数据库对象的引用,并提高数据库的可维护性和可扩展性。

同义词的用途:1. 数据库对象重命名:在某些情况下,我们可能需要重命名数据库对象。

然而,一旦对象的名称发生变化,已经引用这些对象的数据库程序和代码都需要进行相应的更改。

通过使用同义词,我们可以避免这种麻烦。

我们只需要将同义词与对象关联,然后对象的名称变化将不会影响到已存在的代码。

2. 简化引用:在复杂数据库结构中,对象名称可能会非常冗长和复杂。

为了方便引用,我们可以使用同义词来提供一个更简洁的名称。

这不仅方便了数据库开发人员,也提高了代码的可读性和可维护性。

3. 数据库安全与权限管理:通过同义词,我们可以实现对数据库对象的访问控制和权限管理。

我们可以使用同义词来授予或撤销用户对特定数据库对象的访问权限,同时保护数据库的安全性。

4. 数据库重构:在数据库重构的过程中,同义词可以提供一种平滑的过渡方式。

通过创建同义词,我们可以在更改数据库结构时保持代码的兼容性,并逐步迁移到新的数据库对象上。

步骤1:创建同义词使用CREATE SYNONYM语句可以创建一个同义词。

语法如下:CREATE [PUBLIC] SYNONYM synonym_name FOR object_name;其中,synonym_name是所需的同义词的名称,object_name是被同义词引用的数据库对象的名称。

示例:CREATE SYNONYM emp FOR hr.employees;以上例子创建了一个名为EMP的同义词,该同义词引用了HR.EMPLOYEES表。

一旦创建了同义词,我们就可以使用同义词而不是完整的对象名称引用表。

Oracle数据库管理与开发第9章 系统安全管理

Oracle数据库管理与开发第9章 系统安全管理

INSERT
SELECT
UPDATE
创建用户角色
创建用户角色的语法:
create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
试一试
创建一个名为designer的角色,该角色的口令为123456
创建用户
试一试
创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表 空间为temp的用户。
SQL> create user mr identified by mrsoft default tablespace users temporary tablespace temp;
安全特性
3.过程安全 过程方案的对象权限(其中包括独立的过程、函数和包)只有EXECUTE权限,将这个权限 授予需要执行的过程或需要编译另一个需要调用它的过程。 (1)过程对象。具有某个过程的EXECUTE对象权限的用户可以执行该过程,也可以编译引 用该过程的程序单元。过程调用时不会检查权限。具有EXECUTE ANY PROCEDURE系统权限的 用户可以执行数据库中的任何过程。当用户需要创建过程时,必须拥有CREATE PROCEDURE 系统权限或者是CREATE ANY PROCEDURE系统权限。当需要修改过程时,需要ALTER ANY PROCEDURE系统权限。 拥有过程的用户必须拥有在过程体中引用的方案对象的权限。为了创建过程,必须为过程 引用的所有对象授予用户必要的权限。 (2)包对象。拥有包的EXECUTE对象权限的用户,可以执行包中的任何公共过程和函数, 能够访问和修改任何公共包变量的值。对于包不能授予EXECUTE权限,当为数据库应用开发 过程、函数和包时,要考虑建立安全性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如果一个数据表中存有海量的数据记录,当对表执行指定条件的查询时。常规的查询方法会将 所有的记录都读取出来,然后再把读取的每一条记录与查询条件进行比对,最后返回满足条件的记 录。这样进行操作的时间开销和I/O开销都十分巨大的。对于这种情况,就可以考虑通过建立索引来 减小系统开销。 如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只 需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的ROWID快速找到表中对应 的记录。举个例子来说,如果将表看作一个本书,则索引的作用则类似于书中的目录。在没有目录 的情况下,要在书中查找指定的内容必须阅读全书,而有了目录之后,只需要通过目录就可以快速 找到包含所需内容的页码(相当于ROWID)。 Oracle系统对索引与表的管理有很多相同的地方,不仅需要在数据字典中保存索引的定义,还 需要在表空间中为它分配实际的存储空间。创建索引时,Oracle会自动在用户的默认表空间或指定 的表空间中创建一个索引段,为索引数据提供空间。 说明:将索引和对应的表分别放在不同硬盘的不同的表空间中能够提高查询的速度,因为Oracle能 够并行读取不同硬盘的数据,这样的查可以避免产生I/O冲突。 用户可以在Oracle中创建多种类型的索引,以适应各种表的特点。按照索引数据的存储方式可 以将索引分为B树索引、位图索引、反向键索引和基于函数的索引;按照索引列的唯一性又可以分为 唯一索引和非唯一索引;按照索引列的个数又可以分为单列索引和复合索引。
上述语句建立一个视图EMP_SALES_VIEW。因为建立视图时没有提供列别名,所以视图的列名分别 为EMPNO、ENAME、JOB和DEPTNO,用户可以通过SELECT语句像查询普通的数据表一样查询视图的信息 ,来看下面的例子。
9.1.2
管理视图
在创建视图后,用户还可以对视图进行管理,主要包括:查看视图的定义信息、修改视图定义、 重新编译视图和删除视图。 (1)查看视图定义 前面介绍过,数据库并不存储视图中数值,而是存储视图的定义信息。用户可以通过查询数据字 典视图USER_VIEWS,已获得视图的定义信息。 【例9-8】 使用desc命令查看USER_VIEWS数据字典的结构,代码如下。 本例运行结果如图9-4所示。
第9 章
本章要求:
视图、索引、序列、同义词

掌握视图对象的创建和管理 掌握索引对象的创建和维护 掌握序列对象的创建和管理 了解同义词对象
第9 章
主要内容
视图、索引、序列、同义词
1.视图对象 2.索引 3.序列 4.同义词 5.综合实例——创建多表连接视图Fra bibliotek9.1
视图对象
9.1.1 创建视图 9.1.2 管理视图
9.1.1
创建视图
创建视图是使用CREATE VIEW语句完成的。为了在当前用户模式中创建视图,要求数据库用户必 须具有CREATE VIEW系统权限;如果要在其它用户模式中创建视图,则用户必须具有CREATE ANY VIEW系统权限,创建视图最基本的语法如下:
create [or replace] view <view_name> [alias[,alias]…) ] as <subquery> [with check option] [constraint constraint_name] [with read only]
建立和规划索引时,必须选择合适的表和列,如果选择的表和列不合适,不仅无法提高查询速 度,反而会极大地降低DML操作的速度,所以建立索引必须要注意以下几点: 索引应该建立在WHERE子句频繁引用表列上,如果在大表上频繁使用某列或某几个列作为条件执 行索引操作,并且检索行数低于总行数15%,那么应该考虑在这些列上建立索引。 如果经常需要基于某列或某几个列执行排序操作,那么在这些列上建立索引可以加快数据排序 速度。 限制表的索引个数。索引主要用于加快查询速度,但会降低DML操作的速度。索引越多,DML操 作速度越慢,尤其会极大地影响INSERT和DELETE操作的速度。因此,规划索引时,必须仔细权 衡查询和DML的需求。 指定索引块空间的使用参数。基于表建立索引时,Oracle会将相应表列数据添加到索引块。为 索引块添加数据时,Oracle会按照PCTFREE参数在索引块上预留部分空间,该预留空间时为将来 的INSERT操作准备的。如果将来在表上执行大量INSERT操作,那么应该在建立索引时设置较大 的PCTFREE。 将表和索引部署到相同的表空间,可以简化表空间的管理;将表和索引部署到不同的表空间, 可以提高访问性能。 当在大表上建立索引时,使用NOLOGGING选项可以最小化重做记录。使用NOLOGGING选项可以节 省重做日志空间、降低索引建立时间、提高索引并行建立的性能。 不要在小表上建立索引。 为了提高多表连接的性能,应该在连接列上建立索引。
【例9-1】 在SCOTT模式下,创建一个查询部门编号为20的视图,代码及运行结果如下。
SQL> connect scott/1qaz2wsx 已连接。 SQL> create or replace view emp_view as 2 select empno,ename,job,deptno 3 from emp 4 where deptno = 20; 视图已创建。
图9-4 USER_VIEWS数据字典的结构 在USER_VIEWS视图中,TEXT列存储了用户视图的定义信息,即构成视图的SELECT语句,来看下面 的例子。
9.2
索引
9.2.1 9.2.2 9.2.3 9.2.4 9.2.5
索引概述 创建索引 修改索引 删除索引 显示索引信息
9.2.1
索引概述
参数说明如下: alias:用于指定视图列的别名, subquery:用于指定视图对应的子查询语句 with check option:该子句用于指定在视图上定义的CHECK约束; with read only:该子句用于定义只读视图。 在创建视图时,如果不提供视图列别名,Oracle会自动使用子查询的列名或列别名;如果视图 子查询包含函数或表达式,则必须定义列别名。下面通过若干示例说明建立和使用视图的方法。 1.简单视图 简单视图是指基于单个表建立的,不包含任何函数、表达式和分组数据的视图,下面来看一个例子。
相关文档
最新文档