这可能是一个非常糟糕的问题。但我一直将模式视为数据库中的表定义。这是错误的或不完全正确的。我不太记得我的数据库课程了。
当前回答
Schema的行为就像在OOP中看到的父对象一样。所以它本身不是一个数据库。也许这个链接有用。
但是,在MySQL中,这两者是等价的。关键字DATABASE或DATABASES 可以在任何出现的地方替换为SCHEMA或SCHEMAS。例子:
创建数据库<=>创建模式 显示数据库<=>显示模式
MySQL文档
SCHEMA和DATABASE术语是依赖于DBMS的。
Table是一组数据元素(值),使用垂直列(由其名称标识)和水平行模型组织。数据库通常包含一个或多个表。你把数据存储在这些表中。这些表可能彼此相关(见这里)。
其他回答
这篇文章只涉及到Oracle, Schema的定义在另一个DB上下文中会发生变化。
可能是那种让人受不了的事情,但供你参考的术语似乎在定义上有所不同,这是最烦人的事情:)
在Oracle中,数据库就是数据库。你可以把它想象成数据文件和重做日志,以及数据库本身在磁盘上的实际物理存在(即不是实例)。
Schema实际上就是一个用户。更具体地说,它是用户拥有的一组表/ pros /索引等。另一个用户有不同的模式(他/她拥有的表),但是用户也可以看到他们有选择特权的任何模式。因此,一个数据库可以由数百个模式组成,每个模式由数百个表组成。您可以在同一数据库中的不同模式中拥有具有相同名称的表。
表是一个表,一组包含数据的行和列,并且包含在模式中。
例如,SQL Server中的定义可能不同。我不知道这件事。
我试着根据我对以下类比的理解来回答:
A database is like the house In the house there are several types of rooms. Assuming that you're living in a really big house. You really don't want your living rooms, bedrooms, bathrooms, mezzanines, treehouses, etc. to look the same. They each need a blueprint to tell how to build/use them. In other words, they each need a schema to tell how to build/use a bathroom, for example. Of course, you may have several bedrooms, each looks slightly different. You and your wife/husband's bedroom is slightly different from your kids' bedroom. Each bedroom is analogous to a table in your database. A DBMS is like a butler in the house. He manages literally everything.
更多关于模式的信息:
在SQL 2005中,模式是对对象进行分组的一种方式。它是一个容器,你可以把对象放进去。人们可以拥有这个物品。您可以授予模式上的权限。
在2000年,一个模式相当于一个用户。现在它已经摆脱了束缚,变得相当有用。你可以把你所有的用户过程放在一个模式中,把你的管理过程放在另一个模式中。将EXECUTE授予适当的用户/角色,就完成了对特定过程的EXECUTE授权。好了。
点表示法是这样的:
Server.Database.Schema.Object
or
myserver01.Adventureworks.Accounting.Beans
As https://www.informit.com/articles/article.aspx?p=30669
所有对象的名称在一定范围内必须是唯一的。每一个 数据库必须有唯一的名称;模式名称不能重复 在单个数据库的范围内,表的名称必须为 在单个模式的作用域中是唯一的,列名必须是 在表中是唯一的。类中索引的名称必须唯一 数据库。
关系模式是表的逻辑定义——它定义了表的名称,以及每一列的名称和类型。就像一个计划或蓝图。数据库模式是整个数据库的关系模式的集合。
表是由一组行(又名“元组”)组成的结构,每一行都有由模式定义的属性。表上还可能有索引,以帮助查找某些列上的值。
从形式上讲,数据库是任何数据的集合。在这个上下文中,数据库将是表的集合。DBMS(数据库管理系统)是管理和运行数据库的软件(如MySQL, SQL Server, Oracle等)。
推荐文章
- 获得PostgreSQL数据库中当前连接数的正确查询
- MySQL数据库表中的最大记录数
- 从现有模式生成表关系图(SQL Server)
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何从命令行在windows中找到mysql数据目录
- 如何找到MySQL的根密码
- 将表从一个数据库复制到另一个数据库的最简单方法?
- 截断Postgres数据库中的所有表
- 什么是分片,为什么它很重要?
- 数据库触发器是必要的吗?
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?