UNIQUE以外にも、データを一意に決める方法があります。
それが、PRIMARY KEY(主キー)です。
データを一意に決める。と言う役割は一緒ですが、どういったところに違いがあるのか?に、注目しながらまとめていきたいと思います。
- 【一意に決める】とはどう言うことか?が、わかります
- 【PRIMARY KEY】が、どう言った特性があるのか。が、わかります。
- UNIQUE との違いがわかります。
- サンプルと実行結果をご紹介します
目次
一意に決める。とは、どういうことか?
【一意】とは、データ内に重複がない状態。を指します。
複数データが入っているテーブル内で、重複があっては困るものがあります。
投資の世界で言うと、銘柄コードがあげられます。
【1111】【2222】【3333】という銘柄コードは互いに独立していて、同じ値ではありません。
そのため、この3つのレコードが同じテーブルに存在していても、それぞれ違った銘柄であることがわかります。
しかし、この銘柄コードが【1111】【1111】【1111】と、三つ並んでいたら、どれがどの銘柄かわからなくなってしまいます。
そのため、重複を許さない方法として、UNIQUEや、PRIMARYが、存在するのです。
基本構文とサンプル
【基本構文】
create table テーブル名称(カラム1 データ型 primary key, カラム2 データ型);
【サンプルテーブル】
株価を管理するデータベースに新たに、marketテーブルを作成します。
market(取引市場)を管理するテーブルです。
- 銘柄が上場している市場のマスタを管理します。
- mk_id(market_id)の列をPRIMARY KEYに指定します。
- データ型は、integer型で指定します。
- 10番代が【東京証券取引所】の市場とします。
- 20番代が【地方取引所】の市場とします。
【サンプルコード】
それでは、実際にテーブルを作成してみます。
mk_id integer primary key を記載することにより、プライマリキーとしての役割を付与します。
create table market(mk_id integer primary key, name text);
で、データを投入します。
実際に存在する市場を、INSERTしてみたいと思います。
insert into market(mk_id,name) values(10,'プライム');
insert into market(mk_id,name) values(11,'スタンダード');
insert into market(mk_id,name) values(12,'グロース');
insert into market(mk_id,name) values(20,'ネクスト');
insert into market(mk_id,name) values(21,'アンビシャス');
【動作確認(画面)】
【補足:重複エラーメッセージ】
試しに、すでに存在する mk_id と同じ値をINSERTしてみたいと思います。
※市場名の部分は変えています(重複不可テスト)
insert into market(mk_id,name) values(10,'重複不可テスト');
以下の、エラーメッセージが出力されます。
エラーの内容は、UNIQUEの投稿で紹介したものと同じです。
Runtime error: UNIQUE constraint failed: market.mk_id (19)
EOF
UNIQUEに続いて、PRIMARY KEY を利用して重複を避ける方法をまとめました。
また、次回!