MySQL中架构/数据库之间的区别


289

MySQL中的模式和数据库之间有区别吗?在SQL Server中,数据库是相对于架构的更高级别的容器。

我读的Create SchemaCreate Database做的基本上是在MySQL同样的事情,我相信这线索,架构和数据库是同一对象的不同的词。


其实我想说的schema是比好database,因为MySQL是一种数据库,它包含几个database,有时你use一个database,这使得许多搜索小姐目标。
theaws.blog

Answers:


334

MySQL词汇表中所定义:

实际上,在MySQL中,模式数据库是同义词。您可以用MySQL SQL语法SCHEMA代替关键字DATABASE,例如使用CREATE SCHEMA代替CREATE DATABASE

其他一些数据库产品也有区别。例如,在Oracle数据库产品中,模式仅代表数据库的一部分:单个用户拥有的表和其他对象。


73
我认为“其他一些数据库产品”实际上是对几乎所有其他数据库的委婉说法(也许是SQLite除外,但这是可以理解的)。
Stefan Steiger

5
使模式与数据库同义是很有趣的-我一直将其与用户对象相关联。以及对SQLServer的友好提及,它分离了用户/架构概念,从而带来了灵活性,并提供了一些有趣的方式来进行动态查询。
Gerard ONeill

将“模式”定义为一组数据库对象的烦人之处在于,它使该单词的较早含义过载,例如en.wikipedia.org/wiki/Database_schema
Mark E. Haase'3

1
@mehaase都是该词的旧含义。Oracle甚至在SQL3(1999)之前都拥有架构,尽管它将它们视为其他数据库将使用成熟的数据库。实际上,Oracle将“数据库”称为其他人称为服务器或服务器实例的数据库-不同的二进制文件,不同的可执行文件,不同的端口。
Panagiotis Kanavos

61

取决于数据库服务器。MySQL不在乎,基本上是一样的。

Oracle,,DB2和其他企业级数据库解决方案有所不同。通常一个模式是表的集合和一个数据库是一个模式的集合。


6
即使是微软SQL Server有非常类似的区别为Oracle,并DB2为这种情况。
RBT

2
在MySQL中,“数据库”和“架构”基本上不是同一回事。它是完全一样的东西(例如create databasecreate schema是同义词)。在Oracle中,模式是用户的同义词(也许更准确地说,模式是用户下创建的所有对象的列表)。MSSQL区分所有这三个(因此,从不同数据库访问表时,名称必须同时由数据库和架构限定database1.dbo.table2),例如
Mike Rosoft

17

参考MySql文档

CREATE DATABASE创建具有给定名称的数据库。要使用此语句,您需要数据库的CREATE特权。从MySQL 5.0.2开始,CREATE SCHEMA是CREATE DATABASE的同义词。


7

PostgreSQL支持模式,它是数据库的子集:https : //www.postgresql.org/docs/current/static/ddl-schemas.html

数据库包含一个或多个命名模式,而这些命名模式又包含表。模式还包含其他种类的命名对象,包括数据类型,函数和运算符。相同的对象名称可以在不同的模式中使用,而不会发生冲突。例如,schema1和myschema都可以包含名为mytable的表。与数据库不同,架构不是严格分开的:用户可以访问与其连接的数据库中任何架构中的对象(如果有权限)。

架构类似于操作系统级别的目录,不同之处在于架构不能嵌套。

以我的拙见,MySQL不是参考数据库。您永远不要引用MySQL进行解释。MySQL实现了非标准的SQL,有时还声称它不支持的功能。例如,在MySQL中,CREATE模式只会创建一个DATABASE。这确实是在误导用户。

DBA将这种词汇称为“ MySQLism”。


2
然后是“方案”,给初学者增加了困惑:)
Zeni

@Zeni MySQL中的模式到底是什么?我所能找到的只是对information_schema schemata表的引用,但对其含义却没有简洁的定义
Alf47

@ Alf47“ schemata”只是单词“ schema”的复数形式。“方案”也可以接受,但不那么花哨:)
jobo3208

6

在MySQL 模式中数据库的同义词。对于初学MySQL的初学者来说,这非常令人困惑,因为他们第一天就找到了schema这个词,因此,伙计们都不必担心,因为两者是相同的。

首次启动MySQL时,您需要创建一个数据库(与任何其他数据库系统一样)以便可以使用CREATE SCHEMA,但这不过是CREATE DATABASE

在某些其他数据库系统中,模式表示数据库的一部分或表的集合,而模式的集合是数据库。


3

是的,关于MySQL,人们可以互换使用这些术语。尽管通常您会听到人们不恰当地将整个数据库服务器称为数据库。


0

例如,在Microsoft SQL Server中,架构是指单个用户,并且按照指示服务器,数据库,架构,表和对象的顺序是容器的另一级别。

例如,当您打算更新dbo.table_a且语法不是完全限定的格式(例如UPDATE table.a)时,DBMS无法决定使用预期的表。本质上,默认情况下,DBMS将使用myuser.table_a


架构由单个用户拥有。默认情况下,在数据库中创建的用户使用dbo模式作为其默认模式。用于非完全限定表引用的默认架构是为该用户设置的架构。
Gerard ONeill

在旧版本的SQL Server中,删除用户会使与它关联的架构不可用。如今,用户和架构之间的映射已不再严格。同样,最好的做法是对数据库和所有模式的所有者创建一个假帐户。
乔纳森·艾伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.