我们先来看一下他们的定义:
A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
Schemas and users help database administrators manage database security.
从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
咳,说了这么多,给大家举个例子,否则,一切枯燥无味!
SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott');
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST
--上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。
- 浏览: 38525 次
- 性别:
- 来自: 杭州
最新评论
-
chq32:
急,android能当服务端吗
android socket
相关推荐
用于比较用户下面的表、索引,并生成同步SQL。 可以比较表、列、主键、外键、索引。
在Oracle数据库中,Schema是一个非常重要的概念,它代表了数据库对象的集合,这些对象包括但不限于表格、视图、序列、存储过程、同义词、索引、簇和数据库链接等。Schema是逻辑结构,直接与数据库的数据相关,帮助...
"Oracle数据库用户和Schema概念详解" Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、...
- **HTML Schema Doc Generator**:提供了HTML模式文档生成器的使用方法。 - **Master/Detail Browser**:讲解了主/明细浏览器的使用方法。 - **Reports Manager**:提供了报告管理器的使用方法。 - **Reporting ...
Oracle HR Schema是一个经典的示例数据库,它主要用于演示和学习Oracle数据库在人力资源管理(HRM)领域的应用。这个schema包含了各种与员工、部门、职位等相关的信息,是初学者和专业人士了解Oracle数据库特性的...
oracle之Schema.doc
### Toad for Oracle 的 Data Dump 导入与导出功能详解 #### 一、Data Dump 导出(Export) 在数据库管理与维护过程中,经常需要对数据库中的数据进行备份或迁移。Toad for Oracle 提供了一种高效且方便的数据导出...
如果在安装ORACLE时没有安装HR schema,可以通过以下的资源对其进行创建。资源内包含了创建HR用户所需要的.sql档和具体操作说明。 路径可以根据自己的实际情况进行修改。
在Oracle数据库中,"方案"(Schema)是一个非常关键的概念,它相当于数据库中的一个用户空间,包含了该用户的所有对象,如表、视图、索引、存储过程等。在本压缩包"sample_schema_scripts"中,包含了一系列用于创建...
created by running the Python script [create_schema.py][1]. The script requires SYSDBA privileges and will prompt for these credentials as well as the names of the schemas and edition that will be ...
5. **创建Schema用户**:Schema在Oracle中是逻辑上的数据库对象集合,通常与一个特定的数据库用户关联。使用`CREATE USER`创建用户,`GRANT`权限: ```sql CREATE USER MyUser IDENTIFIED BY password; GRANT ...
oracle中schema指的是什么意思.doc
Oracle database 10g SQL开发指南中 store模式下的store_schema脚本 相应的本书的pdf电子书也在我的上传资源中,需要的可以去下载!
Oracle不支持SQL标准的INFORMATION_SCHEMA数据字典。 该项目创建一个information_schema模式,并添加符合SQL标准的视图。 这些视图是SQL和PL / SQL,它们建立在Oracle数据字典上。
在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如...
Oracle HR Schema是一个经典的数据库示例,它主要用于演示和学习Oracle数据库在人力资源管理场景下的应用。这个例子包含了模拟公司员工、部门、职位等信息的数据结构,是Oracle数据库新手和专业人士进行练习和测试的...
Oracle9i 数据类型、Java 数据类型以及 Schema 类型之间的对比主要关注它们在存储和处理数据时的差异。这些数据类型是编程和数据库管理中的基础,理解它们的关系对于开发与数据库交互的应用程序至关重要。 1. ...
《FoodMart Schema for Oracle:构建数据仓库的基石》 在数据仓库领域,FoodMart Schema是一个经典的数据模型示例,常用于教学和实践。这个模型由著名的数据仓库专家Kimball集团设计,是展示多维数据模型(维度建模...
本文将详细讲解如何利用SpringBoot整合Oracle数据库实现双数据源的配置和使用,帮助开发者构建可扩展、高可用的应用系统。 首先,我们需要理解"双数据源"的概念。双数据源意味着应用程序可以同时访问两个不同的...