テーブル操作


テーブルの構造を表示する

DESC テーブル名;
例えば以下のような感じ。
=>
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI | 0       |       |
| name  | varchar(32)      | NO   |     | NULL    |       |
| date  | datetime         | NO   |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+

テーブルを作成する

例えばidをプライマリーキーにして、INNODBを使った場合。

CREATE TABLE  テーブル名(
`id` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' ,
`name` VARCHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`date` DATETIME NOT NULL ,
PRIMARY KEY (  `id` )
) ENGINE = INNODB;

テーブルを削除する

DROP TABLE テーブル名;

テーブル名を変更する

ALTER TABLE 変更前テーブル名 RENAME TO 変更後テーブル名;

テーブルを複製する

テーブル tableA のデータをすべてテーブル tableB にコピーします。

CREATE TABLE tableB AS SELECT * FROM tableA;

テーブルの列を追加する

// 末尾に追加する例
ALTER TABLE テーブル名 ADD 列名A INT(10) UNSIGNED NOT NULL DEFAULT '0';
// 最初に追加する例
ALTER TABLE テーブル名 ADD 列名A INT(10) UNSIGNED NOT NULL DEFAULT '0' FIRST;
// 特定の列の後に追加する例
ALTER TABLE テーブル名 ADD 列名A INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER 列名B;

テーブルの列を削除する

ALTER TABLE テーブル名 DROP 削除列名 ;

テーブルの列名を変更する

ALTER TABLE [テーブル名] CHANGE COLUMN [変更前フィールド名] [変更後フィールド名] [型やデフォルト値などの設定] ;

テーブルの列を入れ替える

列を入れ替えたテーブルを作成します。

CREATE TABLE table2 AS SELECT a,c,b FROM table1;

元のテーブルの列を入れ替えたい場合、元のテーブルを直接入れ替える方法はないので、一旦入れ替えたテーブルを作り、元のテーブルを消し、作ったテーブルをリネームすることで実現します。

CREATE TABLE table2 AS SELECT a,c,b FROM table1;
DROP TABLE tableA;
ALTER TABLE tableB RENAME TO tableA;

テーブルの列の定義を変える

列の定義を変更します。例えば文字列の定義を変更する場合は以下のようにします。

ALTER TABLE table1 MODIFY field_name VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

テーブルのインデックスを表示する

SHOW INDEX FROM テーブル名;

テーブルのインデックスを追加する

ALTER TABLE Sample ADD INDEX インデックス名(列名);
// インデックス名を省略もできる。この場合列名がインデックス名となる。
ALTER TABLE Sample ADD INDEX (列名);

テーブルのインデックスを削除する

ALTER TABLE Sample DROP INDEX インデックス名;

テーブルにユニークインデックスを追加する

ユニークインデックスはプライマリーキーと違い複数設定することができます。

CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラム名);

外部参照キーを追加する、削除する

外部参照キーをフィールドに追加、削除します。

// 追加
ALTER TABLE テーブル名 ADD FOREIGN KEY フィールド名 REFERENCES 参照テーブル名(参照フィールド);

// 削除
ALTER TABLE sc4.User DROP FOREIGN KEY player_id; 

外部参照キーの確認をする

外部参照キーがついているか確認します。

SHOW CREATE TABLE テーブル名