Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

MySQLのデータベース作成の方法について、サンプルSQLを紹介しながらまとめています。

以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。SQL実行結果の表示にはphpMyAdminを使用しています。

MySQLのデータベース作成の構文

CREATE DATABASE データベース名
CHARACTER SET = デフォルトの文字コード
COLLATE = 照合順序

照合順序は、文字列比較やソート時に使われるルールです。

例えば、文字コードをUTF-8で、照合順序を一般的なものにしたい場合は、mysqlコマンドのプロンプトから、以下を実行します。

mysql> CREATE DATABASE test_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

utf8_general_ciは、デフォルトで使われる照合順序で、「UTF-8」の多言語(general)で、大文字小文字を無視する(ci)という意味合いになります。

実行後は、「Query OK, 1 row affected (0.00 sec)」という簡素なメッセージのみ表示され、詳細は

作成したデータベース情報は、以下のSQLで確認します。

mysql> select * from INFORMATION_SCHEMA.SCHEMATA where SCHEMA_NAME='test_db';
+--------------+-------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+-------------+----------------------------+------------------------+----------+
| def          | test_db     | utf8                       | utf8_general_ci        | NULL     |
+--------------+-------------+----------------------------+------------------------+----------+
1 row in set (0.00 sec)

DEFAULT_CHARACTER_SET_NAME(デフォルトの文字コード)がutf8、DEFAULT_COLLATION_NAME(デフォルトの照合順序)がutf8_general_ciであることが確認できました。

MySQLのデータベース操作方法

MySQLでデータベース名を変更するには、全テーブルのリネーム

MySQLではデータベースをリネームする「renamae database」がMySQL5.1.23以降削除されました。危険な状態に陥るケースがあるから、という理由のようです。

そのため、一度作ったデータベースの名前を変更するには、mysqldumpコマンドで全データをダンプし、別名のデータベースに戻す必要があります。

ただし、データーベースのサイズがあまりにも大きい場合は、この方法は現実的ではありません。

代替方法として、全テーブルに対して、rename tableをおこなうことで、結果データベース名の変更が可能です。

RENAME TABLE 旧データベース名.table_name TO 新データベース名.table_name

具体的にはshow tablesでテーブル名一覧を取得し、上記のSQLを全テーブルに対して実行するSQL文のファイルを作成して、実行すると良いでしょう。

全テーブルをリネーム用のSQLを生成する方法が、以下のページで公開されていました。

参考)MySQLでdumpせずにRENAME DATABASE を実現する – Qiita

MySQLでデータベースを削除しても、ユーザ権限は残る

MySQLでは、drop databaseでデータベースを削除後も、データベースに紐付いているユーザ権限は削除されずにそのまま残ります。

例えば、データベースtest_dbにユーザtest_userが権限を持っているケースを見てみます。

mysql> show grants for test_user;
+--------------------------------------------------------+
| Grants for test_user@%                                 |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'%'                  |
| GRANT ALL PRIVILEGES ON `test_db`.* TO 'test_user'@'%' |
+--------------------------------------------------------+

show grantsで確認すると、test_userは、データベースtest_dbの全てのテーブルに権限を持ってます。

データベース削除後のユーザ権限を確認してみましょう。

mysql> drop database if exists test_db;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for test_user;
+--------------------------------------------------------+
| Grants for test_user@%                                 |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'%'                  |
| GRANT ALL PRIVILEGES ON `test_db`.* TO 'test_user'@'%' |
+--------------------------------------------------------+

あデータベース削除後も、ユーザの権限は変わらず残っています。

なお、以下のSQLは、対象のデータベース名が存在するときのみデーターベースを削除します。

DROP DATABASE IF EXISTS データベース名;

データベースに対する権限を削除するには、revokeで権限を削除します。

show grantsで権限が削除されたことが確認できました。

mysql> revoke all on test_db.* from test_user;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for test_user;
+---------------------------------------+
| Grants for test_user@%                |
+---------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'%' |
+---------------------------------------+

まとめ

ポテパンダの一言メモ
  • MySQLでデータベースを作成するにはcreate databse
  • 作成後の文字コードや照合順序を参照するには、INFORMATION_SCHEMA.SCHEMATAテーブルをselectする
  • データベースをリネームするには、全テーブルにrename tableを実行
  • データベースを削除後も、ユーザの権限(grants)は残るので、revokeを実行して削除する必要がある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。