MS SQL和MySQL之间的数据库术语有何不同?
MySQL实例可以有多个数据库吗?它似乎只能创建不同的模式。但是,SQL命令是create database
。
在MS SQL中,您可以创建多个数据库...每个都有一个默认模式dbo?...但数据库中仍有多个模式?
答案 0 :(得分:67)
从这个link,我们看到MS SQL模式不再与用户绑定,这是相关的引用:
SQL中更改了模式的行为 Server 2005.架构不再存在 相当于数据库用户;每 schema现在是一个独特的命名空间 独立存在的 创建它的数据库用户。其他 单词,架构只是一个容器 对象架构可以由。拥有 任何用户,其所有权是 转让。
在MySQL中,数据库和模式完全相同,甚至可以在命令中交换单词,即CREATE DATABASE具有同义词CREATE SCHEMA。
MySQL支持多个数据库(模式),MS SQL支持多个数据库和多个模式。
答案 1 :(得分:28)
总的来说,我发现以下文章on Wikipedia很有用。
在文章的底部是以下内容:
SQL规范明确了“SQL模式”是什么;但是,不同的数据库错误地实现它。为了加剧这种混淆,当错误实现时,功能可以与父数据库的功能重叠。 SQL模式只是数据库中的命名空间,此命名空间中的内容使用成员运算符点“。”进行寻址。这似乎是所有实现中的通用。 真正的完全(数据库,模式和表)限定查询的示例如下:
select * from database.schema.table
现在,问题,模式和数据库都可用于将一个表
foo
与另一个表隔离,如命名表foo
。以下是伪代码:select * from db1.foo
与select * from db2.foo
(db和表之间没有显式模式)select * from [db1.]default.foo
与select * from [db1.]alternate.foo
(没有显式数据库前缀)出现的问题是以前的MySQL用户将为一个项目创建多个数据库。在这种情况下,MySQL数据库在功能上类似于Postgres-schemas,因为Postgres缺乏MySQL所拥有的现成的跨数据库功能。相反,Postgres已经应用了更多实现跨表,跨架构的规范,然后为未来的跨数据库功能留出了空间。 MySQL后面的别名,带有数据库的模式,这样创建模式,创建数据库就是模拟。可以说,MySQL因此实现了跨表功能,完全跳过了模式功能,并在数据库实现中提供了类似的功能。总之,Postgres完全支持模式,但缺少MySQL与数据库的一些功能,而MySQL甚至不尝试支持真正的模式。
答案 2 :(得分:4)
我相信通过对MS SQL说'schema',你的意思是'所有者'。
根据我的理解,在你做的时候在MySQL中
SELECT * from world.city;
此查询从世界数据库中选择表格城市。
在MsSQL中你必须做一个
SELECT * from world.dbo.city;
其中'dbo'是表的默认所有者。
通过输入
来简化生活,定义默认数据库USE world
SELECT * from city;
在MySQL中,无法声明表的所有者。即。 'DBO'。
答案 3 :(得分:2)
MS SQL绝对支持多个数据库,每个数据库都有1到多个模式,dbo仅是出于向后兼容目的的默认设置。