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

use*_*545 42 mysql database sql-server schema

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

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

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

Lan*_*rts 69

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

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

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

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

  • MySQL 中使用表名前缀作为覆盖模式功能的做法,尽管这不是一个正确的修复,但这是 MySQL 中的常见做法。wp_config - 其中 wp 代表 wordpress。 (2认同)

Gre*_*rts 30

一般来说,我发现维基百科上的以下文章 很有用.

在文章的底部是以下内容:

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(没有显式数据库前缀)出现的问题是以前的MySQL用户将为一个项目创建多个数据库.在这种情况下,MySQL数据库在功能上类似于Postgres-schemas,因为Postgres缺乏MySQL所拥有的现成的跨数据库功能.相反,Postgres已经应用了更多实现跨表,跨架构的规范,然后为未来的跨数据库功能留出了空间.MySQL别名幕后,架构与数据库,这样创建架构,创建数据库是模拟.

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