タイトル: データベースの作成
本稿は MariaDB / MySQL のデータベース新規作成 SQL に関する記事です。CREATE DATABASE 文の構文・典型例・運用上の注意をまとめます。
構文
※ [ ] は任意
|
CREATE DATABASE [IF NOT EXISTS] データベース名 |
CREATE SCHEMA も同じ意味の別名として使えます。
典型的な作成例 (推奨)
|
CREATE DATABASE myapp |
絵文字や一部の漢字を扱うため、文字コードは utf8mb4 (4バイト) を使うのが原則です。古い utf8 (3バイト) は絵文字や一部の漢字で文字化けします。
定義の確認
作成した DB の文字コード・Collation を確認するには次のコマンドを使います。
|
SHOW CREATE DATABASE myapp; |
あるいは information_schema.schemata を SELECT しても確認できます。
|
SELECT schema_name, default_character_set_name, default_collation_name |
主なオプションと使い分け
| オプション | 意味 | 備考 |
|---|---|---|
IF NOT EXISTS | 同名の DB があってもエラーにしない | スクリプトの冪等性に有効 |
CHARACTER SET | 既定文字コード | 多くの場面で utf8mb4 |
COLLATE | 照合順序 (大文字小文字・全半角等の比較ルール) | MySQL 8 既定は utf8mb4_0900_ai_ci、MariaDB は utf8mb4_unicode_ci 等 |
文字コード・Collation の選択指針
| 選定 | 理由 |
|---|---|
| CHARACTER SET utf8mb4 | 絵文字を含む 4 バイト文字 (一部の漢字含む) を正しく保存できる |
| COLLATE utf8mb4_0900_ai_ci (MySQL 8.0+) | Unicode 9.0 ベース、性能・互換性が改善された新標準 |
| COLLATE utf8mb4_unicode_ci | 従来から広く使われ、MariaDB でも利用可 |
| COLLATE utf8mb4_bin | 大文字小文字・全半角を厳密に区別したい場合 |
削除と存在確認
|
-- 一覧表示 |
権限
本番運用では、新規 DB を作ったあとにアプリ用ユーザを作成し、必要最小限の権限のみを付与するのが基本です。
|
CREATE USER 'app'@'%' IDENTIFIED BY '***'; |
注意点
- 命名規則: 小文字スネークケース推奨。Linux と Windows で大文字小文字の扱いが違うため、混在は避ける
- 予約語と被る名前 (
order、group等) は避ける - 本番環境での DROP / 再作成はデータ消失の危険大。必ず事前バックアップ
- レプリケーション環境ではマスタ側でのみ実行し、バイナリログ経由でスレーブに伝搬
- クラウド (RDS / Aurora 等) では、サービス側がデフォルトの文字コードを指定しているため、上書きが必要な場合がある
- テーブル・カラムの Collation はテーブル作成時にも指定可能。DB 既定だけに頼らず、必要に応じて明示する