PostgreSQL8.1.4

PostgreSQL8.1.4

PostgreSQLをアップグレードし、SQLの練習をするつもりが、日本語のORDER BY ,GROUP BY でハマル。
対策は、ロケールをCでインストールし、データベースをEUC_JPで作成しておけばよい。

  1. ダウンロード
    1. 本家サイト (http://www.postgresql.org/)
    2. Downloads (http://www.postgresql.org/download/)
    3. FTP mirrors (http://wwwmaster.postgresql.org/download/mirrors-ftp)
    4. Japan
    5. win32
    6. postgresql-8.1.4-1-ja.zip
  2. インストール
    1. zipファイルを解凍
    2. インストール or アップグレード
      1. 通常のインストールを行う場合は、postgresql-8.1-ja.msiを起動
      2. アップグレードする場合は、upgrade.batを起動(今回はアップグレード)
  3. サービスの停止
    1. コンピュータの管理
    2. PostgreSQL Database Server 8.1
    3. スタートアップの種類:自動→手動
    4. OK
  4. サービスの手動起動
    1. スタート メニュー\プログラム\PostgreSQL 8.1\サービスの起動
  5. PostgreSQL日本語ドキュメント
    1. http://www.postgresql.jp/document/index.php3
  6. pgAdminⅢ起動
    1. スタート メニュー\プログラム\PostgreSQL 8.1\pgAdmin III
    2. 左側ペインの PostgreSQL Database Server 8.1 (localhost:5432) を右クリックし、接続
    3. パスワードを入力
  7. データベースの新規作成
    1. データベースを右クリック
    2. 新しいデータベース
      1. 名前:shop
      2. OID:
      3. オーナー:postgres
      4. エンコーディングEUC_JP
      5. Template:
      6. テーブル空間
      7. コメント:
    3. OK
  8. テーブルとデータの作成
    1. shopを選択
    2. [ツール]-[クエリーツール]
    3. 下記DDLとINSERT分をコピーペースト
    4. [クエリー]-[実行](F5)
    5. [編集]-[ウィンドウクリア]

/* テーブル作成:商品マスタ */
CREATE TABLE 商品マスタ (
商品ID INTEGER NOT NULL,
商品名 VARCHAR(30) NOT NULL,
グループ名 VARCHAR(20) NOT NULL,
単価 INTEGER,
在庫数 INTEGER,
CONSTRAINT pk_shohin PRIMARY KEY (商品ID)
);

/* テーブル作成:担当者マスタ */
CREATE TABLE 担当者マスタ (
担当者ID INTEGER NOT NULL,
担当者名 VARCHAR(20) NOT NULL,
役職 VARCHAR(20) NOT NULL,
CONSTRAINT pk_tanto PRIMARY KEY (担当者ID)
);

/* テーブル作成:顧客マスタ */
CREATE TABLE 顧客マスタ (
顧客ID INTEGER NOT NULL,
名前 VARCHAR(20) NOT NULL,
フリガナ VARCHAR(20) NOT NULL,
出身 VARCHAR(20) NOT NULL,
電話番号 VARCHAR(20) NOT NULL,
性別 INTEGER NOT NULL,
誕生日 DATE NOT NULL,
CONSTRAINT pk_kokyaku PRIMARY KEY (顧客ID),
CONSTRAINT ck_gender CHECK (性別=0 OR 性別=1)
);

/* テーブル作成:受注データ */
CREATE TABLE 受注データ (
受注番号 INTEGER NOT NULL,
担当者ID INTEGER NOT NULL,
顧客ID INTEGER NOT NULL,
受注日 DATE NOT NULL,
受注合計 INTEGER NOT NULL,
CONSTRAINT pk_data PRIMARY KEY (受注番号),
CONSTRAINT fk_tanto FOREIGN KEY (担当者ID) REFERENCES 担当者マスタ(担当者ID),
CONSTRAINT fk_kokyaku FOREIGN KEY (顧客ID) REFERENCES 顧客マスタ(顧客ID)
);

/* テーブル作成:受注明細 */
CREATE TABLE 受注明細 (
受注番号 INTEGER NOT NULL,
明細番号 INTEGER NOT NULL,
商品ID INTEGER NOT NULL,
受注単価 INTEGER NOT NULL,
数量 INTEGER NOT NULL,
CONSTRAINT pk_meisai PRIMARY KEY (受注番号, 明細番号),
CONSTRAINT fk_data FOREIGN KEY (受注番号) REFERENCES 受注データ(受注番号),
CONSTRAINT fk_shohin FOREIGN KEY (商品ID) REFERENCES 商品マスタ(商品ID)
);


/* データ挿入:商品マスタ */
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (1, 'サッカーボール_5号球', 'ボール', 6000, 10);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (2, 'サッカーボール_4号球', 'ボール', 5000, 3);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (3, 'フットサルボール', 'ボール', 4000, 8);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (4, 'Tシャツ_Lサイズ', 'サポーターズウェア', 3000, 12);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (5, 'Tシャツ_Mサイズ', 'サポーターズウェア', 3000, 18);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (6, 'レプリカユニフォーム', 'レプリカグッズ', 12000, 5);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (7, 'レプリカジャケット', 'レプリカグッズ', 16000, 2);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (8, 'タオルマフラー', 'サポーターズグッズ', 1900, 15);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (9, '携帯ストラップ', 'サポーターズグッズ', NULL, NULL);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (10, 'ネックストラップ', 'サポーターズグッズ', 900, 20);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (11, 'ミサンガ', 'サポーターズグッズ', 500, 30);
INSERT INTO 商品マスタ (商品ID, 商品名, グループ名, 単価, 在庫数) VALUES (12, 'フィギュア', 'サポーターズグッズ', 5000, 7);

/* データ挿入:担当者マスタ */
INSERT INTO 担当者マスタ (担当者ID, 担当者名, 役職) VALUES (1, '川淵', '店長');
INSERT INTO 担当者マスタ (担当者ID, 担当者名, 役職) VALUES (2, '釜本', '社員');
INSERT INTO 担当者マスタ (担当者ID, 担当者名, 役職) VALUES (3, '小倉', '社員');
INSERT INTO 担当者マスタ (担当者ID, 担当者名, 役職) VALUES (4, 'ジーコ', 'アルバイト');
INSERT INTO 担当者マスタ (担当者ID, 担当者名, 役職) VALUES (5, 'トルシエ', 'アルバイト');

/* データ挿入:顧客マスタ */
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (1, '川口', 'カワグチ', '静岡・清水商高', '000-111-1111', 1, '1975-08-15');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (2, '宮本', 'ミヤモト', '大阪・生野高', '000-222-2222', 0, '1977-02-07');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (3, '中澤', 'ナカザワ', '埼玉・三郷工高', '000-333-3333', 1, '1978-02-25');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (4, '中田', 'ナカタ', '山梨・韮崎高', '000-444-4444', 1, '1977-01-22');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (5, '中村', 'ナカムラ', '神奈川・桐光学園高', '000-555-5555', 0, '1978-06-24');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (6, '柳沢', 'ヤナギサワ', '富山一高', '000-666-6666', 1, '1977-05-27');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (7, '高原', 'タカハラ', '静岡・清水東高', '000-777-7777', 1, '1979-06-04');
INSERT INTO 顧客マスタ (顧客ID, 名前, フリガナ, 出身, 電話番号, 性別, 誕生日) VALUES (8, '玉田', 'タマダ', '千葉・習志野高', '000-888-8888', 0, '1980-04-11');

/* データ挿入:受注データ */
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (1, 4, 4, '2006-09-02', 10800);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (2, 5, 2, '2006-09-10', 11000);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (3, 1, 1, '2006-09-23', 30000);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (4, 3, 5, '2006-09-25', 1500);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (5, 2, 2, '2006-09-30', 9600);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (6, 5, 7, '2006-10-12', 17500);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (7, 2, 8, '2006-10-17', 3800);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (8, 4, 3, '2006-10-28', 3900);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (9, 5, 1, '2006-11-01', 28000);
INSERT INTO 受注データ (受注番号, 担当者ID, 顧客ID, 受注日, 受注合計) VALUES (10, 4, 6, '2006-11-05', 24000);

/* データ挿入:受注明細 */
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (1, 1, 4, 3000, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (1, 2, 8, 2400, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (2, 1, 1, 6000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (2, 2, 2, 5000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (3, 1, 6, 12000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (3, 2, 7, 18000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (4, 1, 11, 500, 3);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (5, 1, 5, 3000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (5, 2, 8, 2400, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (5, 3, 10, 900, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (6, 1, 12, 5000, 3);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (6, 2, 11, 500, 5);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (7, 1, 8, 1900, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (8, 1, 4, 3000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (8, 2, 10, 900, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (9, 1, 1, 6000, 3);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (9, 2, 2, 5000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (9, 3, 12, 5000, 1);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (10, 1, 3, 4000, 2);
INSERT INTO 受注明細 (受注番号, 明細番号, 商品ID, 受注単価, 数量) VALUES (10, 2, 7, 16000, 1);