« 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