MySQLのCREATE DATABASEステートメントは、データベースの作成時に必須のコマンドです。MySQLを初めて使用するという方は、まず「CREATE DATABASE」から始めることなります。そこで今回の記事では、MySQLビギナーの方に向けてMySQL CREATE DATABASEの主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきましょう。
- MySQLのCREATE DATABASEはデータベースを作成する際のコマンド
- MySQLを使ったCREATE DATABASEのハンズオン
MySQLのCREATE DATABASEとは
MySQLのCREATE DATABASEは、新しいデータベースを作成する機能を持っています。MySQLなどデータベースを扱う際に、SELECTやINSERTなどのステートメントを使用してデータベースの取得・登録を行うことができます。しかし、これらの操作は「データベース」がなければ行えません。全ての操作の前に、まずは「CREATE DATABAE」を行うことを覚えておきましょう。
MySQL CREATE DATABASEの最も基本的な構文を見てみましょう。
CREATE DATABASE データベース名;
基本的には、「CREATE DATABASE」の後に任意のデータベース名を指定することで、データベースを作成することができます。
少し複雑な話になりますが「CREATE DATABASE」コマンドを入力する際、同時に「文字コード」の指定を行うことも可能です。
「文字コード」という言葉を簡単に説明することはできませんが、簡単に言うと「文字と数字の対応表」です。
コンピュータは数値しか読み取ることができないため、「この数値ならこの文字」と言う対応表が必要となります。例えば、平仮名の「あ」の文字コードは「e3 81 80」です。
文字コードにはいろいろな種類がありますが、世界的によく使われているのがUTF-8という文字コードであることを覚えておきましょう。
MySQL CREATE DATABASEで文字コードを指定する際の構文を見てみましょう。
CREATE DATABASE データベース名 DEFAULT CHARACTER SET 文字コード名;
データベースを作成してデータを取得した際に文字化けの問題が起こった際には、文字コードを指定してみましょう。
【関連記事】
▶︎MySQL初心者にマスターしてほしいコマンドラインからの使用方法
▶︎【SQL入門】概要と使い方を易しく解説!データベース言語を始めよう
MySQLでCREATE DATABASEハンズオンにトライ
こちらでは、実際にMySQLというデータベースを使用してCREATE DATABASEを使ってみましょう。
準備
まずはMySQLを使用するための準備をしていきます。
MySQLのインストール・接続
まだMySQLをインストールしていない場合は、インストールしましょう。
$ brew install mysql
MySQLのインストールが終了したら、接続します。
$ sudo mysql -u root -p
データベースの作成
それではCREATE DATABASEを使って、データベースを作成してみましょう。
mysql> CREATE DATABASE test; Query OK, 1 row affected (0.04 sec)
「Query OK, 1 row affected (〇〇 sec)」と表示されたら、データベースの作成に成功しています。
データベースの確認
データベースの確認を行うことも可能です。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 6 rows in set (0.02 sec)
「SHOW DATABASES」コマンドを用いることで、すでに存在しているデータベースを確認することができます。
例えば、「CREATE DATABASE」コマンドを入力した際に以下のようなエラーが発生したとしましょう。
mysql> CREATE DATABASE test; ERROR 1007 (HY000): Can't create database 'test'; database exists
これは「database exists」とある通り、すでに存在しているデータベース名と同じデータベースを作成しようとしたことで発生したエラーです。上記のようにデータベース作成時にエラーが発生した場合は、「SHOW DATABASES」コマンドを用いて、既存のデータベースを確認してみましょう。
文字コードを指定したデータベースの作成
次に文字コードを指定したデータベースの作成を行いましょう。先ほど紹介した「utf-8」を文字コードに指定して、作成してみます。
mysql> CREATE DATABASE utf8_test DEFAULT CHARACTER SET utf8; Query OK, 1 row affected, 1 warning (0.01 sec)
こちらも「Query OK, 1 row affected (〇〇 sec)」と表示されていれば、データベースの作成に成功しています。また、指定できる文字コード名は「SHOW CHARACTER SET」コマンドで確認可能です。
mysql> SHOW CHARACTER SET; +----------+---------------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+---------------------------------+---------------------+--------+ | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | binary | Binary pseudo charset | binary | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | cp866 | DOS Russian | cp866_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set (0.00 sec)
「Charset 」カラムに表示されているのが、「DEFAULT CHARACTER SET」後に指定できる文字コードの名称です。
データベースの指定
データベースを作成した後は、使用するデータベースを指定しなければなりません。その際に用いるのが「USE データベース名」コマンドです。こちらも試してみましょう。
mysql> USE test; Database changed
現在、使用しているデータベースを確認する際には「SELECT DATABASE()」コマンドが使用できます。「test」データベースが指定できているか確認してみましょう。
mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | test | +------------+ 1 row in set (0.00 sec)
現在、使用しているデータベースが「test」であることが確認できました。
データベースの削除
最後にデータベースの削除を行ってみましょう。「DROP DATABASE データベース名」コマンドで削除ができます。
mysql> DROP DATABASE test; Query OK, 0 rows affected (0.03 sec)
削除できているか、「SHOW DATABASES」コマンドで確認してみましょう。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | utf8_test | +--------------------+ 6 rows in set (0.00 sec)
「test」というデータベースが削除されていることが分かります。データベース操作に関するコマンドを一連の流れで覚えておきましょう。
まとめ
今回の記事では、MySQL DATABASEの主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきました。MySQLなどのデータベースを扱う際には、まず最初に行うべきコマンドなので、必ず覚えておくようにしましょう。
データベースとデータの関係について説明しましょう。
「電話帳」を想像してみてください。電話帳は、電話番号や住所といった「データ」の集合体です。ここでいう「電話帳」はデータベース、そして「電話番号」などの情報は、データを指します。
ちなみに「テーブル」という言葉を聞いたことがある人もいるかもしれません。これも電話帳で表すと「電話番号や住所を整理する表」に例えることができます。
データベースは仮想の存在のため、現実の何かと完全に一致することはありませんが、SQLを学び始めた段階では身近な物に例えることでイメージがしやすくなるでしょう。