fc2ブログ

主キーと非NULL

  • Posted by: servletmania
  • 2011-01-12 Wed 15:03:43
  • SQL




データベースの初期状態は以下のようになっております。

primarykey1


CREATE TABLE文でテーブルを作成する上で、主キー制約と非NULL制約についてよく考えておく必要があります。

前回のCREATE TABLE文を再掲しておきます。

create table account(
id integer primary key,
name varchar(100),
money integer
);



主キーは、一つのデータについて一つだけ割り当てられるものです。これによりデータの識別が可能になります。上の文では、idが主キーになります。

非NULL制約とは、必ずデータを入れる必要があるということです。NULLとはデータが入っていないことを示します。上の文では、非NULL制約はありません。

たとえば、NAMEを非NULL制約にしたかったら、
  name varchar(100) not null,
のように書いておきます。

非NULL制約をいい加減にしておくと、後におかしなことが発生する可能性があります。

たとえば、以下のようなSQL文を実行してみましょう。

insert into account(id,money) values(4,4000);


上のSQL文では、データを指定して挿入しました。

insert into 表名 (挿入したいデータ列) values(挿入したいデータ);


ACCOUNTテーブルには、id、name、moneyの3つの列がありますが、今回はidとmoneyのみ指定してデータを入れました。

select * from account;

でデータを取り出してみると、

primarykey2

名前がない人の口座に残高がありますね。これはnameを非NULL制約にしておかなかったために発生した不具合です。

データベースを初期状態に戻しておくため、以下のSQL文を実行しておきましょう。

delete from account where id=4;

スポンサーサイト



タグ :

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://servletmania.blog137.fc2.com/tb.php/39-b2b4d369
月別アーカイブ
カテゴリ
リンク
RSSリンクの表示
QRコード
QR