Search

主キー設定
ALTER TABLE ADD PRIMARY KEY

unknown

ALTER TABLE テーブル名 ADD PRIMARY KEY (カラム名);

指定したカラムを主キー(PRIMARY KEY)に設定します。

# tbl_Addressテーブルのフィールドを確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| UserID | int(11)      | YES  |     | NULL    |       | →主キーに設定
| zip    | int(11)      | YES  |     | NULL    |       |
| Ken    | varchar(5)   | YES  |     | NULL    |       |
| addr   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

# UserIDフィールドを主キーに設定
mysql> ALTER TABLE tbl_Address ADD PRIMARY KEY(UserID); Enter
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 主キーが設定されているか確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| UserID | int(11)      |      | PRI | 0       |       |
| zip    | int(11)      | YES  |     | NULL    |       |
| Ken    | varchar(5)   | YES  |     | NULL    |       |
| addr   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

主キー削除
ALTER TABLE DROP PRIMARY KEY

unknown

ALTER TABLE テーブル名 DROP PRIMARY KEY;

指定したテーブルから主キーを削除します。フィールドが削除されるわけではありません。

# tbl_Addressテーブルのフィールドを確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| UserID | int(11)      |      | PRI | 0       |       | →主キーを削除
| zip    | int(11)      | YES  |     | NULL    |       |
| Ken    | varchar(5)   | YES  |     | NULL    |       |
| addr   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> ALTER TABLE tbl_Address DROP PRIMARY KEY; Enter
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 主キーが削除されているか確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| UserID | int(11)      |      |     | 0       |       |
| zip    | int(11)      | YES  |     | NULL    |       |
| Ken    | varchar(5)   | YES  |     | NULL    |       |
| addr   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

カラムにAUTO_INCREMENT属性を設定

unknown

ALTER [IGNORE] TABLE テーブル名 MODIFY [COLUMN] create_definition [FIRST | AFTER カラム名]
または
ALTER TABLE テーブル名 MODIFY カラム名 INT AUTO_INCREMENT;

テーブル作成時にフィールドのオプションで指定するのを忘れた場合などは、後付でも 以下のようにすれば、主キーフィールドにAUTO_INCREMENT属性を設定できます。

ただし、AUTO_INCREMENT属性は、主キーを設定したカラムにしか設定できません。 主キーの設定をしていない場合は、主キーの設定をしてからAUTO_INCREMENT属性を設定する必要があります。

TEXT型のフィールドは、AUTO_INCREMENT属性の設定不可。

# tbl_Addressテーブルのフィールドを確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| UserID | int(11)      |      | PRI | 0       |       | →AUTO_INCREMENT属性を設定
| Zip    | varchar(8)   | YES  |     | NULL    |       |
| Ken    | varchar(5)   | YES  |     | NULL    |       |
| Addr   | varchar(200) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

# 主キーであるUserIDフィールドにauto_increment属性を設定
mysql> ALTER TABLE tbl_Address MODIFY UserID INT auto_increment; Enter
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

# auto_increment属性が設定されたか確認
mysql> DESCRIBE tbl_Address; Enter
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| UserID | int(11)      |      | PRI | NULL    | auto_increment |
| Zip    | varchar(8)   | YES  |     | NULL    |                |
| Ken    | varchar(5)   | YES  |     | NULL    |                |
| Addr   | varchar(200) | YES  |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

# tbl_Addressテーブルにデータを挿入
mysql> INSERT INTO tbl_Address (Zip,Ken,Addr) VALUES Enter
    -> (2140010,'神奈川県','川崎市川崎区川崎1-2-3'), Enter
    -> (1120022,'東京都','文京区文京2-3-4'); Enter
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 2

# tbl_Addressテーブルの内容を確認
# UserIDフィールドは自動採番された値が格納されているはずです
mysql> SELECT * FROM tbl_Address; Enter
+--------+---------+-------+-----------------------+
| UserID | Zip     | Ken   | Addr                  |
+--------+---------+-------+-----------------------+
|      1 | 2140010 | 神奈・| 川崎市川崎区川崎1-2-3 |
|      2 | 1120022 | 東京・| 文京区文京2-3-4       |
+--------+---------+-------+-----------------------+
2 rows in set (0.00 sec)

AUTO_INCREMENT属性フィールドの開始番号を設定

unknown

ALTER TABLE テーブル名 AUTO_INCREMENT=数値;

AUTO_INCREMENT属性は最後にレコードが挿入された順に、1から自動採番していきますが、 任意の数値を開始番号に指定することができます。

# tbl_Addressテーブルの内容を確認
mysql> SELECT * FROM tbl_Address; Enter
+--------+---------+-------+-----------------------+
| UserID | Zip     | Ken   | Addr                  |
+--------+---------+-------+-----------------------+
|      1 | 2140010 | 神奈・| 川崎市川崎区川崎1-2-3 |
|      2 | 1120022 | 東京・| 文京区文京2-3-4       |
+--------+---------+-------+-----------------------+
2 rows in set (0.00 sec)

# AUTO_INCREMENTの値を 100 に設定
mysql> ALTER TABLE tbl_Address AUTO_INCREMENT=100; Enter
Query OK, 2 rows affected (0.34 sec)
Records: 2  Duplicates: 0  Warnings: 0

#新しく2件のデータをtbl_Addressテーブルに挿入
mysql> INSERT INTO tbl_Address (Zip,Ken,Addr) VALUES Enter
    -> (1550031,'東京都','世田谷区下北1-1-1'), Enter
    -> (1600023,'東京都','新宿区西新宿9-8-7'); Enter
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 2

# AUTO_INCREMENT属性を持つUserIDの値が100から採番されているか確認
mysql> SELECT * FROM tbl_Address; Enter
+--------+---------+-------+-----------------------+
| UserID | Zip     | Ken   | Addr                  |
+--------+---------+-------+-----------------------+
|      1 | 2140010 | 神奈・| 川崎市川崎区川崎1-2-3 |
|      2 | 1120022 | 東京・| 文京区文京2-3-4       |
|    100 | 1550031 | 東京・| 世田谷区下北1-1-1     |
|    101 | 1600023 | 東京・| 新宿区西新宿9-8-7     |
+--------+---------+-------+-----------------------+
4 rows in set (0.00 sec)

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women