模式与数据库、数据库中的表的关系:
1个数据库下,可以有多个模式。

1个模式下,可以有0个或多个表 。

  首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,?

  我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table就被放入每个房间中,不能放置在房间之外。然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样。所以Schema包含的是Object,而不是User。

  User是每个对应数据库的主人,既然有操作数据库的权利,就肯定有操作数据库中每个Schema(房间)的权利。换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的,他有完全的操作权,。我们还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权限的问题,后面章节有介绍。

  在SQL Server2005中,当我们用Create User创建数据库用户时,我们可以为该用户指定一个已经存在的Schema作为默认Schema,如果我们不指定,则该用户所默认的Schema即为dbo 模式,dbo 房间(Schema)好比一个大的公共房间,在当前登录用户没有默认Schema的前提下,如果你在大仓库中进行一些操作,比如Create Tabe,如果没有指定特定的房间(Schema),那么你的物品就只好放进公共的dbo房间(Schema)了。但是如果当前登录用户有默认的Schema,那么所做的一切操作都是在默认Schema上进行(比如当前登录用户为login1。

  在SQL Server2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Schema有:dbo,INFORMATION_SCHEMA, guest,sys等等。

   我在上文中已经提到了,在SQL Server2005中当用存储过程sp_adduser创建一个user时,同时SQL Server2005也为我们创建了一个默认的和用户名相同的Schema,这个时候问题出来了,当我们create table A时,如果没有特定的Schema做前缀,这个A表创建在了哪个Schema上,即进入了哪个房间?答案是:

   1.如果当前操作数据库的用户有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。

  2.如果当前操作数据库的用户没有默认的Schema(即在创建User的时候默认为空),那么表A被创建在了dbo Schema上,即使有一个和用户名同名的Schema存在,由于它不是该用户默认的Schema,所以创建表的时候是不会考虑的,当作一般的Schema来处理,别看名字相同,可是没有任何关系哦。

   3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的 Schema上。

  在这里,为了避免混淆和提高操作数据库的速度,我们最好每次在操作数据库对象的时候都显式地指定特定的Schema最为前缀。现在如果登录的用户为Sue,该用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select * from mytable, 那么搜寻每个房间(Schema)的顺序是怎样的呢?顺序如下:

   1. 首先搜寻sys.mytable (Sys Schema)

   2. 然后搜寻Sue.mytable (Default Schema)

   3. 最后搜寻 dbo.mytable (Dbo Schema)

  执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描Sys Schema了,当然可以提高查询的速度了。

  另外需要提示一下的是,每个数据库在创建后,有4个Schema是必须的(删都删不掉),这4个Schema为:dbo,guest,sys和INFORMATION_SCHEMA,其余的Schema都可以删除。

为什么把表归属于不同的模式里?
  例如你的数据库里面有很多的表。就以一个学校作为例子吧:

  有很多表分别用于存储学生、课程、成绩、学分等信息。

  还有很多表用于存储 老师、工资、奖金等信息。

  还有很多表用于存储学校的固定资产、流动资产、财务相关信息。

  如果这么多的表,都混杂在一起。管理起来非常麻烦。

  通过 create schema , 划分区域,

   把学生的,创建一个 schema 叫 Student

  教师的,创建一个 schema 叫 Teacher

  学校财务的,创建一个 schema 叫 School

  这样,对于专门负责学生信息管理的,就只负责 Student 这个 schema,表名全部是 Student.具体表名。

  对于,负责教师系统开发的人来说,程序里面的表名,都是Teacher.具体表名。

  学校财务的也是一样,查询的时候,是:SELECT * FROM School.具体表名

模式与数据库、数据库中的表的关系:
1个数据库下,可以有多个模式。

1个模式下,可以有0个或多个表 。

  首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,?

  我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table就被放入每个房间中,不能放置在房间之外。然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样。所以Schema包含的是Object,而不是User。

  User是每个对应数据库的主人,既然有操作数据库的权利,就肯定有操作数据库中每个Schema(房间)的权利。换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的,他有完全的操作权,。我们还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权限的问题,后面章节有介绍。

  在SQL Server2005中,当我们用Create User创建数据库用户时,我们可以为该用户指定一个已经存在的Schema作为默认Schema,如果我们不指定,则该用户所默认的Schema即为dbo 模式,dbo 房间(Schema)好比一个大的公共房间,在当前登录用户没有默认Schema的前提下,如果你在大仓库中进行一些操作,比如Create Tabe,如果没有指定特定的房间(Schema),那么你的物品就只好放进公共的dbo房间(Schema)了。但是如果当前登录用户有默认的Schema,那么所做的一切操作都是在默认Schema上进行(比如当前登录用户为login1。

  在SQL Server2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Schema有:dbo,INFORMATION_SCHEMA, guest,sys等等。

   我在上文中已经提到了,在SQL Server2005中当用存储过程sp_adduser创建一个user时,同时SQL Server2005也为我们创建了一个默认的和用户名相同的Schema,这个时候问题出来了,当我们create table A时,如果没有特定的Schema做前缀,这个A表创建在了哪个Schema上,即进入了哪个房间?答案是:

   1.如果当前操作数据库的用户有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。

  2.如果当前操作数据库的用户没有默认的Schema(即在创建User的时候默认为空),那么表A被创建在了dbo Schema上,即使有一个和用户名同名的Schema存在,由于它不是该用户默认的Schema,所以创建表的时候是不会考虑的,当作一般的Schema来处理,别看名字相同,可是没有任何关系哦。

   3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的 Schema上。

  在这里,为了避免混淆和提高操作数据库的速度,我们最好每次在操作数据库对象的时候都显式地指定特定的Schema最为前缀。现在如果登录的用户为Sue,该用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select * from mytable, 那么搜寻每个房间(Schema)的顺序是怎样的呢?顺序如下:

   1. 首先搜寻sys.mytable (Sys Schema)

   2. 然后搜寻Sue.mytable (Default Schema)

   3. 最后搜寻 dbo.mytable (Dbo Schema)

  执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描Sys Schema了,当然可以提高查询的速度了。

  另外需要提示一下的是,每个数据库在创建后,有4个Schema是必须的(删都删不掉),这4个Schema为:dbo,guest,sys和INFORMATION_SCHEMA,其余的Schema都可以删除。

为什么把表归属于不同的模式里?
  例如你的数据库里面有很多的表。就以一个学校作为例子吧:

  有很多表分别用于存储学生、课程、成绩、学分等信息。

  还有很多表用于存储 老师、工资、奖金等信息。

  还有很多表用于存储学校的固定资产、流动资产、财务相关信息。

  如果这么多的表,都混杂在一起。管理起来非常麻烦。

  通过 create schema , 划分区域,

   把学生的,创建一个 schema 叫 Student

  教师的,创建一个 schema 叫 Teacher

  学校财务的,创建一个 schema 叫 School

  这样,对于专门负责学生信息管理的,就只负责 Student 这个 schema,表名全部是 Student.具体表名。

  对于,负责教师系统开发的人来说,程序里面的表名,都是Teacher.具体表名。

  学校财务的也是一样,查询的时候,是:SELECT * FROM School.具体表名

摘自:https://wenku.baidu.com/view/4e994735f111f18583d05a27.html

模式与数据库与表的关系相关推荐

  1. mysql数据库和表的关系_MySQL数据库学习【第六篇】表与表之间的关系

    表1 foreign key 表2 则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 ...

  2. spool模式导出数据库指定表的数据到Excel

    资源 spool脚本链接: 链接:https://pan.baidu.com/s/1c87vsxqiNLf4ZBNV7IfbnQ 提取码:5izz 执行步骤: 1.先找到一个服务器,选一个路径,用来放 ...

  3. Oracle数据库查看表空间使用率

    12C之前或NON-CDB模式的数据库查看表空间使用率 set linesize 160 set pagesize 999 col TABLESPACE_NAME for a18 col TBS_TO ...

  4. mysql关系模式_数据库学习--关系模式

    最近开始做数据库的大实验,其中有一条实验要求如下: 通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类,并写出关系模式. 画ER图没有什么问题 ...

  5. HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式...

    关系型数据库中,多表关联是很常见的事情,HubbleDotNet 可以对部分情况的多表关联形式建立关联的全文索引,这样用户就不需要专门建一个大表 来解决多表关联时的全文索引问题. 下面以 为数据库现有 ...

  6. 数据库元数据数据字典查询_1_列出模式中所有的表

    列出模式中所有的表 需求描述 需求:查询给定模式下创建的所有表和创建时间. 解决方法:通过各个数据库里提供的系统视图查询. 注: 数据库数据集SQL脚本详见如下链接地址 员工表结构和数据初始化SQL脚 ...

  7. MySQL(三)数据库的六种约束、表的关系、三大范式

    文章目录 数据库约束 NOT NULL(非空约束) UNIQUE(唯一约束) DEFAULT(缺省约束) PRIMARY KEY(主键约束) AUTO_INCREMENT 自增 FOREIGN KEY ...

  8. 【转】EntityFramework使用Code First模式创建数据库控制生成单数形式的表名

    使用Code-First模式生成数据库时,默认生成的数据库表的名称为类型的复数形式,例如实体类名称是"User",默认生成的数据库表名为"Users",多数情况 ...

  9. MySQL | 数据库的六种约束、表的关系、三大范式

    文章目录 数据库约束 NOT NULL(非空约束) UNIQUE(唯一约束) DEFAULT(缺省约束) PRIMARY KEY(主键约束) AUTO_INCREMENT 自增 FOREIGN KEY ...

  10. 数据库建表-- 一对多/多对一/一对一/多对多 关系

     转自: https://blog.csdn.net/zhongshan_c/article/details/8210196 数据库建表-- 一对多/多对一/一对一/多对多 关系 关联映射:一对多 ...

最新文章

  1. TCGAbiolinks包下载TCGA数据
  2. [20171109]缓存命中率神话.txt
  3. 神策数据 × 水滴汽车:着眼车主忠诚度,实现转型期逆势增长!
  4. 反思专注力:重视专注;转变认知;避开即时娱乐;控制专注;氛围想不专注都难
  5. [Ubuntu18.04]使用snap
  6. Win32汇编学习(6):键盘输入消息
  7. 计算机一级考试自测题,计算机一级B考试自测题
  8. 软件测试的重要性与必要性,软件测试的目的和意义
  9. 机房环境监控报警系统
  10. 分享35套极其精美的高清桌面壁纸免费下载
  11. 菜鸟最爱,60行代码打造一款音乐播放器!
  12. TensorFlow入门教程(30)车牌识别之整合EAST+DenseNet进行车牌识别(六)
  13. Android中的Junit单元测试
  14. 如何解决Cannot send session cache limiter – headers already sent 错误
  15. linux cad 安装教程,如何在Ubuntu 18.04/16.04/Linux中安装FreeCAD 0.18
  16. keil的sct文件_STM32 分散加载文件 .sct 解析
  17. 完成一条微指令四周期英文全称
  18. 2022疫情缩水,啃透这份399页Java架构知识点笔记,已从13K涨到25K
  19. 如果能天天送书,天天爽就好了,再送5本
  20. Python编码,解码问题

热门文章

  1. c语言有坐标判断正方形,正方形
  2. 绕过CDN查找网站真实IP
  3. Office XP 程序设计之局域网中怎么配置Office Web组件?
  4. 一个不错的控件网站-慧都控件网
  5. 使用FlashFXP连接Linux乱码问题
  6. 微信html页面缓存问题,浅谈微信页面入口文件被缓存解决方案
  7. 使用keras实现YOLO v3报错‘str‘ object has no attribute ‘decode‘
  8. 抢购软件使用方法(如何开发抢购软件)
  9. sklearn的系统学习——随机森林调参(含案例及完整python代码)
  10. python编程最大值_python求最大值最小值方法总结