百度文库中 Schema 的解释:
数据库中的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的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。
------------- 分割线
数据库Schema两种含义
2010-09-01 17:07
数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构。还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表、视图和存储过程等命名对象。物理Schema可以通过标准SQL语句来创建、更新和修改。例 如以下SQL语句创建了两个物理Schema:

create schema SCHEMA_A;
create table SCHEMA_A.CUSTOMERS(ID int not null,……);

create schema SCHEMA_B;
create table SCHEMA_B.CUSTOMERS(ID int not null,……);

简单的说:就是一个数据库用户所拥有的数据库的对象。   
比如scott用户建立了表,索引,视图,存储过程等对象,那么这些对象就构成了schema   scott

数据库schema与catalog简介

按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要 用来解决命名冲突问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数 据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该 数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。这里 还有一点需要注意的是,SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。

从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:

表1 常用数据库

供应商

Catalog支持

Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

数据库名

MS SQL Server

数据库名

对象属主名,2005版开始有变

DB2

指定数据库对象时,Catalog部分省略

Catalog属主名

Sybase

数据库名

数据库属主名

Informix

不支持

不需要

PointBase

不支持

数据库名

最后一点需要注意的是Schema这个单词,它在SQL环境下的含义与其在数据建模领域中的含义是完全不同的。在SQL环境下,Schema是一组相关的 数据库对象的集合,Schema的名字为该组对象定义了一个命名空间,而在数据建模领域,Schema(模式)表示的是用形式语言描述的数据库的结构;简 单来说,可以这样理解,数据建模所讲的Schema<也就是元数据>保存在SQL环境下相应Catalog中一个Schema<名叫 DEFINITION_SCHEMA>下的表中,同时可以通过查询该Catalog中的另一个Schema<名叫 INFORMATION_SCHEMA>下的视图而获取,具体细节不再赘述。

另外我结合MySQL官方的MySQL administrater数据库管理工具理解一下所谓的schema,catalog:


图1 MySql

点击那个catalogs,下面就出来了所有的database。想了一下,我这样来总结:

数据库:指的是说MySQL(或者说Oracle等)

schema: 指的是说当偶create database caiceclb时,caiceclb就是一个schema

catalog: 指的是所有的database目录,就像上图显示的那样,将MySQL原来的(mysql,infomation_schema)及后来新建的的database的集合。

SQL Server 数据库 schema 一词的不同含义

我相信一些人在进入精彩的SQL Server世界时,有一些数据库的专业术语可能会导致一些概念的混淆。一个例子就是"schema"这个词的变化。

一般来说,schema 是指数据库表的组织和定义,它们同其它表的关系以及它们所包含的列。通俗点说,它就是数据库的设计。

在SQL Server 2000中,schema 是指数据库中的对象的拥有关系(表、视图、存储过程等),它稍微区别于定义一词。对数据库对象的拥有关系是非常重要的,因为对象拥有者是被严格赋予权限 的。如果拥有关系在对象创建的过程中,没有被定义,那么对象的默认拥有者就是数据库的拥有者。在schema中叫"dbo"。

在SQL Server 2000中,大部分情况下用户和架构的拥有关系是一样的。而在 SQL Server 2005, 数据库对象架构被赋予了一个新的定义,叫“schema”。在这种情况下, schema 就是服务于逻辑对象组的物理数据库对象。对 .NET 开发者来说,它和命名空间的概念非常像。而拥有关系则被从最重要的概念中分离出来,变得更有弹性和可伸缩性。

Database object schemas are a great addition to SQL Server and in many ways is more consistent with the original definition of a schema than it's SQL Server 2000 counterpart.数据库对象架构已经成为SQL Server 的非常重要的一部分,很多情况下,它相比于SQL Server 2000中的概念来说,与初始的架构定义显得更一致。

数据库Schema两种含义相关推荐

  1. mysql scheme是什么意思_数据库Schema两种含义~~

    1.数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视 ...

  2. mysql创建库几种方法_MySQL创建数据库的两种方法

    本文为大家分享了两种mysql创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 mysql 数据库. 所以 ...

  3. mysql+数据库连接标识_新人必看!连接到MySQL数据库的两种方法

    原标题:新人必看!连接到MySQL数据库的两种方法 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysq ...

  4. Mysql数据库有两种安装方法

    Mysql数据库有两种安装方法: 第一种是安装 mysql-5.7.16-winx64,Zip  发杂.麻烦,下载容量大 第二种方式:下载mysql-5.7.13-winx64.msi 内存小,点击自 ...

  5. django 不用自带的mysql_21_django配置使用mysql数据库的两种方式

    配置django项目使用mysql数据库的两种方式 1. 直接在settings.py 文件中添加数据库配置信息 # 配置数据库的第一种方式 DATABASES = { 'default': { 'E ...

  6. 【转载】面向对象建模与数据库建模两种分析设计方法的比较

    [转载]面向对象建模与数据库建模两种分析设计方法的比较 板桥里人 http://www.jdon.com 2007/9/23(转载请保留) 我们知道:一个软件从无到有需要经过如下几个阶段:分析.设计. ...

  7. c 连接mysql数据库_C++连接mysql数据库的两种方法

    现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多.通过网上的一些资料和自己的摸索,大致清楚了C++连接m ...

  8. cad与连接mySQL数据库_C++连接mysql数据库的两种方法

    现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多.通过网上的一些资料和自己的摸索,大致清楚了C++连接m ...

  9. Python操作Neo4j图数据库的两种方式

    Python操作Neo4j图数据库的两种方式 前言 1. 用neo4j模块执行CQL ( cypher ) 语句 2. 用py2neo模块通过操作python变量,达到操作neo4j的目的 3. 用p ...

最新文章

  1. c#.net配置mysql数据库连接池_C#MySQL连接池
  2. 【Python数据结构】 抽象数据类型 Python类机制和异常
  3. 2017-06-18 前端日报
  4. java好学还是ui好学_java编程和ui设计哪个好学?
  5. BZOJ1054(搜索)
  6. iOS UITextView和UITextViewDelegate
  7. 【计算机网络安全基础(第五版)袁津生 课后习题答案】
  8. 骑士问题-BFS求解
  9. *TEST 5 for NOIP 。。。
  10. Backbone Events 源码笔记
  11. 活动预告|CodeWisdom软件供应链系列学术报告:第4期(何昊 北京大学)
  12. Zemax 快捷键及使用技巧(持续更新中)
  13. C++友元(友元函数)
  14. JS修改style样式
  15. Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
  16. MCAL中MCU的配置
  17. 海豚php 授权价格,数据授权(1.3.2+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...
  18. 2023年,“新一代”固定资产管理平台——支持低代码平台
  19. 上海python周末培训班_上海python周末班
  20. 网络安全专家,这5本入门秘籍人手一套

热门文章

  1. 软件测试工程师自我介绍(范本)
  2. 一战,二战,再战,最后尘埃落定,缘定美团
  3. 驰骋工作流jeesite4_jflow的安装讲解
  4. 在eclipse中jflow.properties文件乱码的解决办法
  5. 懒汉式与饿汉式的区别
  6. 什么是DOM及DOM操作?
  7. 《基督山伯爵》读后感
  8. mac Idea自动补全返回类型及变量快捷键
  9. idea自动补全代码,一秒生成new List,写代码更便捷,快捷方法!
  10. php qq接收不了,PHP-利用curl 与php实现qq挂机遇到不能下线问题