【问题标题】:Differences between Database and Schema using different databases?使用不同数据库的数据库和模式之间的区别?
【发布时间】:2010-12-24 13:56:10
【问题描述】:

MS SQL 和 MySQL 在数据库术语上有什么区别?

一个 MySQL 实例可以有多个数据库吗?看来它只能创建不同的模式。但是,SQL 命令是create database

在 MS SQL 中,您可以创建多个数据库...每个数据库都有一个 dbo 的默认架构?...但一个数据库中的多个架构仍然是可能的?

【问题讨论】:

    标签: mysql sql-server database schema


    【解决方案1】:

    总的来说,我发现以下文章on Wikipedia 很有用。

    文章底部如下:

    SQL 规范明确了“SQL 模式”是什么;但是,不同的数据库不正确地实现它。为了使这种混乱更加复杂,当不正确地实现时,功能可能会与父数据库的功能重叠。 SQL 模式只是数据库中的命名空间,该命名空间中的事物使用成员运算符点“.”来处理。这似乎在所有实现中都是通用的。 一个真正的完全(数据库、模式和表)限定查询示例如下:select * from database.schema.table

    现在,问题在于,架构和数据库都可以用来将一个表 foo 与另一个名为 foo 的表隔离开来。以下是伪代码:select * from db1.foo vs.select * from db2.foo(db 和 table 之间没有明确的模式)select * from [db1.]default.foo vs.select * from [db1.]alternate.foo(没有明确的 db 前缀)出现的问题是以前的 MySQL 用户会创建多个数据库对于一个项目。在这种情况下,MySQL 数据库在功能上类似于 Postgres 模式,因为 Postgres 缺乏 MySQL 所具有的现成的跨数据库功能。相反,Postgres 应用了更多实现跨表、跨模式的规范,然后为未来的跨数据库功能留出了空间。 MySQL 后台别名,schema 与数据库,如 create schema 和 create database 是类似的。

    可以说,因此 MySQL 实现了跨表功能,完全跳过了模式功能,并在其数据库实现中提供了类似的功能。总之,Postgres 完全支持模式,但缺少 MySQL 对数据库的一些功能,而 MySQL 甚至不尝试支持真正的模式。

    【讨论】:

    • "架构和数据库都可以用来隔离一个表" 哇,如果您已经了解在 MySQL 中,架构 数据库,那真是令人困惑。但我想这篇文章的重点是教不熟悉的人。感谢您的报价。
    【解决方案2】:

    link 中,我们看到 MS SQL 模式不再与用户绑定,以下是相关引用:

    在 SQL 中改变了模式的行为 Server 2005。模式不再是 相当于数据库用户;每个 schema 现在是一个不同的命名空间 独立于 创建它的数据库用户。其他 换句话说,模式只是一个容器 的对象。架构可以由 任何用户,其所有权是 可转让。

    在 MySQL 中,数据库和模式是完全一样的,你甚至可以在命令中互换单词,即 CREATE DATABASE 有同义词 CREATE SCHEMA。

    MySQL 支持多个数据库(模式),MS SQL 支持多个数据库和多个模式。

    【讨论】:

    • 表名前缀在 MySQL 中用作覆盖模式特性的一种做法,虽然它不是一个正确的修复方法,但它在 MySQL 中是常见的做法。 wp_config - wp 用于 wordpress。
    • 对我来说,将 MS SQL Server 中的模式视为 c# 中的命名空间或 Java 中的包会有所帮助。
    【解决方案3】:

    我相信对 MS SQL 说“模式”是指“所有者”。

    据我了解,在 MySQL 的时候你做一个

    SELECT * from world.city;
    

    此查询正在从世界数据库中选择表城市。

    在 MsSQL 中你必须做一个

    SELECT * from world.dbo.city;
    

    其中 'dbo' 是表的默认所有者。

    为了让生活更轻松,通过键入定义默认数据库

    USE world
    SELECT * from city;
    

    在 MySQL 中,无法声明表的所有者。 IE。 'dbo'。

    【讨论】:

      【解决方案4】:

      MS SQL 绝对支持多个数据库,每个数据库都有 1 到多个模式,dbo 只是出于向后兼容目的的默认设置。

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 2012-07-22
        • 2011-04-11
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 2018-03-08
        • 1970-01-01
        • 2011-01-06
        相关资源
        最近更新 更多