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

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できるようにする »

June 2021
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      
無料ブログはココログ

日本blog村

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

好きな音楽家

メモ

XI-Prof