MySQLのスキーマとデータベースに違いはありますか? SQL Serverでは、データベースはスキーマに関して上位レベルのコンテナーです。
私は、Create Schema
とCreate Database
がMySQLでは本質的に同じことをしていることを読みました。それは、スキーマとデータベースが同じオブジェクトに対して異なる単語であると信じるように私に導きます。
MySQLの用語集 で定義されているように、
MySQLでは、物理的に、スキーマは、データベースと同義です。 MySQL SQL構文では、
SCHEMA
の代わりにキーワードDATABASE
を使用できます。たとえば、CREATE SCHEMA
の代わりにCREATE DATABASE
を使用します。他のデータベース製品には違いがあります。たとえば、Oracle Database製品では、スキーマは、データベースの一部のみを表します。ユーザー。
データベースサーバに依存します。 MySQL
は気にしません、それは基本的に同じことです。
Oracle
、DB2
、およびその他のエンタープライズレベルのデータベースソリューションは区別されます。通常、スキーマはテーブルの集まりで、データベースはスキーマの集まりです。
MySqlのドキュメント を参照、
CREATE DATABASEは与えられた名前でデータベースを作成します。この文を使用するには、データベースに対するCREATE権限が必要です。 CREATE SCHEMAはMySQL 5.0.2以降のCREATE DATABASEの同義語です。
PostgreSQLはデータベースのサブセットであるスキーマをサポートします。 https://www.postgresql.org/docs/current/static/ddl-schemas.html
データベースには1つ以上の名前付きスキーマが含まれており、名前付きスキーマにはテーブルが含まれています。スキーマには、データ型、関数、演算子など、他の種類の名前付きオブジェクトも含まれています。同じオブジェクト名を異なるスキーマで競合なしに使用できます。たとえば、schema1とmyschemaの両方にmytableという名前のテーブルを含めることができます。データベースとは異なり、スキーマは厳密には分離されていません。ユーザーは、アクセス権があれば、接続先のデータベース内の任意のスキーマ内のオブジェクトにアクセスできます。
スキーマはネストできないことを除けば、オペレーティングシステムレベルのディレクトリに似ています。
私の控え目な意見では、MySQLは参照データベースではありません。説明のためにMySQLを引用しないでください。 MySQLは非標準のSQLを実装し、サポートしていない機能を主張することがあります。たとえば、MySQLでは、CREATEスキーマはDATABASEを作成するだけです。それは本当に誤解を招くユーザーです。
この種の語彙は、DBAによって「MySQLism」と呼ばれています。
はい、人々はMySQLに関してこれらの用語を同じ意味で使用しています。多くの場合、人々はデータベースサーバー全体をデータベースとして不適切に参照しているのを聞くでしょう。
mySQLではschemaはdatabaseの同義語です。初心者がMySQLに飛び込んで初日にWordschemaを見つけたので、混乱を招くので、どちらも同じなので心配する必要はありません。
初めてMySQLを起動するときは、他のデータベースシステムと同じようにデータベースを作成する必要があります。そのため、 CREATE SCHEMA とすることができます CREATE DATABASE
他のデータベースシステムでは、スキーマはデータベースの一部またはテーブルの集まりを表し、スキーマの集まりはデータベースです。
たとえば、Microsoft SQL Serverでは、スキーマは単一のユーザーを参照し、サーバー、データベース、スキーマ、テーブル、およびオブジェクトを示す順序でコンテナの別のレベルになります。
たとえば、dbo.table_aを更新しようとしていて、UPDATE table.aのように構文が完全修飾されていない場合、DBMSは目的のテーブルを使用することを決定できません。基本的にデフォルトではDBMSはmyuser.table_aを利用します。