sql 主キーとは

2011/03/28

「主キー」と「プライマリキー(primary key)」の両方の表現があるのでそれぞれ「何が違うの?」って感じなんだよね。
知ってる人にとっては気にもならないんだろうけど、知らない人にとってはこういう些細な表現が問題なんだ。

「主キー」と「プライマリキー(primary key)」について

「主キー」と「プライマリキー(primary key)」は同じ意味。
「主キー」は「ユニーク」である。要は他の行と重複しない。
また、「主キー」は「値無し」はNG。

つまり「主キー」は「ユニーク」な値が必ず必要。

設定は「CREAT TABLE」で設定しておく。
※あとで、変更できるかは未調査のため知らない。

  1. CREATE TABLE [テーブル名] (
  2. [ラベル名1] [データ型] PRIMARY KEY,
  3. [ラベル名2] [データ型]
  4. )
  5. WITHOUT OIDS;

上記は、[ラベル名1]を「主キー」にしただけ。
使いドコはわからないけど「ルール」を定義するなら下記。

  1. CREATE TABLE [テーブル名] (
  2. [ラベル名1] [データ型],
  3. [ラベル名2] [データ型],
  4. CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
  5. )
  6. WITHOUT OIDS;

連番でユニークIDを自動割振りするならシーケンスとCONSTRAINTを使う。

  1. CREATE TABLE [テーブル名] (
  2. [ラベル名1] [データ型] DEFAULT nextval(‘[シーケンス名]’::regclass),
  3. [ラベル名2] [データ型],
  4. CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
  5. )
  6. WITHOUT OIDS;

シーケンスを作るのが面倒だから「serial」を使う。
※これも使い分けする必要があると思うんだけど、現状は気にしない。

  1. CREATE TABLE [テーブル名] (
  2. [ラベル名1] serial,
  3. [ラベル名2] [データ型],
  4. CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
  5. )
  6. WITHOUT OIDS;

参考:「主キー(primary key:プライマリキー)とは?」、「sql テーブルの作成

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい