« PostgreSQL:既存のテーブルの定義を変更 ALTER TABLE | メイン | PostgreSQL:テーブルを削除 DROP TABLE »

2006年12月20日

PostgreSQL:テーブルを作成 CREATE TABLE

テーブルを作成する場合には、CREATE TABLEを使用します。

・テーブル作成時にNOT NULL制約、UNIQUE制約、DEFAULT初期値設定などを指定可能です。
・複合主キー(プライマリーキー)はテーブル作成時にのみ付与することができます。

通常のテーブル作成

create table sglog(
    "shop_id" integer,
    "fullname" varchar(100) not null,
    "ip" varchar(100) not null,
    "log_date" timestamp DEFAULT "timestamp"('now'::text) not null
);

プライマリーキー、ユニーク制約などを付ける

create table area(
    "area_id" integer primary key,
    "area_name" varchar(100) not null,
    "ordernum" integer UNIQUE not null,
    "registday" timestamp DEFAULT "timestamp"('now'::text) not null,
    "parent_areaid" integer,
    "rank" integer
);

複合主キーを付ける

create table rcmenu(
    "rcmenuid" integer DEFAULT nextval('"rcmenu_rcmenuid_seq"'::text) not null,
    "title" varchar(100) not null,
    "list" text,
    "must" boolean DEFAULT 'f' not null,
    "ordernum" integer UNIQUE not null,
    Constraint "rcmenu_pkey" Primary Key (rcmenuid, title)
);

複数のキーでユニークにする

create table r_access_i(
    "shop_id" integer not null references sginfo(shop_id) on update cascade on delete cascade,
    "inout" varchar(10) not null,
    "ym" varchar(10) not null,
    "count" integer not null,
    Constraint "raccess_i_ukey" UNIQUE (shop_id, inout, ym)
);

※IDのようなユニークな値を持ったテーブルの場合、出来るだけプライマリーキーの設定をしたほうがいいです。プライマリーキーを設定することにより索引(インデックス)が作成され、SELECT文実行時などのレスポンスの速さに格段に差が出ます。

投稿者 wing : 2006年12月20日 23:13

コメント