カラムの変更
カラムのデータ型を変更
カラムの順番を変えるときも ALTER TABLE コマンドを使う.
ALTER TABLE [tab] MODIFY [col] [dtype];
カラムを追加
# 末尾に追加 ALTER TABLE [tab] ADD [col] [dtype]; # 先頭に追加 ALTER TABLE [tab] ADD [col] [dtype] FIRST; # カラム a の後ろに追加 ALTER TABLE [tab] ADD [col] [dtype] AFTER a;
カラムの順番を変更
# 先頭に追加 ALTER TABLE [tab] MODIFY [col] [dtype] FIRST; # カラム a の後ろに追加 ALTER TABLE [tab] MODIFY [col] [dtype] AFTER a;
カラム名とカラムのデータ型を変更する
ALTER TABLE [tab] CHANGE [src-col] [dst-col] [dst-dtype];
カラムを削除する
ALTER TABLE [tab] DROP [col];
カラムのデフォルト値を設定
# テーブル作成時に設定 CREATE TABLE [tab] (... [col] [dtype] DEFAULT [value]...) # テーブル作成後に変更 ALTER TABLE [tab] [col] [dtype] DEFAULT [value]
プロンプトの変更
- \d: データベース名
- \h: ホスト名
- \u: ユーザー名
prompt \d:\h>
キー関連
主キーの設定
主キー(primary key) は
- 値の重複を許さない
- NLLLを許さない
ような属性である.
CREATE TABLE [tab] (... [col] [dtype] PRIMARY KEY ...) CREATE TABLE [tab] (... [col] [dtype] KEY ...)
実際に実行してみる.
mysql> CREATE TABLE pkey (no INT PRIMARY KEY, str VARCHAR(10)); Query OK, 0 rows affected (0.13 sec) mysql> DESC pkey; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | no | int(11) | NO | PRI | NULL | | | str | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
一意キーの設定
一意キー(unique key) は
- 値の重複を許さない
属性である.
CREATE TABLE uni(... [col] [dtype] UNIQUE ...);
実際に実行してみる.
mysql> CREATE TABLE ukey (no INT UNIQUE, str VARCHAR(10)); Query OK, 0 rows affected (0.12 sec) mysql> DESC ukey; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | no | int(11) | YES | UNI | NULL | | | str | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
自動で番号をふる
自動連続番号の設定
カラムに以下の定義が必要
- 整数型のデータ型を指定する
- AUTO_INCREMENT をつける
- primary key または unique key にする
# テーブル作成時に指定 CREATE TABLE [tab] (a INT AUTO-INCREMENT PRIMARY KEY) CREATE TABLE [tab] (a INT AUTO-INCREMENT UNIQUE) # テーブル作成後に変更 ALTER TABLE [tab] MODIFY no INT AUTO_INCREMENT PRIMARY KEY; ALTER TABLE [tab] MODIFY no INT AUTO_INCREMENT UNIQUE;
実際に実行してみる.
mysql> CREATE TABLE member (no INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30)); Query OK, 0 rows affected (0.11 sec) mysql> DESC member; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | no | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
期値を設定する
なぜか上手く動かなかった...
ALTER TABLE [tab] AUTO_INCREMENT=0;
インデックス
インデックスの設定
CREATE INDEX [ind] ON [tab]([col]);
インデックスの表示
SHOW INDEX FROM [tab]; SHOW INDEX FROM [tab] \G
インデックスの削除
DROP INDEX [ind] ON [tab];