数据库中的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)是 MySQL 5 以上自带的系统数据库,它存放了 MySQL 服务器中所有数据库、表及其列的信息。该数据库相当于一个数据字典,提供了关于 MySQL 服务器所维护的所有其他数据库的信息...
在数据库管理中,Catalog(目录)和Schema(模式)是两个非常重要的概念,它们构成了数据库组织和管理的基础。本文将深入探讨这两个概念,以及它们在实际应用中的作用。 首先,让我们来理解什么是Catalog。在数据库...
首先,从官方文档中可以看到,schema是数据库对象的集合,拥有同一名称的用户拥有该schema,并且该schema中的对象可以分布在不同的表空间中。这样,一个用户可以拥有多个schema,每个schema中都可以包含多个数据库...
在使用MySQL的过程中,我们经常会遇到一个名为`information_schema`的数据库。这个数据库在MySQL安装时自动生成,并且对于理解和管理MySQL系统具有重要作用。本文将详细介绍`information_schema`的功能、结构以及...
在数据库操作中,用户不仅可以拥有一个默认的Schema,还可以访问其他Schema中的对象。这类似于用户可以拥有一个默认的表空间,但也可以选择将对象存储在其他非默认的表空间中。创建对象时,如果不指定Schema,那么...
首先,SCHEMATA表是information_schema中的核心表之一,它包含了当前MySQL实例中的所有数据库信息。当你执行`SHOW DATABASES;`命令时,返回的结果就是从SCHEMATA表中获取的。通过查询这张表,你可以获取到数据库的...
而不是 User】,其实 User 是对应于数据库的(即 User 是每个对应数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个 Schema(房间)的权利,就是说每个数据库映射的 User 有每个 Schema...
Schema在数据库中可以被理解为一种蓝图,它定义了数据库的结构、表格、列、索引和其他对象。在本篇文章中,我们将深入探讨手动添加schema文件的相关知识,并结合源码和工具来理解和实践这一过程。 首先,我们需要...
2. **数据库Schema** 在数据库管理中,Schema定义了数据库的全局视图,包括表、索引、视图、存储过程等对象。每个表都有自己的结构(列名、数据类型、约束条件等),这些结构组合起来形成了数据库的Schema。例如,...
在数据库设计中,树形结构是一种常见的数据组织方式,它被广泛应用于表示层次关系,例如组织结构、分类系统等。本文以食品族谱为例,探讨如何在关系型数据库中存储和操作树形结构数据。 首先,最基本的树形结构设计...
在"PDM(用工具生成schema和dbsvr以及blsvr)"的上下文中,这可能是指一个集成的工作流程,其中PDM工具不仅管理产品数据,还支持自动化生成数据库Schema、部署数据库服务器和设置业务逻辑服务器。这种集成能够提高效率...
标题与描述均提及了“DB2 Schema操作总结”,这表明文章将聚焦于IBM DB2数据库管理系统中的模式(Schema)管理操作。以下是对标题、描述、标签以及部分内容中提及的关键知识点的详细阐述: ### 显式建立Schema 在...
在Oracle数据库中,"方案"(Schema)是一个非常关键的概念,它相当于数据库中的一个用户空间,包含了该用户的所有对象,如表、视图、索引、存储过程等。在本压缩包"sample_schema_scripts"中,包含了一系列用于创建...
Schema广泛应用于Web服务、数据库交互、数据交换等场景,确保XML数据的一致性和准确性。例如,在开发基于SOAP的Web服务时,Schema用于定义服务接口的输入和输出格式。 总结来说,Schema是XML文档结构和数据验证的...
Oracle数据库中的对象集合Schema是数据库管理系统中的核心概念之一,它在数据库设计和管理中起着至关重要的作用。Schema可以理解为一个命名空间或容器,它包含了一系列相关的数据库对象,如表、视图、索引、存储过程...
在这个主题中,我们将深入探讨如何利用`information_schema.tables`来查询数据库和数据表的相关信息。 `information_schema.tables`表包含了关于数据库中每个数据表的基本信息。以下是一些关键字段的解释: 1. `...
在实际开发中,Schema生成工具通常与版本控制系统(如Git)结合使用,确保数据库Schema的变化可以被跟踪和管理。此外,当项目进行数据库迁移或更新时,这些工具也能帮助生成升级或降级脚本,使得数据库版本控制更加...
1. **数据源连接**:在Schema_Workbench中配置所需的数据库连接。 2. **设计维度**:根据业务需求创建维度模型,包括属性和层次结构。 3. **构建立方体**:基于维度定义立方体,设置度量和聚合规则。 4. **ETL流程...
在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如...