Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用不同数据库的数据库和模式之间的差异?_Mysql_Sql Server_Database_Schema - Fatal编程技术网

Mysql 使用不同数据库的数据库和模式之间的差异?

Mysql 使用不同数据库的数据库和模式之间的差异?,mysql,sql-server,database,schema,Mysql,Sql Server,Database,Schema,MS SQL和MySQL在数据库术语上有什么区别 一个MySQL实例可以有多个数据库吗?它似乎只能创建不同的模式。但是,SQL命令是create database 在MS SQL中,您可以创建多个数据库…每个数据库都有一个默认模式dbo?…但在一个数据库中仍然可以创建多个模式?MS SQL明确支持多个数据库,每个数据库都有1到多个模式,dbo只是向后兼容的默认值。我认为,对于MS SQL来说,说“schema”就是指“所有者” 据我所知,在MySQL中当你做一个 SELECT * from wo

MS SQL和MySQL在数据库术语上有什么区别

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


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

MS SQL明确支持多个数据库,每个数据库都有1到多个模式,dbo只是向后兼容的默认值。

我认为,对于MS SQL来说,说“schema”就是指“所有者”

据我所知,在MySQL中当你做一个

SELECT * from world.city;
此查询正在从世界数据库中选择表city

在MsSQL中,您必须执行以下操作:

SELECT * from world.dbo.city;
其中“dbo”是表的默认所有者

为了简化操作,请通过键入来定义默认数据库

USE world
SELECT * from city;
在MySQL中,无法声明表的所有者。即“dbo”。

由此,我们看到MS SQL模式不再与用户绑定,以下是相关的引用:

模式的行为在SQL中发生了变化 服务器2005。模式不再是 相当于数据库用户;每个 模式现在是一个不同的名称空间 它独立于 创建它的数据库用户。换句话说 换句话说,模式只是一个容器 物体的形状。架构可以由 任何用户,其所有权为 可转让

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


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

一般来说,我发现下面的文章很有用

文章的底部是以下内容:

SQL规范明确了什么是“SQL模式”;但是,不同的数据库不正确地实现了它。为了加剧这种混淆,当错误地实现时,功能可能与父数据库的功能重叠。SQL模式只是数据库中的名称空间,该名称空间中的内容使用成员运算符点“.”进行寻址。这似乎是所有实现中的一个普遍问题。 一个真正的完全(数据库、模式和表)限定查询的示例如下:
select*fromsdatabase.schema.table


现在,问题是,模式和数据库都可以用来将一个表,
foo
与另一个类似命名表
foo
隔离开来。以下是伪代码:
select*from db1.foo
vs.
select*from db2.foo
(db和表之间没有显式的模式)
select*from[db1.]default.foo
vs.
select*from[db1.]alternate.foo
(没有显式的db前缀)出现的问题是,以前的MySQL用户将为一个项目创建多个数据库。在这种情况下,MySQL数据库在功能上类似于Postgres模式,因为Postgres缺乏MySQL现有的跨数据库功能。相反,Postgres应用了更多实现跨表、跨模式的规范,然后为将来的跨数据库功能留出了空间。MySQL在后台的别名、带有数据库的模式(例如创建模式)和创建数据库都是类似的

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


表名前缀在MySQL中用作覆盖模式特性的实践,虽然它不是一个合适的修复,但在MySQL中是常见的实践。wp#u config-其中wp代表wordpress。对我来说,将MS SQL Server中的模式视为c#中的名称空间或Java中的包是很有帮助的。“模式和数据库都可以用来隔离一个表”哇,如果你已经理解MySQL中的模式就是数据库的话,那真是令人困惑。但我想这篇文章的重点是教那些不熟悉的人。谢谢你的报价。