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

Llo*_*nks 261 mysql database schema database-schema

MySQL中的模式和数据库之间有区别吗?在SQL Server中,数据库是与模式相关的更高级别的容器.

我读过这篇文章Create SchemaCreate Database在MySQL中做了同样的事情,这使我相信模式和数据库对于相同的对象来说是不同的单词.

egg*_*yal 307

MySQL词汇表中所定义:

在MySQL中,物理上,模式数据库是同义词.您可以替换关键字SCHEMA而不是DATABASEMySQL SQL语法,例如使用CREATE SCHEMA而不是CREATE DATABASE.

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

  • 我认为"其他一些数据库产品"实际上是几乎所有其他数据库的委婉说法(可能除了SQLite,但这是可以理解的). (65认同)
  • 进行模式的代名词,数据库是有趣的 - 我一直与用户对象..和SQLServer的友好提到这分离的用户/架构的概念,允许灵活的一船和一些有趣的方法可以做到动态查询有关它. (4认同)
  • 将“模式”定义为一组数据库对象的烦人之处在于它重载了该词的旧含义,例如https://en.wikipedia.org/wiki/Database_schema。 (2认同)
  • @mehaase 都是这个词的旧含义。Oracle 甚至在 SQL3 (1999) 之前就已经有了模式,尽管它像其他数据库一样对待成熟的数据库。事实上,Oracle 将“数据库”称为其他人所说的服务器或服务器实例 - 不同的二进制文件、不同的可执行文件、不同的端口。 (2认同)

小智 57

取决于数据库服务器.MySQL不关心,它基本上是一回事.

Oracle,DB2和其他企业级数据库解决方案有所区别.通常,模式是表的集合,数据库是模式的集合.

  • 对于这种情况,即使Microsoft SQL Server也具有与"Oracle"和"DB2"非常相似的区别. (6认同)
  • 在 MySQL 中,“数据库”和“模式”基本上不是同一件事;这是完全相同的事情(例如,“创建数据库”和“创建架构”是同义词)。在 Oracle 中,模式与用户同义(也许更准确地说,模式是在用户下创建的所有对象的列表)。MSSQL 区分所有这三个(因此,当从不同的数据库访问表时,名称必须由数据库和模式限定,例如“database1.dbo.table2”) (5认同)

Aka*_* KC 16

参考MySql文档,

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


Riz*_*Riz 9

在 MySQL模式中database 的同义词。对于跳到 MySQL 并且第一天就找到这个词schema 的初学者来说,这非常令人困惑,所以大家不用担心,因为两者都是一样的。

当你第一次启动 MySQL 时,你需要创建一个数据库(像任何其他数据库系统一样)来使用,这样你就可以CREATE SCHEMA这只是CREATE DATABASE

在其他一些数据库系统中,模式代表数据库的一部分或表的集合,模式的集合就是一个数据库。


小智 6

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

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

模式类似于操作系统级别的目录,但模式不能嵌套.

在我看来,MySQL不是一个参考数据库.你永远不应该引用MySQL作为解释.MySQL实现非标准SQL,有时声称它不支持的功能.例如,在MySQL中,CREATE模式只会创建一个DATABASE.这确实是误导用户.

这种词汇被DBA称为"MySQLism".

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

Mik*_*ant 5

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