首页 文章

使用不同数据库的数据库和架构之间的差异?

提问于
浏览
40

MS SQL和MySQL之间的数据库术语有何不同?

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

在MS SQL中,您可以创建多个数据库...每个数据库都有一个默认模式dbo?...但数据库中仍有多个模式?

4 回答

  • 2

    从这个link,我们看到MS SQL模式不再与用户绑定,这里是相关的引用:

    SQL Server 2005中模式的行为已更改 . 模式不再等同于数据库用户;每个模式现在都是一个独立的命名空间,它独立于创建它的数据库用户而存在 . 换句话说,模式只是对象的容器 . 架构可以由任何用户拥有,其所有权可以转让 .

    在MySQL中,数据库和模式完全相同,甚至可以在命令中交换单词,即CREATE DATABASE具有同义词CREATE SCHEMA .

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

  • 66

    一般来说,我发现以下文章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甚至没有尝试支持真正的模式 .

  • 28

    我相信通过对MS SQL说'schema'你意味着'所有者' .

    据我所知,在你做MySQL的时候

    SELECT * from world.city;
    

    此查询从世界数据库中选择表格城市 .

    在MsSQL中你必须做一个

    SELECT * from world.dbo.city;
    

    'dbo'是表的默认所有者 .

    为了简化生活,可以通过键入来定义默认数据库

    USE world
    SELECT * from city;
    

    在MySQL中,无法声明表的所有者 . 即 . 'DBO' .

  • 4

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

相关问题