web-dev-qa-db-ja.com

MySQLのスキーマ/データベースの違い

MySQLのスキーマとデータベースに違いはありますか? SQL Serverでは、データベースはスキーマに関して上位レベルのコンテナーです。

私は、Create SchemaCreate DatabaseがMySQLでは本質的に同じことをしていることを読みました。それは、スキーマとデータベースが同じオブジェクトに対して異なる単語であると信じるように私に導きます。

242
Lloyd Banks

MySQLの用語集 で定義されているように、

MySQLでは、物理的に、スキーマは、データベースと同義です。 MySQL SQL構文では、SCHEMAの代わりにキーワードDATABASEを使用できます。たとえば、CREATE SCHEMAの代わりにCREATE DATABASEを使用します。

他のデータベース製品には違いがあります。たとえば、Oracle Database製品では、スキーマは、データベースの一部のみを表します。ユーザー。

281
eggyal

データベースサーバに依存します。 MySQLは気にしません、それは基本的に同じことです。

OracleDB2、およびその他のエンタープライズレベルのデータベースソリューションは区別されます。通常、スキーマはテーブルの集まりで、データベースはスキーマの集まりです。

52
user2631022

MySqlのドキュメント を参照、

CREATE DATABASEは与えられた名前でデータベースを作成します。この文を使用するには、データベースに対するCREATE権限が必要です。 CREATE SCHEMAはMySQL 5.0.2以降のCREATE DATABASEの同義語です。

16
Akash KC

PostgreSQLはデータベースのサブセットであるスキーマをサポートします。 https://www.postgresql.org/docs/current/static/ddl-schemas.html

データベースには1つ以上の名前付きスキーマが含まれており、名前付きスキーマにはテーブルが含まれています。スキーマには、データ型、関数、演算子など、他の種類の名前付きオブジェクトも含まれています。同じオブジェクト名を異なるスキーマで競合なしに使用できます。たとえば、schema1とmyschemaの両方にmytableという名前のテーブルを含めることができます。データベースとは異なり、スキーマは厳密には分離されていません。ユーザーは、アクセス権があれば、接続先のデータベース内の任意のスキーマ内のオブジェクトにアクセスできます。

スキーマはネストできないことを除けば、オペレーティングシステムレベルのディレクトリに似ています。

私の控え目な意見では、MySQLは参照データベースではありません。説明のためにMySQLを引用しないでください。 MySQLは非標準のSQLを実装し、サポートしていない機能を主張することがあります。たとえば、MySQLでは、CREATEスキーマはDATABASEを作成するだけです。それは本当に誤解を招くユーザーです。

この種の語彙は、DBAによって「MySQLism」と呼ばれています。

5
Jean-Michel P.

はい、人々はMySQLに関してこれらの用語を同じ意味で使用しています。多くの場合、人々はデータベースサーバー全体をデータベースとして不適切に参照しているのを聞くでしょう。

3
Mike Brant

mySQLではschemadatabaseの同義語です。初心者がMySQLに飛び込んで初日にWordschemaを見つけたので、混乱を招くので、どちらも同じなので心配する必要はありません。

初めてMySQLを起動するときは、他のデータベースシステムと同じようにデータベースを作成する必要があります。そのため、 CREATE SCHEMA とすることができます CREATE DATABASE

他のデータベースシステムでは、スキーマはデータベースの一部またはテーブルの集まりを表し、スキーマの集まりはデータベースです。

2
Riz

たとえば、Microsoft SQL Serverでは、スキーマは単一のユーザーを参照し、サーバー、データベース、スキーマ、テーブル、およびオブジェクトを示す順序でコンテナの別のレベルになります。

たとえば、dbo.table_aを更新しようとしていて、UPDATE table.aのように構文が完全修飾されていない場合、DBMSは目的のテーブルを使用することを決定できません。基本的にデフォルトではDBMSはmyuser.table_aを利用します。

0
EliD