`

数据库中的Schema

 
阅读更多

     本文转载自:http://blog.sina.com.cn/s/blog_64d591e80100oxr3.html

     官方定义如下:   

      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名。

---------------------------------------------------------------------------------

 

---------------------------------------------------------------------------------

在 SQL Server 2000 和早期版本中,数据库可以包含一个名为“架构(schema)”的实体,但此实体实际上是数据库用户。 在 SQL Server 2005 和 SQL Server 2008 中,架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部。这些实体就像嵌套框放置在一起。服务器是最外面的框,而架构是最里面的框。 在 SQL Server 2005 和 SQL Server 2008 中,提倡"用户和架构分离",即一个用户可以对应多个架构,一个架构也可以对应多个用户,所以架构和user就不再需要同名了.系统可以赋予某个user访问某个架构的权限,也可以取消该权限.

分享到:
评论

相关推荐

    树形结构的数据库表Schema设计1

    在数据库设计中,树形结构是一种常见的数据组织方式,它被广泛应用于表示层次关系,例如组织结构、分类系统等。本文以食品族谱为例,探讨如何在关系型数据库中存储和操作树形结构数据。 首先,最基本的树形结构设计...

    数据库的catalog与schema

    在数据库管理中,Catalog(目录)和Schema(模式)是两个非常重要的概念,它们构成了数据库组织和管理的基础。本文将深入探讨这两个概念,以及它们在实际应用中的作用。 首先,让我们来理解什么是Catalog。在数据库...

    数据库 schema含义 .doc

    而不是 User】,其实 User 是对应于数据库的(即 User 是每个对应数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个 Schema(房间)的权利,就是说每个数据库映射的 User 有每个 Schema...

    oracle中schema指的是什么意思

    在数据库操作中,用户不仅可以拥有一个默认的Schema,还可以访问其他Schema中的对象。这类似于用户可以拥有一个默认的表空间,但也可以选择将对象存储在其他非默认的表空间中。创建对象时,如果不指定Schema,那么...

    oracle数据库体系结构之一【user和schema】

    首先,从官方文档中可以看到,schema是数据库对象的集合,拥有同一名称的用户拥有该schema,并且该schema中的对象可以分布在不同的表空间中。这样,一个用户可以拥有多个schema,每个schema中都可以包含多个数据库...

    MySQL中information_schema是什么

    在使用MySQL的过程中,我们经常会遇到一个名为`information_schema`的数据库。这个数据库在MySQL安装时自动生成,并且对于理解和管理MySQL系统具有重要作用。本文将详细介绍`information_schema`的功能、结构以及...

    用streams实现不同数据库下不同schema间DDL同步 上个礼拜有同事问我 ....doc

    在传统的数据库管理中,如果要在多个数据库或schema之间保持DDL的一致性,通常需要手动比较并应用DDL语句,这不仅工作量大,而且容易出错。Oracle Streams提供了一种自动化的方法来解决这个问题,尽管它主要设计用于...

    information_schema数据库在SQL注入中的应用.docx

    信息架构数据库(information_schema)是 MySQL 5 以上自带的系统数据库,它存放了 MySQL 服务器中所有数据库、表及其列的信息。该数据库相当于一个数据字典,提供了关于 MySQL 服务器所维护的所有其他数据库的信息...

    mysql 性能调优与架构设计 数据库Schema源码

    在这个过程中,数据库Schema的设计起着至关重要的作用。Schema是数据库的蓝图,定义了数据库的结构,包括表、列、索引、约束等元素,合理的Schema设计可以显著提升数据库的性能。 `ugms2.sql`和`ugms.sql`这两个...

    schema相关知识压缩包

    2. **数据库Schema** 在数据库管理中,Schema定义了数据库的全局视图,包括表、索引、视图、存储过程等对象。每个表都有自己的结构(列名、数据类型、约束条件等),这些结构组合起来形成了数据库的Schema。例如,...

    DB2导出数据库表结构和数据.pdf

    在实际应用中,我们经常需要导出数据库表结构和数据,今天我们将讨论如何使用 DB2 导出数据库表结构和数据。 使用 db2cmd 打开 DB2 命令行 在使用 DB2 之前,我们需要打开 DB2 命令行工具 db2cmd。db2cmd 是一个...

    数据库中的Schema和Database的区别

    在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database;  数据库中的user和schema的关系:  假如...

    解析Oracle数据库中的对象集合schema

    Oracle数据库中的对象集合Schema是数据库管理系统中的核心概念之一,它在数据库设计和管理中起着至关重要的作用。Schema可以理解为一个命名空间或容器,它包含了一系列相关的数据库对象,如表、视图、索引、存储过程...

    酒店管理系统数据库设计.doc

    例如,我们可以使用E-R图来设计酒店管理系统的数据库schema,包括入住登记表、员工信息表、客户表和岗位表等。 2. 建立数据库和基本表:在设计好数据库的schema后,我们需要使用公司管理器或查询分析器来建立数据库...

    原创Matlab通过ODBC的方式调用数据库-CreateSchema.m

    原创Matlab通过ODBC的方式调用数据库-CreateSchema.m 以下内容为Matlab中文论坛会员,Godman原创。 如果需要转载,请联系Godman会员: 如有疑问可以邮件联系 tntuyh@163.com Godman 2009.3.30 晚 Good ...

    DB2常用语句

    - 此命令列出当前数据库中属于特定模式(schema)的所有表。 #### 查看数据库字符集 - **命令**:`db2 get db cfg for <数据库名>` - `<数据库名>`:要查看字符集的数据库名称。 - 字符集信息可以在返回的结果...

    Schema生成工具

    在实际开发中,Schema生成工具通常与版本控制系统(如Git)结合使用,确保数据库Schema的变化可以被跟踪和管理。此外,当项目进行数据库迁移或更新时,这些工具也能帮助生成升级或降级脚本,使得数据库版本控制更加...

    手动添加schema文件

    Schema在数据库中可以被理解为一种蓝图,它定义了数据库的结构、表格、列、索引和其他对象。在本篇文章中,我们将深入探讨手动添加schema文件的相关知识,并结合源码和工具来理解和实践这一过程。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics