学习Oracle从哪里入手呢,在这里,我将带你走进Oracle的大门,一天一章,7天入门不是梦
1. 同义词
1.1方案
方案是数据库对象的集合,为了区分各个集合,需要给集合命名,其名称即为方案名
方案中包含各种对象,如表、视图、索引、同义词、序列、数据库链接等对象
一般情况下,一个用户对应一个方案,在创建用户的同时为该用户创建一个与用户名同名的方案,并作为该用户的缺省方案
如果访问一个表时没有指明该表属于哪一个用户方案,则系统将会自动地在访问表前加上缺省的方案名
数据库中一个对象的完整名称为“方案名.对象名”,而不是“用户名.对象名”
1.2 同义词概述
同义词是方案对象的一个别名,常用于简化对象和提高对象访问的安全性
同义词并不占用实际存储空间,只在数据库字典中保存同义词的定义
可以创建同义词的对象主要包括表、视图、同义词、序列、存储过程等对象
Oracle中可以创建两种类型的同义词:公用同义词和方案同义词
1.3 公用同义词与方案同义词
公用同义词(public synonym)
公用同义词由一个特殊的用户组PUBLIC所拥有,数据库中所有的用户都可以使用公用同义词
SYS用户创建的数据字典视图就是公用同义词的示例
方案同义词(schema synonym)
方案同义词由创建它的用户所拥用,也称为私有同义词(private synonym),用户可以控制其他用户是否有权使用属于自己的方案同义词
方案同义词常在应用开发中使用,为应用开发提供命名上的解决方案
当代码引用一个未限定的表、视图、同义词、序列、函数等对象时,Oracle会按以下顺序来查看这3个位置是否有被引用的对象
当前用户拥有的对象
由当前用户拥有的一个方案同义词
公用同义词
如果在这3个地方都没有找到该对象的名称,将会出现错误提示,如“ORA-00942:表或视图不存在”
1.4 创建同义词
创建方案同义词
需要在自己的方案中创建方案同义词时,用户必须具有CREATE SYNONYM系统权限
需要在其他的方案中创建方案同义词时,用户必须具有CREATE ANY SYNONYM系统权限
语法
CREATE [OR REPLACE] SYNONYM synonym_name [schema.]object;
其中,OR REPLACE表示如果同义词已经存在,将重新覆盖新建同义词
创建同义词
创建公用同义词
需要创建公用同义词时,用户必须具有CREATE PUBLIC SYNONYM系统权限
语法
CREATE [OR REPLACE] PUBLIC SYNONYM synonym_name [schema.]object;
1.5 使用同义词
使用方案同义词
使用方案同义词可分为方案用户使用和其他用户使用
方案用户使用自己的方案同义词
方案用户具有对象的所有权限,所以可以像使用原对象一样使用该对象的同义词
使用同义词
使用公用同义词
与方案同义词不同,如果使用公用同义词来访问其他方案中的对象,就不需要在该公用同义词前面添加方案名
如果用户没有被授予访问该公用同义词所引用的对象的对象权限,仍然不能使用该公用同义词
其他用户使用另一个用户创建的方案同义词
在方案同义词前面加上方案名作为前缀的方式来使用其他用户所创建的方案同义词
通过自己的方案同义词访问其他方案中的对象
通过在自己的方案中创建指向其他方案中对象的方案同义词
1.6 删除同义词
删除同义词后,同义词所引用的基础对象不会受影响
删除方案同义词
用户能够删除自己方案中的任何方案同义词,但若需要删除其他用户方案中的方案同义词,必须拥有DROP ANY SYNONYM系统权限
语法
DROP SYNONYM synonym_name
删除公用同义词
需要删除公用同义词时,用户必须具有DROP PUBLIC SYNONYM系统权限
语法
DROP PUBLIC SYNONYM synonym_name
2. 序列
2.1 序列概述
序列(SEQUENCE)是一个命名的顺序编号生成器,它能以串行的方式生成一系列顺序整数
与视图、约束相似,序列也不占用实际的存储空间,而只在数据字典中保存序列的定义
引入序列的理由或序列的主要用途
主键、外键值应用需求
流水号应用需求
序列的生成与定义的内容
2.2 创建序列
需要在自己的方案中创建序列时,用户必须具有CREATE SEQUENCE系统权限
需要在其他的方案中创建序列时,用户必须具有CREATE ANY SEQUENCE系统权限
2.3 使用序列
NEXTVAL和CURRVAL列
NEXTVAL列返回序列生成的下一个值
CURRVAL列返回序列生成的当前值
序列的初始化
在第一次引用CURRVAL列之前,必须引用过一次NEXTVAL列,用于初始化序列的值,否则会出现错误提示
2.4 更改序列
需要更改自己方案中的序列时,用户必须具有ALTER SEQUENCE系统权限
需要更改其他方案中的序列时,用户必须具有ALTER ANY SEQUENCE系统权限
不能修改序列中的起始值,如果要修改起始值,必须删除序列再重建
更改序列包括
修改MAXVALUE和MINVALUE
修改INCREMENT增量值
修改缓存中的序列的数目
语法:
ALTER SEQUENCE sequnce_name
[INCREMENT BY n2]
[{MAXVALUE n3 | NOMAXVALUE}]
[{MINVALUE n4 | NOMINVALUE}]
[{CACHE n5 | NOCACHE}]
[{CYCLE | NOCYCLE}]
需要删除自己方案中的序列时,用户必须具有DROP SEQUENCE系统权限
需要删除其他方案中的序列时,用户必须具有DROP ANY SEQUENCE系统权限
语法
DROP SEQUENCE sequence_name
2.5 删除序列
需要删除自己方案中的序列时,用户必须具有DROP SEQUENCE系统权限
需要删除其他方案中的序列时,用户必须具有DROP ANY SEQUENCE系统权限
语法
DROP SEQUENCE sequence_name
3. 视图
3.1视图概述
视图(VIEW)是由SELECT子查询语句定义的一个逻辑表,只有定义而无数据,是一个“虚表”
视图是查看和操作表数据的一种方法
视图的优点
提供各种数据表现形式
提供某些数据的安全性
隐藏数据的复杂性
简化查询语句
执行特殊查询
保存复杂查询
3.2 创建视图
需要在当前方案中创建视图时,用户必须具有CREATE VIEW系统权限
需要在其他方案中创建视图时,用户必须具有CREATE ANY VIEW系统权限
视图的拥有者必须被明确授予访问在视图定义中所参考的所有基础对象的权限
语法:
CREATE [OR REPLACE] [FORCE] VIEW view_name
[(alias1,alias2..)]
AS select_stat