Oracle数据库管理第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是一种关系型数据库管理系统(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是一种关系型数据库管理系统(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数据库中,同义词是指一个对象的替代名称,用于提供对其他用户的对象的访
问权限。
当用户没有直接访问某个对象的权限时,可以通过同义词
来间接访问该对象。
同义词的语句通常包括以下关键字和语法:
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同义词概念 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期末模拟题一.单选题 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数据库中的重要功能之一。
它允许用户为表、视图、序列、过程等数据库对象创建一个替代的名称。
通过使用同义词,用户可以简化对数据库对象的引用,并提高数据库的可维护性和可扩展性。
同义词的用途: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章 系统安全管理
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权限,当为数据库应用开发 过程、函数和包时,要考虑建立安全性。
索引与同义词
3
索引与同义词
学习目的
您能想象在书店或是图书馆中,所有书都堆积在 一排接一排的书架上,排列得杂乱无章吗?要想 找到您需要的书,唯一的办法就是逐排检查书架 上的每一本书!您是不是也觉得这么做非常没有 效率?您可能惊讶地发现从数据库中检索数据就 如同查找一排又一排的书。每一项查询都会执行 全表扫描。
sdp_s12_l04_a01
版权所有 © 2007,Oracle。保留所有权利。
19
索引与同义词
讲述/示范
使用 UPPER(column_name) 或 LOWER(column_name) 关键字定义的基于函数的 索引允许进行不区分大小写的搜索。 如果不知道雇员的姓氏是以大写还是小写形式输入 到数据库中,仍然可以通过在 SELECT 语句中输入 大写形式来使用索引。 使用 WHERE 子句中的表达式修改查询时,不能使用 索引,除非创建与该表达式匹配的基于函数的索引。
版权所有 © 2007,Oracle。保留所有权利。
12
索引与同义词
讲述/示范
何时不应创建索引(续) 在以下情况下,通常不值得创建索引: • • • • • 表太小 列没有频繁被用作查询条件 预计多数查询会检索表中超过 2%-4% 的行 表更新频繁 表达式的一部分引用了被索引的列
版权所有 © 2007,Oracle。保留所有权利。
版权所有 © 2007,Oracle。保留所有权利。
2
索引与同义词
学习内容
在本课中,您将学习: • • • • 查询数据字典以确认索引是否存在 构建并执行基于函数的索引,该索引允许执行 区分大小写的搜索 构建同义词并使用数据字典确认同义词的定义 构建并执行 DROP SYNONYM 语句
版权所有 © 2007,Oracle。保留所有权利。
Oracle 数据库对象_序列_索引_视图_同义词
查看序列情况
SELECT s_test.currval FROM dual; SELECT s_test.nextval FROM dual;
删除序列
删除序列使用DROP SEQUENCE语句
例如,删除s_test3序列
DROP SEQUENCE s_test3;
执行效果如下图所示:
索引介绍
使用序列填充主键-2
查询插入结果
SELECT * FROM order_status2;
查询结果如图所示
注意
Hale Waihona Puke 当使用序列填充主键列时,通常应使用NOCACHE避免序列产生的数 值发生遗漏(数值产生遗漏是因为缓存数值时,数据库被关闭)。然 而,使用NOCACHE虽然会降低性能。但是如果不介意主键值产生遗 漏,可以再考虑使用CACHE。
案例
使用默认选项创建序列
CREATE SEQUENCE s_test;
说明
创建序列忽略了其他选项,那么将会使用默认值。 start_num和increment_num都是1
指定相关选项创建序列
CREATE SEQUENCE s_test2 START WITH 10 INCREMENT BY 5 MINVALUE 10 MAXVALUE 20 CYCLE CACHE 2 ORDER;
说明
minimum_num:序列中的最小值,该值必须比start_num小,比 maximum_num也要小 NOMINVALUE:对于序列最小值,不指定最小值,对于升序最小值是1 ,对于降序最小值是-1026 CYCLE:对于序列的值达到最大值或最小值时的处理方法。如果是升序 达到最大值了,那么下一个生成的值将是最小值;如果是降序达到最小值 时,那么下一个值将是最大值。 NOCYCLE:当序列的值达到最大或最小值时,序列将不再产生任何数值 。默认是NOCYCLE。
查看Oracle当前用户下的(表视图,同义词...)
查看Oracle当前⽤户下的(表视图,同义词...)查看Oracle当前⽤户下的信息(⽤户,表视图,索引,表空间,同义词,存储过程函数,约束条件)0、表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看⽤户下所有的表 SQL>select * from user_tables; 1、⽤户 查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 显⽰当前会话所具有的权限 SQL>select * from session_privs; 显⽰指定⽤户所具有的系统权限 SQL>select * from dba_sys_privs where grantee='GAME'; 2、表 查看⽤户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0; 查看某表的创建时间 SQL>select object_name,created from user_objects where object_name=upper('&table_name'); 查看某表的⼤⼩ SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name'); 查看放在ORACLE的内存区⾥的表 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0; 3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper('&index_name'); 查看索引的⼤⼩ SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name'); 4、序列号 查看序列号,last_number是当前值 SQL>select * from user_sequences; 5、视图 查看视图的名称 SQL>select view_name from user_views; 查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩ SQL>select text from user_views where view_name=upper('&view_name'); 6、同义词 查看同义词的名称 SQL>select * from user_synonyms; 7、约束条件 查看某表的约束条件 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name'); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE'; 查看函数和过程的源代码 SQL>select text from all_source where owner=user and name=upper('&plsql_name');9、查看建表语句:SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_NAME')FROM DUAL; (表名TABLE_NAME⼀定要来⼤写)。
数据库术语
数据库术语
1. 数据库(Database):具有一定结构,可按照一定的方式描述,并存储在计算机中的有组织的数据集合。
2. 数据库管理系统(Database Management System,DBMS):管理、访问和操作数据库的软件系统,是介于用户和数据库之间的接口程序。
3. 表(Table):一种数据存储结构,由若干行和若干列组成。
每一列包含某一类数据,每一行描述一个实例。
4. 列(Column):表的纵向结构,用于存储同一类数据。
5. 行(Row):表的横向结构,用于描述同一实例的数据。
6. 主键(Primary Key):唯一标识每个表中的行,确保每个实例的数据是唯一的,通常是一个或多个列。
7. 外键(Foreign Key):一列或一组列,用来描述一个表与另一个表之间的联系。
8. 索引(Index):一种数据结构,可加快数据检索的速度。
9. 视图(View):一种虚拟表,不存储实际数据,是基于一个或多个表的查询结果组成的。
10. 存储过程(Stored Procedure):一段经过编写、编译、并存储在数据库中的SQL代码,可被多次调用,用于简化复杂的数据操作。
11. 事务(Transaction):一组数据库操作,逻辑上是一个整体,要么全部执行,要么全部不执行。
12. 触发器(Trigger):在数据库发生某些事件时自动执行的一段SQL代码。
常用于数据约束和数据管理。
Oracle同义词详细介绍
Oracle同义词Oracle数据库中提供了同义词管理的功能。
同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。
在使用同义词时,Oracle 数据库将它翻译成对应方案对象的名字。
与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。
在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、函数、JAVA类、包等等,数据库管理员都可以根据实际情况为他们定义同义词。
通过Oracle数据库同义词管理,可以给数据库管理员与应用程序开发人员带来不少惊喜。
惊喜一:应用程序开发可以不管数据库的具体对象名。
在应用程序中,要不断的调用Oracle数据库的对象,如表、视图、对象等等。
为此,在管理软件开发的过程中,若应用程序已经完成了某部分功能的开发。
此时,数据库管理员若一定需要更改某个数据库对象的命名。
那么,此时应用程序也需要调整。
这在实际工作中,会很不方便。
特别是有些应用程序如果提供了功能自定义平台的话,会非常的麻烦。
如在一个ERP软件中,有报表自定义功能。
在系统中,原来就有一张供应商产品明细表。
但是,用户觉得这张报表信息不够齐全。
用户希望能够显示出某个零件所对应的成品。
此时,用户可以更改原有的数据库对象来完成这个自定义。
但是,这往往不被建议这么做。
因为若不小心修改错误,那么就很难再修改回来。
所以自定义平台中,若需要对原有报表进行比较大的变更时,往往建议用户另外建立一个视图,来收集自己所需要的信息。
若这么做的话,那么用户不仅需要定义数据库对象,而且还要重新调整前台应用程序的报表格式。
显然这工作量有多大。
而现在有了同义词功能的话,这一切都会变得方便。
因为前台应用程序可以不用作调整,而只需把数据库对象同义词进行重新定义即可。
这既保障了前台应用程序的可恢复性;同时也降低了工作量。
这就是Oracle数据库同义词给我们带来的第一个惊喜。
惊喜二:避免应用程序直接访问数据库对象,提高数据库安全性。
Oracle基本术语大全
Oracle基本术语大全Oracle基本术语大全Oracle数据库系统是一个复杂的软件系统。
如果不了解其内部的结构原理及关系,就不可能设计和编写出高质量的应用软件系统,也不可能管理好一个复杂的应用系统。
为了帮助大家了解更多Oracle数据库知识,下文简要给出 ORACLE 8 /i数据库系统结构的描述。
§2.1 术语数据库块(BLOCK)ORACLE 数据库中的最小存储和处理单位,包含块本身的头信息数据或PL/SQL代码。
ORACLE 块的大小是可以在安装时选择“自定义安装”来指定,也可以在CREATE E创建数据库实例时指定。
其最小为2K,最大可达为64K.瓶颈(Bottleneck)指限制系统性能的部件。
面向对象的关系数据库具有关系数据库的全部功能,同时又支持面向对象的数据库,称作面向对象关系数据库系统。
Oracle7是一种功能完备的关系数据库系统;oracle8是一种面向对象的关系数据库系统。
客户/服务器结构(Client/Server)有客户机、服务器、网络三要素的结构,客户机(PC机)通过网络与服务器相连和工作。
胖客户机(Fat Client)一般的Client/Server结构中的客户机均为胖客户机。
因为这些客户机需要配置较高的设备,如内存、硬盘、主频、CD_ROM等。
瘦客户机(Thin Client)也称作NC(网络计算机),是一种内存配置小(过去指一般只有4M,现无法定义),无硬盘,只有处理心片的处理机。
数据在线分析处理(OLAP)是一种能以快速、交互、方便的方式洞察数据情况的技术。
如Oracle E某press,Cognos(加拿大)的Power Play, Business Objects公司的Business Object 等。
多线程(MTS)一个用户可以同时运行多个程序对数据库进行访问,比如Visual C/C++可以提供同时启动多个进程,而Visual Basic则不能。
oracle同义词概念及其作用
oracle同义词概念及其作用同义词在Oracle数据库中起到了很重要的作用。
它能够提供更加灵活的数据访问方式,方便了数据库的管理和查询。
本文将详细介绍Oracle同义词的概念以及其作用。
一、同义词概念同义词是指在数据库中为一个或多个对象(如表、视图、序列等)起一个别名,也就是给它们取一个更加直观、易记的名字。
同义词是数据库对象的另一种名字,通过使用同义词,我们可以在数据库中以不同的名字来访问相同的对象。
在Oracle数据库中创建同义词非常简单,只需要使用CREATE SYNONYM语句并指定别名即可。
例如,我们可以通过以下语句创建一个名为"EMPLOYEE"的同义词,指向真正的"EMPLOYEE_INFO"表:CREATE SYNONYM EMPLOYEE FOR EMPLOYEE_INFO;二、同义词的作用1.简化表名同义词的一个主要作用是简化表名的访问。
在复杂的数据库结构中,表名可能会非常长,记忆和输入起来都比较麻烦。
通过使用同义词,我们可以将复杂的表名简化成一个易于记忆和书写的名字,提高数据库管理的效率。
2.提高安全性同义词可以起到一定的安全作用。
通过设置权限,我们可以控制用户对同义词的访问权限,而不是直接对数据库中的对象进行授权。
这样一来,就可以更好地保护敏感数据,提高数据库的安全性。
3.简化SQL语句使用同义词可以简化SQL查询语句。
通过给对象起一个简短的同义词,我们可以减少SQL语句的长度,提高查询效率。
此外,当数据库结构发生变化时,只需要修改同义词的指向,而不需要修改所有引用到该对象的SQL语句,从而减少了维护工作量。
4.实现跨用户的数据访问在Oracle数据库中,不同的用户可能对同一张表感兴趣。
使用同义词可以实现跨用户的数据访问,即一个用户可以通过同义词来访问另一个用户的表,而无需直接访问其他用户的对象。
这既能简化用户的操作,又能提高数据的安全性。
oracle中同义词的概念及作用
oracle中同义词的概念及作用Oracle同义词,也称作Oracle义原,是Oracle数据库中使用的一种对象,可以在Oracle数据库中引用一组表或索引,拥有类似表或索引的功能,很多时候用来替换其他对象的名称。
开发者可以利用Oracle同义词完成一些复杂的开发任务,如查询、存储过程等。
首先,开发者可以使用Oracle同义词进行简单的查询任务。
比如,假设你需要查询一个大表,但由于表的大小及其他原因,需要经常在不同的数据库中进行查询,因此你可以在不同的数据库中创建Oracle同义词,它可以指向该大表,这样每次都可以使用它来查询该表。
其次,Oracle同义词的功能还可以用于数据库迁移。
当数据库从一个版本迁移到另外一个版本时,一些表或索引的名称或是结构可能已经发生了变化,但是可以利用Oracle同义词来避免数据库迁移过程中,对程序代码的修改。
此外,Oracle 同义词还可以用于处理存储过程中的复杂任务。
例如,在存储过程中,你需要从一个大表中获取一些数据,但是由于表太大,可能会有性能问题,你可以创建一个Oracle 同义词,把表名称改为“大表”,这样既可以提高性能又能节约时间。
最后,Oracle同义词还可以用来实现一些额外的功能,比如保留历史版本的表或索引,并通过更新Oracle 同义词来切换不同版本的表或索引。
总之,Oracle同义词虽然只是一个简单的对象,但它具有多种用途,对于简化各种复杂的开发任务,保留历史版本的表索引等都有很大的帮助。
最后,使用以下代码来创建一个Oracle 同义词:—创建同义词CREATE SYNONYM syn_mytable FOR mytable; —使用同义词SELECT * FROM syn_mytable;。
oracle实验9-10 索引与视图,序列和同义词的创建
oracle实验9-10 索引与视图,序列和同义词的创建一、实验目的1.理解索引的概念和类型。
2.掌握创建索引的命令。
3.理解视图的概念和优点。
4.理解可更新视图应具备的特点。
5.掌握创建一般视图和可更新视图的命令。
6.理解序列和同义词的概念和作用。
7.掌握序列的创建与应用。
8.掌握同义词的创建与应用。
二、实验内容1.在数据库中创建Student表,包括学号Id、姓名Name、性别Sex、班级编号Class_id。
利用该表创建如下索引:(1)在Id字段上创建唯一的B树索引。
(2)在Name字段上创建普通的B树索引。
(3)在Sex 字段上创建位图索引。
语句:--建表:create table Student(Id char(6),Name varchar2(8),Sex char(2),Class_id char(4));create unique index index_id on Student(Id);create index index_name on Student(Name);create bitmap index index_sex on Student(Sex);截图:2.利用scott.emp 表创建视图并完成以下操作:(1)创建简单视图。
语句:conn scott/tiger;grant insert,update,delete on emp to system; conn system/orcl1234;create or replace VIEW v_empasselect empno,ename,job,hiredate,deptnofrom scott.emp;截图:(2)查看视图的结构。
语句:SQL> desc v_emp;截图:(3)从视图中查询数据。
语句:SQL> select * from v_emp where deptno=10;截图:(4)查看视图中各字段的可更新性。
Oracle 11g基础第9章 序列与同义词
,默认是20,即存放20个序列值。
9.1.1 创建序列(续)
【例9-1】创建序列seq_test,初值是1, 最大值100,步长是1。
9.1.2 使用序列
1、获取序列的当前值 sequence_name.CURRVAL
2、获取序列中的下一个值 sequence_name.NEXTVAL
值。 3)为售楼信息表创建公有同义词,并使用该同
义词查询数据,最后再将其删除。
9.2.3 删除同义词
基本语法:
DROP SYNONYM synonym_name; – synonym_name是同义词名称
【例9-6】删除同义词house
习题
1.填空题 1)获__。
2)定义递减序列,步长值需要设置为 _____________。
9.2 同义词
9.2.1 创建同义词 9.2.2 使用同义词 9.2.3 删除同义词
9.2.1 创建同义词
在数据库中的表、索引、视图或者其他模式对象 ,都可以将其定义一个同义词,方便调用。特别 是在远程连接数据库时。
[OR REPLACE]:用于重新创建同名的同义词。 [PUBLIC]:创建公用的同义词,供所有用户使用。 sysnonym_name:同义词的名称。
3)在使用专用同义词时,如果使用其他用户登 录,必须在该同义词前面加上__________。
2.简答题 1)序列的作用是什么? 2)查看序列的数据字典视图是什么? 3)公用同义词与专用同义词的区别是什么?
习题
3.操作题 1)分别创建一个递增序列和一个递减序列。 2)分别获得上面递增序列和递减序列的第一个
第9章 序列与同义词
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.简单视图 简单视图是指基于单个表建立的,不包含任何函数、表达式和分组数据的视图,下面来看一个例子。