我们先来看一下他们的定义:
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名。
- 浏览: 35982 次
- 性别:
- 来自: 杭州
最新评论
-
chq32:
急,android能当服务端吗
android socket
相关推荐
用于比较用户下面的表、索引,并生成同步SQL。 可以比较表、列、主键、外键、索引。
看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,需要的朋友参考下
希望能够帮助到你。
使用 sql 脚本, 建立 oracle hr schema
如果在安装ORACLE时没有安装HR schema,可以通过以下的资源对其进行创建。资源内包含了创建HR用户所需要的.sql档和具体操作说明。 路径可以根据自己的实际情况进行修改。
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 ...
sample_schema_scripts Oracle 数据库 示例方案脚本(含结构+数据脚本) 安装Oracle时未勾选“示例方案”可执行该脚本创建对应数据库
oracle创建表,索引,表空间,触发器,schema用户,序列的Sql文
3.在这边点击 Executables,在Export Dump:和Import Dump:中分别输入Oracle安装路径\product\10.1.0\db_3\BIN\expdp.exe,Oracle安装路径\oracle\product\10.1.0\db_3\BIN\impdp.exe,点 OK 4.进入 Database|Export|...
Oracle HR hr_main Oracle Example Schema
Oracle database 10g SQL开发指南中 store模式下的store_schema脚本 相应的本书的pdf电子书也在我的上传资源中,需要的可以去下载!
在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如...
Oracle9i数据类型Java数据类型Schema类型对比
Oracle DB比较程序,此脚本将比较Oracle数据库版本7.3.4 +中的架构。 用Perl和平台独立编写,报告映射的SchemaName中的所有差异。 输出HTML或ASCII(不久后为XML)(带有TK接口的版本)
oracle 10g的hr_schema,可以导进11g以上进行练习
Oracle Solaris 9 - Schema Reference iPlanet Directory Server-164
我现在想从我的存储过程中使用其他 schema 表来执行 SQL 语句。存储过程是一个 Schema,表是在另一个 Schema。 但 是 这 样 做 的 结 果 是 出 现 了 “ORA-01031: ...答:你的两个 Schema 是在同一个 Oracle 实
主要介绍了Oracle数据库中的对象集合schema,是Oracle数据库入门学习中的基础知识,需要的朋友可以参考下