列の定義
列の定義は、列の名称とデータ型、列のオプションの組み合わせになります。列のオプションでは、その列をインデックスに指定する場合は種類などが設定できます。他にも列ごとに文字コードを定義することや、初期値および制約の設定もオプションとして設定可能です。データ型については第6回を参照してください。
Cityテーブルの例では、ID列の場合、データ型が11桁の整数、列のオプションには"NOT NULL"と”AUTO_INCREMENT"が設定されています。次のName列では、データ型が35文字の固定長文字列、列のオプションには"NOT NULL"と”デフォルト値として長さ0の文字列"が設定されています。
列名 | データ型 | 列のオプション |
`ID` | int(11) | NOT NULL AUTO_INCREMENT |
`Name` | char(35) | NOT NULL DEFAULT '' |
NULL | NULL値を許容する |
NOT NULL | NULL値を許容しない=必ず値を登録する |
AUTO_INCREMENT | 値が明示的に指定されなかった場合か0を挿入した場合に既存の最大値に1を加えた値を登録 |
DEFAULT |
値が明示的に指定されなかった場合に自動的に登録される値
|
なお、"NULL"と"NOT NULL"はいずれか1つのみが指定可能であり、明示的に指定しなかった場合は"NULL"が自動的に指定されます。
"AUTO_INCREMENT"に関する注意事項
- テーブルに1つだけ設定可能
- 整数型の列のみに指定可能
- インデックスが設定されている必要がある
- "AUTO_INCREMENT"を指定した列に"DEFAULT"値は設定不可
- LAST_INSERT_ID()関数を実行すると直近の挿入値が確認可能
テーブルオプション
テーブル全体の設定を行うオプションをテーブル定義の最後に追加します。CHARACTER SETやCOLLATEでテーブル全体の文字コードなどの指定ができるほか、MySQLならではの設定としてはストレージエンジンの指定があります。
テーブルの削除
DROP TABLE文は既存のテーブルを削除します。テーブル内のデータ自動的に削除されます。構文は以下の通りです。
DROP TABLE データベース名
指定可能なオプションはありません。また、DROP DATABASE文同様にDROP TABLE文で削除されたテーブルを自動的に復旧する方法はないので実行には注意が必要です。
テーブルの変更
ALTER TABLE文は既存のテーブルを変更します。このALTER TABLE文で可能な操作は以下の通りです。
- テーブル名の変更
- 列の追加
- 列の削除
- 列の変更(列名、データ型、文字コード、デフォルト値)
- 列の移動
- テーブル全体の文字コードの変更
- インデックスの追加
- インデックスの削除
テーブル名の変更
構文は以下の通りです。
ALTER TABLE 古いテーブル名 RENAME TO 新しいテーブル名
RENAME TABLE文でも同様にテーブル名の変更ができますが、こちらのメリットは複数のテーブル名の変更を一括して実行できる点です。
例)tbl_Aをtbl_oldに、tbl_newを新たにtbl_aにする場合
RENAME TABLE tbl_A TO tbl_old, tbl_new TO tbl_A;