MySQLメモ017:CREATE文、AUTO_INCREMENT、ENGINE
関連記事:
MySQLメモ004:テーブルの作成:
MySQLメモ013:INSERT後にAUTO_INCREMENTなカラムの値を取得する方法
MySQLについては前に少し勉強したが、ほとんど忘れてしまった。
既存のシステムでMySQLを使っているものは触ったことはあるが、新規の開発でMySQLというのは初めてなので、色々メモ。
テーブルの主キーのカラムには、PostgreSQLの場合はシーケンスを用意してそこから値を取っていた。しかしMySQLにはシーケンスがない。
MySQLではカラムにAUTO_INCREMENT制約を付けてシーケンスの代わりにする。これでINSERT時に値を指定しなくても自動的に値がセットされる。初期値は1でINSERTするたびに自動的にインクリメントされる。
テーブル作成時のストレージエンジンの指定に "TYPE" を使っているものがあるが、現在は "ENGINE" が推奨されている。
CREATE TABLE文の例は以下。
CREATE TABLE test_tbl_01 ( id INT AUTO_INCREMENT, name VARCHAR(20), mail VARCHAR(40), PRIMARY KEY(id) ) ENGINE=InnoDB;
このテーブルにINSERT2回行って、SELECTする。
INSERT INTO test_tbl_01 (name) VALUES ('テスト一郎'); INSERT INTO test_tbl_01 (name, mail) VALUES ('テスト二郎', 'test.jiro@test.jp'); SELECT * FROM test_tbl_01;
SELECTの結果は以下のようになる。idには最初に1,2と連続した値が入る。
id | name | |
---|---|---|
1 | テスト一郎 | |
2 | テスト二郎 | test.jiro@test.jp |
AUTO_INCREMENTの値は ALTER TABLE 文で設定できる。
また、TRUNCATE TABLEすると値はリセットされる。
参考ページ:
MySQLのauto_incrementについてメモ | Siguniang's Blog
AUTO_INCREMENTの値をリセットする方法【MySQL】 - Programming Magic
select last_insert_id() - MySQL初心者日記 - MySQLグループ
ストレージエンジンの設定(ENGINE) - テーブルの作成 - MySQLの使い方
« 列の値を使って日時に「+n日」する | Main | MySQLメモ018:MySQL WorkbenchでTRUNCATEできるようにする »
「MySQL」カテゴリの記事
- MySQLメモ020:INSERT後にAUTO_INCREMENTなカラムの値を取得する方法(PDO編)(2015.02.14)
- MySQLメモ019:TIMESTAMP型の列には勝手にNOT NULL制約とDEFAULT制約が付く(2015.02.12)
- MySQLメモ018:MySQL WorkbenchでTRUNCATEできるようにする(2015.02.11)
- MySQLメモ017:CREATE文、AUTO_INCREMENT、ENGINE(2015.02.08)
- SQLインジェクション その7(2013.10.14)
The comments to this entry are closed.
TrackBack
Listed below are links to weblogs that reference MySQLメモ017:CREATE文、AUTO_INCREMENT、ENGINE:
« 列の値を使って日時に「+n日」する | Main | MySQLメモ018:MySQL WorkbenchでTRUNCATEできるようにする »
Comments