質問: テーブルの作成時に制約をつける場合の列制約と表制約の違い(使い分け)がいまいちよくわかりません。 実際、現場ではどういった場面で使い分けをするのでしょうか?
回答: 列制約は、単一の列に対して付与する制約、 表制約は、複数の列をグループにしたものに対して付与する制約です。 以下の表(テーブルのサンプル参照)があったとき、 `table1`は`id`だけで主キーを構成できるデータ構成になっていたとします。その場合は、単独の列に`primary key`を指定して列制約を付与しています。形式としては表制約として`primary key(id)`のように書くことも可能です。 それに対して、`table2`は`id1`だけでは主キーを構成することができず、`id1`と`id2`を合わせて主キーを構成する必要があるデータ構成になっていたとします。`id1`と`id2`を合わせて一意になるような場合です。 この場合は、表制約として`primary key(id1, id2)`を指定します。列制約では指定できません。 逆に、`not null`制約は列制約でしか指定できません。(裏を取っていませんがおそらくほとんどのDBMSでそうなっていると思います。) * テーブルのサンプル ``` create table table1 ( id bigint primary key, name varchar(256), age smallint ); create table table2 ( id1 bigint, id2 bigint, name varchar(256), age smallint, primary key(id1, id2) ) ```