テーブル内容の変更
テーブル内容の変更には ALTER TABLE コマンドを使います。テーブル自体の変更やテーブルに属するカラムの変更も ALTER TABLE コマンドを使います。
ALTER は変更を意味するコマンドです。
上記の例では、ALTER TABLE
はテーブルの内容を変更することを示しています。次のALTER COLUMN .. TYPE ..
はテーブルに属するカラムのデータタイプを変更することを示しています。
ALTER TABLE によって変更できるものには、テーブル自体の名称の変更とカラムごとの名称やデータタイプの変更やカラムの削除や追加、制約の追加や削除などがあります。
テーブルの詳細や制約については以下のコマンドで確認することができます。
テーブル自体の変更
テーブル名称を変更
テーブルの名称を変更するには以下のようにします。
他にも変更できるテーブルの要素があるのですがその方法はデータベースによって異なるため、ここでは名称だけ取り上げます。その他については各データベースの仕様を参照してください。
以下はテーブルの名称を変更する簡単な作成例です。
テーブル名 name を new_name に変更します。
カラムの変更
テーブルのカラムの変更、追加、削除は ALTER TABLE table_name の後に ALTER、ADD、DROP といったコマンドを続けます。
カラム名を変更
以下はカラム名を変更する簡単な例です。
カラム名 old_col_name を new_col_name に変更します。
データタイプを変更
PostgreSQL ではカラムのデータタイプを変更できません。一旦該当するカラムを削除の後に改めてカラムを追加する方法があります。
その際にデータが消滅しますので十分に注意してください。
以下はカラムのデータタイプを変更する簡単な例です。
カラム col_name を text 型に変更します。
カラムのデータタイプの変更について詳しくは列のデータタイプを変更 ALTER TABLE、ALTER COLUMN、TYPE
を参照してください。
カラムの追加
以下はカラムのデータタイプを変更する簡単な例です。
カラム col_name を VARCHAR(20) で追加します。
カラムの追加について詳しくはテーブルに列を追加 ALTER TABLE、ADD COLUMN
を参照してください。
カラムを削除
以下はカラムを削除する簡単な例です。
カラム col_name を削除します。
カラムの削除について詳しくはテーブルから列を削除 ALTER TABLE、DROP COLUMN
を参照してください。
デフォルトの設定を変更
以下は DEFAULT の設定を変更する簡単な例です。
カラム col_name にデフォルト値として NULL を設定します。
カラム col_name のデフォルト設定を削除します。
NOT NULL 制約を変更
MySQL で NOT NULL 制約を設定したり削除するにはカラムの定義を NOT NULL の有無によって定義し直します。
NOT NULL とは NULL、何も値がないことを拒否します。
例えば NOT NULL 制約を設定するには以下のように NOT NULL が有る状態で定義し直します。
NOT NULL 制約を削除するには以下のように NOT NULL が無い状態で定義し直します。
以下は PostgreSQL での簡単な例です。
カラム col_name に NOT NULL を設定します。
カラム col_name の NOT NULL 設定を削除します。
PRIMARY KEY 制約の追加・削除
PRIMARY KEY 制約の追加
以下は PRIMARY KEY 制約と追加する簡単な例です。
PRIMARY KEY 制約を追加したいカラム名( column_name )を指定します。PRIMARY KEY は複数のカラムに設定することができません。
PRIMARY KEY 制約の削除
PRIMARY KEY の変更はできません。一度削除して追加する必要があります。
以下は PRIMARY KEY 制約と削除する簡単な例です。
テーブル table_name の DROP PRIMARY KEY を削除します。
FOREIGN KEY 制約の追加・削除
FOREIGN KEY 制約の追加
以下は FOREIGN KEY を追加する簡単な例です。
カラム col_name に ref_table_name テーブルの ref_column カラムとの外部キーを設定します。
FOREIGN KEY 制約の削除
FOREIGN KEY の変更はできません。一度削除して追加する必要があります。
PostgreSQL で FOREIGN KEY を削除するには、FOREIGN KEY を作成したときに付けられた constraint_name を指定します。
以下は FOREIGN KEY を削除する簡単な例です。
FOREIGN KEY fk_symbol を削除します。fk_symbol は CONSTRAINT 名または制約名です。
FOREIGN KEY 制約の CONSTRAINT 名または制約名は、MySQL ではSHOW CREATE TABLE table_name;
で、PostgreSQL では\d table_name
で確認できます。
UNIQUE 制約の追加・削除
UNIQUE 制約は記録するカラムデータに同じものがないようにするための制約です。
複数のカラムを組み合わせることができます。
UNIQUE 制約の追加
以下は UNIQUE 制約の追加の簡単な例です。
カラム col_name に UNIQUE 制約を設定します。
複数のカラムの組み合わせに同じデータがないようにすることもできます。
UNIQUE 制約の削除
以下は UNIQUE 制約の削除の簡単な例です。
uk_symbol は UNIQUE 制約を表す CONSTRAINT 名または制約名です。
UNIQUE 制約の CONSTRAINT 名または制約名は、MySQL ではSHOW CREATE TABLE table_name;
で、PostgreSQL では\d table_name
で確認できます。
UNIQUE KEY の変更はできません。一度削除して追加する必要があります。
CHECK 制約の追加・削除
CHECK 制約の追加
以下は CHECK 制約の追加の簡単な例です。
カラム col_name の値が 100 以上であるように制約を追加しています。
CHECK 制約の変更
MySQL では CHECK 制約を機能させないようにすることができるようです。
PostgreSQL では変更はできません。一度削除して追加することはできます。
CHECK 制約の削除
以下は CHECK 制約の削除の簡単な例です。
chck_symbol は CHECK 制約を表す CONSTRAINT 名または制約名です。
UNIQUE 制約の CONSTRAINT 名または制約名は、MySQL ではSHOW CREATE TABLE table_name;
で、PostgreSQL では\d table_name
で確認できます。