MySQLにおけるデータベースとは
MySQLでは、テーブルやインデックスのまとまりをデータベースと呼んでいます。またスキーマという用語も、MySQLではデータベースと同じです。MySQL以外の多くのデータベースにはスキーマ所有者という概念がありますが、MySQLには所有者の概念はありません。
データベース作成
データベースを作成するSQL文は以下の通りです。
CREATE DATABASE データベース名 [CHARACTER SET = 文字コード名, COLLATION = COLLATION名];
※ []内は必須ではないオプションです
データベース作成時に利用できるオプションは文字コードCHARACTER SETおよび文字の照合順序COLLATION です。サーバ全体で文字コードを指定している場合には個別のデータベースで再度指定する必要は通常はありません。なんらかの理由で特定のデータベースの文字コードを変更したい場合のみに変更します。
文字の照合順序とは、例えばひらがなとカタカナ、または全角と半角のある文字、またはを別の文字を同一の文字と見なすかなどを挙動を設定します。どのような文字か同一と見なされるかは、MySQLユーザ会会長とみたまさひろさんのブログにまとめられていますので参照してください。
テーブル作成
データベースを作成するSQL文は以下の通りです。主なオプションのみ記載します。
CREATE TABLE テーブル名 (列の定義) [テーブルオプション]
列の定義は、列の名称とデータ型、列のオプションの組み合わせになります。列のオプションでは、その列をインデックスに指定する場合は種類などが設定できます。他にも列ごとに文字コードを定義することや、初期値および制約の設定もオプションとして設定可能です。具体的な構文の例は後ほど改めて紹介します。
種類 | 定義オプション名 | 詳細 |
主キー | PRIMARY | 行を識別するための列。重複する値は格納できず、NULLも格納できない。 |
ユニークキー | UNIQUE | 主キーに似て、重複する値は格納できないが、NULLは格納できる。 |
ノンユニークキー | KEY | 重複する値は格納できる。 |
空間インデックス | SPATIAL | 座標などの空間情報を格納するための特殊なインデックス ※MyISAMのみ |
全文検索インデックス | FULLTEXT | 全文検索のための特殊なインデックス ※日本語非対応 |