13.1.12 CREATE DATABASE Statement
CREATE {DATABASE | SCHEMA} db_name ...create_option: { CHARACTER SET charset_name | COLLATE collation_name | ENCRYPTION {'Y' | 'N'}}
CREATE DATABASE
与えられた名前でデータベースを作成します。 このステートメントを使用するには、そのデータベースに対してCREATE
権限が必要です。 CREATE SCHEMA
は CREATE DATABASE
の同義語である。
データベースが存在し、IF NOT EXISTS
を指定しなかった場合、エラーが発生します。
CREATE DATABASE
は、アクティブな LOCK TABLES
文を持つセッション内では許可されません。
各create_option
はデータベースの特性を指定します。
-
CHARACTER SET
オプションは、データベースのデフォルトの文字セットを指定します。COLLATE
オプションは、データベースのデフォルトの照合順序を指定します。 キャラクタセットと照合順序の名前については、第10章「キャラクタセット、照合順序、Unicode」を参照のこと。利用可能なキャラクタセットと照合順序を確認するには、それぞれ
SHOW CHARACTER SET
とSHOW COLLATION
ステートメントを使用します。 13.7.7.3項 「SHOW CHARACTER SETステートメント」、および13.7.7.4項 「SHOW COLLATIONステートメント」を参照してください。 -
MySQL 8.0.16 で導入された
ENCRYPTION
オプションは、デフォルトのデータベース暗号化を定義し、これはデータベース内で作成されたテーブルによって継承されます。 許可される値は'Y'
(暗号化有効) および'N'
(暗号化無効) です。ENCRYPTION
オプションが指定されない場合、default_table_encryption
システム変数の値がデフォルトのデータベース暗号化を定義する。table_encryption_privilege_check
システム変数が有効な場合、default_table_encryption
設定と異なるデフォルトの暗号化設定を指定するにはTABLE_ENCRYPTION_ADMIN
権限が必要である。 詳細については、「スキーマと一般テーブルスペースの暗号化デフォルトの定義」を参照してください。
MySQL のデータベースは、データベース内のテーブルに対応するファイルを含むディレクトリとして実装されています。 最初に作成されたデータベースにはテーブルがないため、CREATE DATABASE
ステートメントは MySQL データ ディレクトリの下にディレクトリを作成するだけです。 許容されるデータベース名のルールは 「スキーマオブジェクト名」 に記載されています。 データベース名に特殊文字が含まれている場合、「ファイル名への識別子のマッピング」で説明されているように、データベースディレクトリの名前にはそれらの文字がエンコードされたバージョンが含まれます。
データディレクトリの下に手動でディレクトリを作成して(たとえば mkdir を使用して)データベースディレクトリを作成することは MySQL 8.0 ではサポートされていません。
データベースを作成する場合、ディレクトリとその中のファイルの管理はサーバーに任せます。 データベースのディレクトリとファイルを直接操作すると、不整合や予期しない結果を引き起こす可能性があります。
MySQL にはデータベースの数に制限はありません。 基礎となるファイルシステムには、ディレクトリの数に制限がある場合があります。
また、データベースを作成するために mysqladmin プログラムを使用することができます。 mysqladmin – A MySQL Server Administration Program」(Mysqladmin – A MySQL Server Administration Program) を参照してください。