My Photo

« MySQLメモ004:テーブルの作成 | Main | 磐田は山田スーパーゴールで勝利、新潟は完封負け »

April 19, 2012

MySQLメモ005:テーブルの変更

既存のテーブルに変更を加えるには"ALTER TABLE"を使用する。

カラムの追加
ALTER TABLE <テーブル名> ADD [COLUMN] <追加カラム名> <データ型> [AFTER <カラム名>]
・"AFTER <カラム名>" でカラムを追加する位置を指定できる。

カラムの変更
ALTER TABLE <テーブル名> MODIFY|CHANGE [COLUMN] <カラム名> <型や制約など>

カラム名の変更
ALTER TABLE <テーブル名> CHANGE COLUMN <元のカラム名> <新しいカラム名> <型や制約など>

カラムの削除
ALTER TABLE <テーブル名> DROP <カラム名>

インデックスの追加
ALTER TABLE <テーブル名> ADD INDEX|UNIQUE|PRIMARY KEY|FOREIGN KEY <インデックスの定義>

インデックスの削除
ALTER TABLE <テーブル名> DROP INDEX|UNIQUE|PRIMARY KEY|FOREIGN KEY <インデックス名>

テーブル名の変更
・"RENAME TABLE" でも変更できる。
ALTER TABLE <テーブル名> RENAME [TO] <新テーブル名>
RENAME TABLE <テーブル名1> TO <新テーブル名1> [,<テーブル名2> TO <新テーブル名2> ...]


実行例
mysql> CREATE TABLE customers (
    ->   customer_id INT,
    ->   customer_name VARCHAR(10),
    ->   prefectural_id INT,
    ->   address VARCHAR(30));
Query OK, 0 rows affected (0.11 sec)

mysql> ALTER TABLE customers ADD customer_class_id INT AFTER customer_name;
Query OK, 0 rows affected (0.36 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers ADD comment VARCHAR(50);
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC customers;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| customer_id       | int(11)     | YES  |     | NULL    |       |
| customer_name     | varchar(10) | YES  |     | NULL    |       |
| customer_class_id | int(11)     | YES  |     | NULL    |       |
| prefectural_id    | int(11)     | YES  |     | NULL    |       |
| address           | varchar(30) | YES  |     | NULL    |       |
| comment           | varchar(50) | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)

mysql> ALTER TABLE customers MODIFY customer_name VARCHAR(20);
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers CHANGE COLUMN prefectural_id area_id INT;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC customers;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| customer_id       | int(11)     | YES  |     | NULL    |       |
| customer_name     | varchar(20) | YES  |     | NULL    |       |
| customer_class_id | int(11)     | YES  |     | NULL    |       |
| area_id           | int(11)     | YES  |     | NULL    |       |
| address           | varchar(30) | YES  |     | NULL    |       |
| comment           | varchar(50) | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)

mysql> ALTER TABLE customers ADD PRIMARY KEY (customer_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers ADD INDEX customers_index_1 (area_id);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW INDEX FROM customers;
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table     | Non_unique | Key_name          | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| customers |          0 | PRIMARY           |            1 | customer_id | A      |           0 |     NULL | NULL   |      | BTREE      |         |      |
| customers |          1 | customers_index_1 |            1 | area_id     | A      |           0 |     NULL | NULL   | YES  | BTREE      |         |      |
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

mysql>

mysql> CREATE TABLE t1 (col1 VARCHAR(5));
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t1                            |
+-------------------------------+
1 row in set (0.00 sec)

mysql> ALTER TABLE t1 RENAME t2;
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t2                            |
+-------------------------------+
1 row in set (0.01 sec)

mysql> RENAME TABLE t2 TO t3;
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t3                            |
+-------------------------------+
1 row in set (0.01 sec)

mysql>

« MySQLメモ004:テーブルの作成 | Main | 磐田は山田スーパーゴールで勝利、新潟は完封負け »

MySQL」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54513155

Listed below are links to weblogs that reference MySQLメモ005:テーブルの変更:

« MySQLメモ004:テーブルの作成 | Main | 磐田は山田スーパーゴールで勝利、新潟は完封負け »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof