MS SQL和MySQL之间的数据库术语有何不同?
MySQL实例可以有多个数据库吗?它似乎只能创建不同的模式 . 但是,SQL命令是 create database .
create database
在MS SQL中,您可以创建多个数据库...每个数据库都有一个默认模式dbo?...但数据库中仍有多个模式?
从这个link,我们看到MS SQL模式不再与用户绑定,这里是相关的引用:
SQL Server 2005中模式的行为已更改 . 模式不再等同于数据库用户;每个模式现在都是一个独立的命名空间,它独立于创建它的数据库用户而存在 . 换句话说,模式只是对象的容器 . 架构可以由任何用户拥有,其所有权可以转让 .
在MySQL中,数据库和模式完全相同,甚至可以在命令中交换单词,即CREATE DATABASE具有同义词CREATE SCHEMA .
MySQL支持多个数据库(模式),MS SQL支持多个数据库和多个模式 .
一般来说,我发现以下文章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-schemas,因为Postgres缺乏MySQL所拥有的现成的跨数据库功能 . 相反,Postgres已经应用了更多实现跨表,跨架构的规范,然后为未来的跨数据库功能留出了空间 . MySQL别名幕后,架构与数据库,这样创建架构,创建数据库是模拟 . 可以说,MySQL因此实现了跨表功能,完全跳过了模式功能,并在其数据库实现中提供了类似的功能 . 总之,Postgres完全支持模式,但缺少MySQL与数据库的一些功能,而MySQL甚至没有尝试支持真正的模式 .
我相信通过对MS SQL说'schema'你意味着'所有者' .
据我所知,在你做MySQL的时候
SELECT * from world.city;
此查询从世界数据库中选择表格城市 .
在MsSQL中你必须做一个
SELECT * from world.dbo.city;
'dbo'是表的默认所有者 .
为了简化生活,可以通过键入来定义默认数据库
USE world SELECT * from city;
在MySQL中,无法声明表的所有者 . 即 . 'DBO' .
MS SQL绝对支持多个数据库,每个数据库都有1到多个模式,dbo仅是出于向后兼容目的的默认设置 .
4 回答
从这个link,我们看到MS SQL模式不再与用户绑定,这里是相关的引用:
在MySQL中,数据库和模式完全相同,甚至可以在命令中交换单词,即CREATE DATABASE具有同义词CREATE SCHEMA .
MySQL支持多个数据库(模式),MS SQL支持多个数据库和多个模式 .
一般来说,我发现以下文章on Wikipedia是有用的 .
在文章的底部是以下内容:
我相信通过对MS SQL说'schema'你意味着'所有者' .
据我所知,在你做MySQL的时候
此查询从世界数据库中选择表格城市 .
在MsSQL中你必须做一个
'dbo'是表的默认所有者 .
为了简化生活,可以通过键入来定义默认数据库
在MySQL中,无法声明表的所有者 . 即 . 'DBO' .
MS SQL绝对支持多个数据库,每个数据库都有1到多个模式,dbo仅是出于向后兼容目的的默认设置 .