【MySQL】PRIMARY KEY属性とAUTO_INCREMENT属性
データベースにデータを挿入する際、他のレコードと重複しないユニークな値をもたせたい時があります。
この場合、テーブル作成時に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」とともに使用可能です。
あわせて読んでほしい!
コメント
まだコメントはありません。