My Photo

« 列の値を使って日時に「+n日」する | Main | MySQLメモ018:MySQL WorkbenchでTRUNCATEできるようにする »

February 08, 2015

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と連続した値が入る。

idnamemail
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」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

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

Listed below are links to weblogs that reference MySQLメモ017:CREATE文、AUTO_INCREMENT、ENGINE:

« 列の値を使って日時に「+n日」する | Main | MySQLメモ018:MySQL WorkbenchでTRUNCATEできるようにする »

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