文章内容来自:https://www.biaodianfu.com/database-schema.html?utm_source=tuicool&utm_medium=referral

在学习数据库时,会遇到一个让人迷糊的Schema的概念。实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。

如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。

默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。访问一个表时,如果没有指明该表属于哪个schema,系统会自动加上缺省的schema。一个对象的完整名称为schema.object,而不属user.object。

在MySQL中创建一个Schema和创建一个Database的效果好像是一样的,但是在SQL Server和Oracle数据库中效果又是不同的。

在SQL Server中,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,假如我们在某一数据库中创建了用户Bosco,那么此时后台也为我们默认的创建了schema【Bosco】,schema的名字和user的名字相同。

在SQL Server 2005中,为了向后兼容,当用sp_adduser存储过程创建一个用户的时候,sqlserver2005同时也创建了一个和用户名相同的schema,然而这个存储过程是为了向后兼容才保留的,当我们用create user创建数据库用户时,我们可以用该用户指定一个已经存在的schema作为默认的schema,如果我们不指定,则该用户所默认的schema即为dbo schema,dbo房间(schema)好比一个大的公共房间,在当前登录用户没有默认schema的前提下,如果你在大仓库中进行一些操作,比如create table,如果没有制定特定的房间(schema),那么你的物品就只好放进公共的dbo房间(schema)了。但是如果当前登录用户有默认的schema,那么所做的一切操作都是在默认的schema上进行。

在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

update:2017-3-27

PostgreSQL中模式的概念与MySQL中Database的概念是等同的。在MYSQL中可以同事访问多个Database对象,但在PostgreSQL中只能访问一个Database对象,但在PostgreSQL中可以访问多个Scheme。

数据库中Schema(模式)概念的理解相关推荐

  1. 数据库中Schema(模式)概念相关

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

  2. 知识分享之PostgreSQL——数据库中的模式(Schema)

    知识分享之PostgreSQL--数据库中的模式(Schema) 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列 ...

  3. MySQL的关系模式集是什么_数据库中“关系模式”的定义是什么?

    展开全部 数据库中"关系模式"的定义是对关系的描述,其必须指出这个元组集合的结构,也就是它32313133353236313431303231363533e4b893e5b19e3 ...

  4. mysql one database_数据库中schema和database有什么区别?

    在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==> ...

  5. java多线程中 锁 的概念的理解,java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)...

    目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronized关键字,对于静态方法默认是以该类的class对象作为锁,对于实例方 ...

  6. 关于数据库中的一些概念

    一.关系型数据库和非关系型数据库 非关系型数据库,又被称之为NoSQL,描述的是大量结构化数据存储方法的集合.可分为: 面向检索的列式存储,典型代表GoogleAppengine的BigTable: ...

  7. Android RxJava 2.0中backpressure(背压)概念的理解

    英文原文:https://github.com/ReactiveX/RxJava/wiki/Backpressure Backpressure(背压.反压力) 在rxjava中会经常遇到一种情况就是被 ...

  8. RxJava 2.0中backpressure(背压)概念的理解

    英文原文:https://github.com/ReactiveX/RxJava/wiki/Backpressure Backpressure(背压.反压力) 在rxjava中会经常遇到一种情况就是被 ...

  9. Oracel数据库中视图与同义词的理解及应用场景

    1. 数据库对象之[视图]简单介绍    1.1 What:什么叫视图? 视图是一种数据库对象,是从一个或多个数据库表或视图中查询或计算出结果的虚拟表,视图对应的数据并不是真正存储在视图中,而是存在于 ...

最新文章

  1. C#如何在Form中嵌入并且操作Excel表格
  2. python字符串查找数字_Python Regex - 在字符串中用逗号查找数字
  3. ★ 让你的虚机飞起来 ★
  4. 环境污染,拿什么来保障食品安全?
  5. Objective-C 之Block(2)
  6. 深度学习stride_深度学习圣经“花书”各章摘要与笔记整理
  7. 透过汇编另眼看世界之多继承下的虚函数函数调用
  8. java swing事件机制_java SWing事件调用的两种机制
  9. python实现接口_Python | 使用类实现接口
  10. figure服务器无法显示,求大神帮帮忙,看一下为什么第二个figure出不来,只能显示第一个...
  11. 树形结构 —— 树与二叉树 —— 树的中心
  12. 如何跨域来同步不同网站之间的Cookie
  13. CCF 201503-1 图像旋转
  14. python分享文件_使用简单的python http服务共享文件
  15. 猫猫学iOS之小知识之xcode6自己主动提示图片插件 KSImageNamed的安装
  16. Tesseract-OCR识别中文与训练字库实例
  17. java web导出excel_Web项目中数据导出Excel的实现方案
  18. CentOS之——CentOS 6.5 安装RTL8111/8168B PCI EXPRESS网卡并解决安装出现的问题
  19. db_recovery_file_dest恢复区的空间保留问题
  20. pku 1265 Area

热门文章

  1. linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法
  2. android 重置画布,android-自定义视图:重按视图画布
  3. 对比学习可以使用梯度累积吗?
  4. CRSLab:可能是最适合你的对话推荐系统开源库
  5. 殊途同归的策略梯度与零阶优化
  6. 作者招募 | 加入PaperWeekly,让你的文字被更多人看到
  7. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
  8. NIPS 2018论文解读 | 基于条件对抗网络的领域自适应方法
  9. python怎么换行输入而不执行_关于在IDLE中怎么换行继续敲写代码而不执行语句...
  10. gearman php mysql_php使用gearman