4.2 用户模式
视频讲解:光盘\TM\lx\4\用户模式.mp4
在Oracle数据库中,为了便于管理用户所创建的数据库对象(如数据表、索引、视图等),引入了模式的概念,这样某个用户所创建的数据库对象就都属于该用户模式。下面将对用户模式的概念及其实例应用进行讲解。
4.2.1 模式与模式对象
模式是一个数据库对象的集合。模式为一个数据库用户所有,并且具有与该用户相同的名称,如SYSTEM模式、SCOTT模式等。在一个模式内部不可以直接访问其他模式的数据库对象,即使在具有访问权限的情况下,也需要指定模式名称才可以访问其他模式的数据库对象。
模式对象是由用户创建的逻辑结构,用以存储或引用数据。例如,前面章节中所讲过的段(如表、索引等),以及用户所拥有的其他非段的数据库对象。这些非段的数据库对象通常包括约束、视图、同义词、过程以及程序包等。
简而言之,模式与模式对象之间的关系就是拥有与被拥有的关系,即模式拥有模式对象;而模式对象被模式所拥有。
注意
一个不为某个用户所拥有的数据库对象就不能称之为模式对象,比如角色、表空间及目录等数据库对象。
4.2.2 示例模式SCOTT
为了便于后面章节的讲解,这里介绍一个典型的示例模式—SCOTT模式,因为该模式及其所拥有的模式对象在本书中经常被作为示例。
Oracle提供的SCOTT模式的目的,就是给用户提供一些示例表和数据来展示Oracle数据库的一些特性。SCOTT模式拥有的模式对象(都是数据表)如图4.1所示。
图4.1 SCOTT模式拥有的模式对象
该模式演示了一个很简单的公司人力资源管理的数据结构,它也是Oracle的各个版本中一直在沿用的示例模式(当然Oracle 11g还有很多其他示例模式,这里因篇幅限制,只介绍这个经典的模式),该用户模式的连接密码为tiger。通过连接到SCOTT用户模式,查询数据字典视图USER_TABLES可以获得该模式所包含的数据表,共计4个。
【例4.5】 在SCOTT模式下,通过检索user_tables表来显示SCOTT模式所拥有的4个数据表,代码如下(实例位置:光盘\TM\sl\4\4)。
SQL> connect scott/tiger 已连接。 SQL> select table_name from user_tables;
本例运行结果如图4.2所示。
图4.2 显示SCOTT模式中的表
另外,用户也可以在SYSTEM模式下查询SCOTT模式所拥有的数据表,但要求使用dba_tables数据表。
【例4.6】 在SYSTEM模式下,通过检索dba_tables表来显示SCOTT模式所拥有的4个数据表,代码如下。
SQL> connect system/1qaz2wsx 已连接。 SQL> select table_name from dba_tables where owner ='SCOTT';