Carpe Diem

備忘録。https://github.com/jun06t

MySQL 既存のデータ構造の編集

文字コードを設定ファイルで指定する前にDBを作成してしまい、あとから変更することを余儀なくされた、といった場面を想定しています。 ◆データベースの文字コードを後から変更 まずはDBの構造を確認します。 mysql> status; Server characterset:    utf8 Db     characterset:    latin1 Client characterset:    utf8 Conn.  characterset:    utf8 文字コードを変更します。 mysql> ALTER DATABASE データベース名 character set utf8; mysql> status; Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 ちゃんと変更されます。 ◆テーブルの文字コードの変更 テーブルの文字コード確認します。 mysql> SHOW CREATE TABLE テーブル名 \G; テーブルの文字コード変換します。 mysql> ALTER TABLE テーブル名 CHARSET=utf8; ◆テーブル名の変更 変更前:pre_table 変更後:post_table とすると mysql> ALTER TABLE pre_table RENAME TO post_table; ◆新しい列や制約の追加 – ADD句 ALTER TABLE <テーブル名> ADD COLUMN <列名> <型名> [<制約>]; という書式になります。ADD句をカンマ「,」で繋ぐことにより一文で複数のカラムや制約を追加することが出来ます。また新しい列の挿入箇所はFIRSTやAFTER句で指定することが出来ます。 Ex) mysql> ALTER TABLE test_table     -> ADD COLUMN new_column VARCHAR(256) NOT NULL,     -> ADD COLUMN new_column2 TEXT NOT NULL;     -> AFTER old_column1; ◆既存の列の構造(列名、型、制約)を変更 – CHANGE COLUMN句 ALTER TABLE <テーブル名> CHANGE COLUMN <既存の列名> <新しい列名> <型名> <制約>; という書式。 Ex) mysql> ALTER TABLE test_table     -> CHANGE COLUMN old_field new_field INT(11) NOT NULL AUTO_INCREMENT; ◆列名を変更せずに既存の列のデータ型・制約を変更 – MODIFY句 ALTER TABLE <テーブル名> MODIFY COLUMN <既存の列名> <新しいデータ型名> [<制約>]; ◆既存の列の削除 – DROP句 ALTER TABLE <テーブル名> DROP COLUMN <対象の列名>; ソース: MySQL データベースの文字コードを後から変換する MySQL: 既存テーブルの構造の変更 – ALTER TABLE文、CHANGE COLUMN句