【MySQL】PRIMARY KEY属性とAUTO_INCREMENT属性

公開日:
更新日:
カテゴリー: MySQL

データベースにデータを挿入する際、他のレコードと重複しないユニークな値をもたせたい時があります。

この場合、テーブル作成時にPRIMARY KEY属性とAUTO_INCREMENT属性を用いることで自動的にユニークな値を持たせることができます。

整理番号

表計算ソフトのエクセルの右側には1、2、3・・・のような整理番号があり、この値は重複がないためデータを参照するときにとても便利です。

MySQLでもそのようなユニークな値を持たせることができ、特定のレコードだけを取り出すことが可能です。

PRIMARY KEY属性

PRIMARY KEY属性にあるフィールドを指定すると、そのフィールドには同じデータが挿入できなくなります。つまりユニークな値を持たせることができます。

一般的にはAUTO_INCREMENT属性と併用して整理番号をつけるようにします。

AUTO_INCREMENT属性

フィールドの型を数字型にし、さらにAUTO_INCREMENT属性を指定することで、数字の連番を挿入することができます。

整理番号を毎回挿入するためには、挿入の度に何個レコードがあるかを確認しなければいけませんが、AUTO_INCREMENT属性を用いると自動的に連番が振れます。

PRIMARY KEY属性とAUTO_INCREMENT属性はテーブルにある一つのフィールドに対してのみ指定可能です。

サンプル

PRIMARY KEY属性はテーブル作成時の最後に記述し、()括弧内にPRIMARY KEYに指定するフィールドの名前を指定します。

AUTO_INCREMENTはテーブルの作成部分の()括弧の後に「AUTO_INCREMENT=」から初期値を設定します(初期値を設定しない場合は1からスタート)。

さらにidフィールドには「UNSIGNED」を指定し、負の数字を挿入できないようにしています。

CREATE TABLE access_log
(
id INT UNSIGNED AUTO_INCREMENT NOT NULL,     //idフィールドにAUTO_INCREMENT属性を指定
ip_address TINYINT NOT NULL,
ua TEXT NOT NULL,
referer TEXT NOT NULL,
referent TEXT NOT NULL,
time TIMESTAMP NOT NULL,
other TEXT NOT NULL,
PRIMARY KEY(id)     //PRIMARY KEYにidフィールドを指定
)
AUTO_INCREMENT = 1;     //連番の初期値の設定

ZEROFILE属性について

数字型のフィールドを作成してINT(5)を設定したとします。INT(5)は5桁までの数字という意味ですが、1を挿入すれば結果は当然1となります。

しかし「ZEROFILE」が指定されているフィールドの場合は、00001と自動的にゼロが先頭に挿入されます。

数字型フィールドに指定する「UNSIGNED」とともに使用可能です。

 

頑張って書いたのでちょろっと読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント