在MySQL中,模式和数据库之间有区别吗?在SQL Server中,数据库是与模式相关的高级容器。

我读到“创建模式”和“创建数据库”在MySQL中做的基本上是一样的事情,这让我相信模式和数据库是相同对象的不同词汇。


当前回答

在MySQL模式是数据库的同义词。 对于初学者来说,这是相当令人困惑的,他们跳到MySQL,第一天就发现了schema这个词,所以伙计们不用担心,因为两者是一样的。

当你第一次启动MySQL时,你需要创建一个数据库(像任何其他数据库系统一样)来使用,这样你就可以create SCHEMA,这就是create database

在其他一些数据库系统中,模式表示数据库的一部分或表的集合,模式的集合就是一个数据库。

其他回答

是的,人们在谈到MySQL时可以互换使用这些术语。尽管您经常会听到人们不恰当地将整个数据库服务器称为数据库。

PostgreSQL支持模式,它是数据库的一个子集: https://www.postgresql.org/docs/current/static/ddl-schemas.html

A database contains one or more named schemas, which in turn contain tables. Schemas also contain other kinds of named objects, including data types, functions, and operators. The same object name can be used in different schemas without conflict; for example, both schema1 and myschema can contain tables named mytable. Unlike databases, schemas are not rigidly separated: a user can access objects in any of the schemas in the database they are connected to, if they have privileges to do so.

模式类似于操作系统级别的目录,只是模式不能嵌套。

在我看来,MySQL不是一个参考数据库。你不应该引用MySQL来解释。MySQL实现了非标准SQL,有时还声称一些它不支持的特性。例如,在MySQL中,CREATE模式只创建一个DATABASE。这真的是在误导用户。

这种词汇表被dba称为“MySQLism”。

在MySQL术语表中定义:

在MySQL中,模式在物理上等同于数据库。在MySQL SQL语法中,可以用关键字SCHEMA代替DATABASE,例如用CREATE SCHEMA代替CREATE DATABASE。 其他一些数据库产品进行了区分。例如,在Oracle数据库产品中,模式只代表数据库的一部分:单个用户拥有的表和其他对象。

以Microsoft SQL Server为例,模式指的是单个用户,是另一层容器,按指示服务器、数据库、模式、表和对象的顺序。

例如,当您打算更新dbo时。Table_a和语法不是完全限定的,比如 更新表。a DBMS不能决定使用预期的表。本质上,DBMS默认会使用myuser.table_a

不像Postgres, SQL server模式是数据库的集合 但是在mysql模式和数据库中是一样的 MySQL不支持模式的概念。在MySQL中,schema和schemas是数据库和数据库的同义词。

当用户连接到MySQL时,他们不会连接到特定的数据库。相反,它们可以访问拥有权限的任何表