【发布时间】:2010-12-24 13:56:10
【问题描述】:
MS SQL 和 MySQL 在数据库术语上有什么区别?
一个 MySQL 实例可以有多个数据库吗?看来它只能创建不同的模式。但是,SQL 命令是create database。
在 MS SQL 中,您可以创建多个数据库...每个数据库都有一个 dbo 的默认架构?...但一个数据库中的多个架构仍然是可能的?
【问题讨论】:
标签: mysql sql-server database schema
MS SQL 和 MySQL 在数据库术语上有什么区别?
一个 MySQL 实例可以有多个数据库吗?看来它只能创建不同的模式。但是,SQL 命令是create database。
在 MS SQL 中,您可以创建多个数据库...每个数据库都有一个 dbo 的默认架构?...但一个数据库中的多个架构仍然是可能的?
【问题讨论】:
标签: mysql sql-server database schema
总的来说,我发现以下文章on Wikipedia 很有用。
文章底部如下:
SQL 规范明确了“SQL 模式”是什么;但是,不同的数据库不正确地实现它。为了使这种混乱更加复杂,当不正确地实现时,功能可能会与父数据库的功能重叠。 SQL 模式只是数据库中的命名空间,该命名空间中的事物使用成员运算符点“.”来处理。这似乎在所有实现中都是通用的。 一个真正的完全(数据库、模式和表)限定查询示例如下:
select * from database.schema.table现在,问题在于,架构和数据库都可以用来将一个表
foo与另一个名为foo的表隔离开来。以下是伪代码:select * from db1.foovs.select * from db2.foo(db 和 table 之间没有明确的模式)select * from [db1.]default.foovs.select * from [db1.]alternate.foo(没有明确的 db 前缀)出现的问题是以前的 MySQL 用户会创建多个数据库对于一个项目。在这种情况下,MySQL 数据库在功能上类似于 Postgres 模式,因为 Postgres 缺乏 MySQL 所具有的现成的跨数据库功能。相反,Postgres 应用了更多实现跨表、跨模式的规范,然后为未来的跨数据库功能留出了空间。 MySQL 后台别名,schema 与数据库,如 create schema 和 create database 是类似的。可以说,因此 MySQL 实现了跨表功能,完全跳过了模式功能,并在其数据库实现中提供了类似的功能。总之,Postgres 完全支持模式,但缺少 MySQL 对数据库的一些功能,而 MySQL 甚至不尝试支持真正的模式。
【讨论】:
从link 中,我们看到 MS SQL 模式不再与用户绑定,以下是相关引用:
在 SQL 中改变了模式的行为 Server 2005。模式不再是 相当于数据库用户;每个 schema 现在是一个不同的命名空间 独立于 创建它的数据库用户。其他 换句话说,模式只是一个容器 的对象。架构可以由 任何用户,其所有权是 可转让。
在 MySQL 中,数据库和模式是完全一样的,你甚至可以在命令中互换单词,即 CREATE DATABASE 有同义词 CREATE SCHEMA。
MySQL 支持多个数据库(模式),MS SQL 支持多个数据库和多个模式。
【讨论】:
我相信对 MS SQL 说“模式”是指“所有者”。
据我了解,在 MySQL 的时候你做一个
SELECT * from world.city;
此查询正在从世界数据库中选择表城市。
在 MsSQL 中你必须做一个
SELECT * from world.dbo.city;
其中 'dbo' 是表的默认所有者。
为了让生活更轻松,通过键入定义默认数据库
USE world
SELECT * from city;
在 MySQL 中,无法声明表的所有者。 IE。 'dbo'。
【讨论】:
MS SQL 绝对支持多个数据库,每个数据库都有 1 到多个模式,dbo 只是出于向后兼容目的的默认设置。
【讨论】: