2.

データベース関連

編集

本稿は MariaDB / MySQL のデータベース関連 SQL に関する記事です。データベース自体の作成・確認・削除・選択・文字コード設定といった、データベースレベルの操作をまとめます。

子ページから項目を選択してください。

本ページの子ページ

データベース関連 SQL の早見表

操作SQL
一覧表示SHOW DATABASES;
作成CREATE DATABASE 名 [DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci];
選択USE 名;
現在のDB確認SELECT DATABASE();
定義の確認SHOW CREATE DATABASE 名;
文字コードを変更ALTER DATABASE 名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
削除DROP DATABASE 名;
存在確認付き作成CREATE DATABASE IF NOT EXISTS 名 ...;
存在確認付き削除DROP DATABASE IF EXISTS 名;

典型的なデータベース作成

-- 推奨: utf8mb4 (絵文字対応)
CREATE DATABASE myapp
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- 利用宣言
USE myapp;

-- 定義確認
SHOW CREATE DATABASE myapp;

information_schema での確認

SELECT schema_name, default_character_set_name, default_collation_name
  FROM information_schema.schemata
 ORDER BY schema_name;

文字コードと照合順序 (Collation) の選定

選定理由
utf8mb4 を使う絵文字や一部の漢字を扱えない utf8 (3バイト) ではなく、4バイトの utf8mb4
utf8mb4_0900_ai_ci (MySQL 8.0+)新規プロジェクトの既定。MySQL 8 系で性能・互換性が改善
utf8mb4_unicode_ci従来から広く使われている。互換性目的
utf8mb4_bin厳密に大小区別をしたい場合 (ID等)

権限とユーザ管理

新規 DB を作ったら、アプリ用ユーザに必要最小限の権限を付与します。

-- ユーザ作成
CREATE USER 'app'@'%' IDENTIFIED BY '********';

-- DB 単位で権限付与 (SELECT/INSERT/UPDATE/DELETE のみ)
GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'app'@'%';

-- 反映
FLUSH PRIVILEGES;

注意点

  • DROP DATABASE は復元できない。本番では事前に必ずバックアップ
  • 文字コードを後から変更するとテーブル・カラム単位の Collation が混在しやすい。新規作成時に決める
  • 本番アプリ用ユーザに ALL PRIVILEGESGRANT 権限を渡さない
  • レプリケーション環境では、マスタ側でのみ作成 SQL を実行する (バイナリログ経由でスレーブへ伝搬)
  • クラウド (RDS / Aurora) では root 相当のスーパー権限が制限されており、一部の DDL は不可

関連

編集
Post Share
子ページ
  1. データベースの作成
同階層のページ
  1. 基本構文
  2. データベース関連
  3. テーブル関連
  4. ユーザー関連
  5. メタデータ関連
  6. NULL判定を伴うCASE分の使用方法