【问题标题】:Difference Between Schema / Database in MySQLMySQL中模式/数据库之间的区别
【发布时间】:2012-07-22 00:40:21
【问题描述】:

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

我读到Create SchemaCreate Database 在 MySQL 中做的事情基本相同,这让我相信模式和数据库对于相同的对象来说是不同的词。

【问题讨论】:

  • 其实我会说schemadatabase好,因为MySQL是一种数据库,它包含几个database,有时你use一个database,其中使许多搜索错过目标。

标签: mysql database schema database-schema


【解决方案1】:

MySQL Glossary中所定义:

在 MySQL 中,schema数据库 同义。您可以在 MySQL SQL 语法中用关键字 SCHEMA 代替 DATABASE,例如使用 CREATE SCHEMA 代替 CREATE DATABASE

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

【讨论】:

  • 我认为“一些其他数据库产品”实际上是几乎所有其他数据库的委婉说法(也许除了 SQLite,但这是可以理解的)。
  • 使模式与数据库同义很有趣——我一直将它与用户对象相关联。并且友好地提到了 SQLServer,它分离了用户/模式概念,允许大量的灵活性和一些有趣的方式做动态查询。
  • 将“模式”定义为一组数据库对象的恼人之处在于它重载了该词的旧含义,例如en.wikipedia.org/wiki/Database_schema.
  • @mehaase 都是这个词的旧含义。 Oracle 甚至在 SQL3 (1999) 之前就有模式,尽管它把它们视为其他数据库将使用成熟的数据库。事实上,Oracle 将其他人称为服务器或服务器实例的“数据库”称为不同的二进制文件、不同的可执行文件、不同的端口。
  • 刚接触 MySQL 的用户应该清楚地意识到这一点,因为删除模式可能比预期的要多。也就是说,IINM,DROP SCHEMA 等同于 DROP DATABASE。
【解决方案2】:

取决于数据库服务器。 MySQL 无所谓,基本一样。

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

【讨论】:

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

参考MySql documentation

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

【讨论】:

    【解决方案4】:

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

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

    架构类似于操作系统级别的目录,只是架构不能嵌套。

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

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

    【讨论】:

    • 然后有“模式”来增加初学者的困惑:)
    • @Zeni MySQL 中的模式到底是什么?我所能找到的只是对 information_schema 模式表的引用,但没有关于它的实际含义的简明定义
    • @Alf47 “schema”只是“schema”这个词的复数形式。 “模式”也是可以接受的,但不那么花哨:)
    【解决方案5】:

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

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        如果您正在思考或讨论关于 Mysql。然后采取一个简单的答案

        "SCHEMA 和 DATABASE 是完全一样的东西,只是合成的 mysql中的糖。”

        【讨论】:

          【解决方案8】:

          例如 Microsoft SQL Server,Schemas 指的是单个用户,是容器的另一个层次,按照服务器、数据库、模式、表和对象的顺序排列。

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

          【讨论】:

          • 架构由单个用户拥有。默认情况下,在数据库中创建的用户使用 dbo 模式作为他们的默认模式。用于非完全限定表引用的默认模式是为该用户设置的。
          • 在旧版本的 SQL Server 中,删除用户会导致与其关联的架构不可用。如今,用户和模式之间的映射不那么严格了。此外,最好的做法是为数据库和所有模式的所有者创建一个假帐户。
          【解决方案9】:

          只需添加更多信息:

          MongoDB 还区分 schemadatabase

          schema代表表,表示database的结构。

          【讨论】:

            猜你喜欢
            • 2011-07-16
            • 2010-12-24
            • 1970-01-01
            • 2010-09-22
            • 2010-11-09
            • 1970-01-01
            • 2011-04-11
            • 2011-10-22
            • 1970-01-01
            相关资源
            最近更新 更多