数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema。
官方定义如下:
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的),在创建一个用户的同时为这个用户创建一个与用户名同名的schema并作为该用户的缺省schema。即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> grant 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的别名的依据。实际上在使用上,schema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。
分享到:
相关推荐
本文介绍了information_schema数据库的三张重要的表"schemata"、“tables”和“columns”在SQL注入中的应用思路。
information_schema数据库是在mysql的版本5.0之后产生的,一个虚拟数据库,物理上并不存在。information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型...
希望能够帮助到你。
NULL 博文链接:https://sunjin.iteye.com/blog/521820
数据库 schema含义
原创Matlab通过ODBC的方式调用数据库-CreateSchema.m 以下内容为Matlab中文论坛会员,Godman原创。 如果需要转载,请联系Godman会员: 如有疑问可以邮件联系 tntuyh@163.com Godman 2009.3.30 晚 Good ...
在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如...
datanamic DB_Schema_Difftective 数据库结构升级脚本制作工具 自动比较 数据库结构差异, 生成DDL脚本 支持多种数据库,数据库结构升级脚本制作的理想工具。 支持oracle, sql server, db2, informix, my sql 。。。...
mysql数据库中创建sakila-schema数据库例子的源代码,是学习操作数据库的最好例子。很好很实用。
一、基本数据 本文列举了一个食品族谱的例子进行讲解,通过类别、颜色和品种组织食品,树形结构图如下:二、继承关系驱动的Schema设计 对树形结构最直
sample_schema_scripts Oracle 数据库 示例方案脚本(含结构+数据脚本) 安装Oracle时未勾选“示例方案”可执行该脚本创建对应数据库
dubbo_schema从dubbo-user-book爬下来的数据,我将数据存到了mysql数据当中,我转存了数据库结构和数据,只要将改文件导入数据库即可,之后自己可以写代码将数据导入到excel中
XML Schema是XML的Schema语言,用来描述XML文档的合法结构、内容和...以科学数据库元数据标准建设为背景,介绍了XML Schema及其在科学数据库元数据互操作中的应用情况,并展望了科学数据库元数据互操作研究的发展方向。
主要介绍了Oracle数据库中的对象集合schema,是Oracle数据库入门学习中的基础知识,需要的朋友可以参考下
mysql 性能调优与架构设计 数据库Schema 源码
schema 数据库 sql 简单的建表和对数据库的增删查改
新装的mysql里面有两个数据库:information_schema 和 mysql 。他们是干么用的?可以删除么?...mysql数据库中的 information_schema (17)是个什么啊?可以删掉吗?如果删除了会怎么样?比如一个cm
Schema_Workbench, Pentaho 的相关工具,在关系型数据库基础上建立dimension 和cube, 以及如何利用这些cube产生一个报表或图表。
SQL语句解释大全--从数据库表中检索数据行和列 INSERT --向数据库表...DROP SCHEMA --从数据库中删除一个模式 CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域