JR中央線・三鷹駅
南口 徒歩3分

[ 地図 ]
TOP 学習環境 SQL C言語 Java

 SQLの基礎(5)
    百聞は一見に如かず、まずは試すことから始めます
外部結合
  1. DB(PostgreSQL)と接続する
  2. $ psql -U postgres

  3. テーブルを作成する
  4. postgres=# create table 商品一覧( 商品番号 serial,商品 text, 値段 int not null );
    postgres=# create table 売上伝票( 伝票番号 int, 商品 text, 数量 int not null );

  5. データを登録する
  6. postgres=# insert into 商品一覧(商品,値段) values('B5ノート',160),('A4ノート',200),('H鉛筆',80),('F鉛筆',80),('HB鉛筆',80),('B鉛筆',80),('2B鉛筆',80),('黒ボールペン',180),('赤ボールペン',180),('青ボールペン)',180),('0.7mmシャープペン',500),('0.5mmシャープペン',500),('0.3mmシャープペン',500);
    postgres=# insert into 売上伝票 values(1,'A4ノート',30),(1,'F鉛筆',12),(1,'赤ボールペン',10),(1,'0.5mmシャープペン',5);
    postgres=# insert into 売上伝票 values(2,'B5ノート',15),(2,'HB鉛筆',24),(2,'黒ボールペン',30);
    postgres=# insert into 売上伝票 values(3,'A4ノート',20),(3,'B鉛筆',8),(3,'2B鉛筆',9),(3,'3B鉛筆',10);
    postgres=# insert into 売上伝票 values(4,'A4ノート',60),(4,'HB鉛筆',60),(4,'赤ボールペン',12);
    postgres=# insert into 売上伝票 values(5,'A4ノート',20),(5,'F鉛筆',30);

  7. 売上伝票をチェックする
  8. postgres=# select 売上伝票.伝票番号, 売上伝票.商品 ,売上伝票.数量, 商品一覧.値段, 売上伝票.数量*商品一覧.値段 as 売上額
    from 売上伝票 left outer join 商品一覧 on 売上伝票.商品=商品一覧.商品
    order by 伝票番号,商品番号;

  9. 売上伝票別の売上額チェックする
  10. postgres=# select 売上伝票.伝票番号, sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 売上伝票 left outer join 商品一覧 on 売上伝票.商品=商品一覧.商品
    group by 伝票番号
    order by 伝票番号;

  11. 商品売上をチェックする
  12. postgres=# select 商品一覧.商品, 商品一覧.値段, sum(売上伝票.数量), sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 商品一覧 right outer join 売上伝票 on 売上伝票.商品=商品一覧.商品
    group by 商品一覧.商品, 商品一覧.値段,商品番号
    order by 商品番号;

  13. 全商品の売上をチェックする
  14. postgres=# select 商品一覧.商品, 商品一覧.値段, sum(売上伝票.数量), sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 商品一覧 full outer join 売上伝票 on 売上伝票.商品=商品一覧.商品
    group by 商品一覧.商品, 商品一覧.値段,商品番号
    order by 商品番号;

  15. テーブルを削除する
  16. postgres=# drop table 商品一覧,売上伝票;

  17. DB(PostgreSQL)を切断する
  18. postgres=# \q
外部キー
  1. DB(PostgreSQL)と接続する
  2. $ psql -U postgres

  3. テーブルを作成する
  4. postgres=# create table 商品一覧( 商品番号 serial,商品 text UNIQUE, 値段 int not null );
    postgres=# create table 売上伝票( 伝票番号 int, 商品 text REFERENCES 商品一覧(商品), 数量 int not null );

  5. データを登録する
  6. postgres=# insert into 商品一覧(商品,値段) values('B5ノート',160),('A4ノート',200),('H鉛筆',80),('F鉛筆',80),('HB鉛筆',80),('B鉛筆',80),('2B鉛筆',80),('黒ボールペン',180),('赤ボールペン',180),('青ボールペン)',180),('0.7mmシャープペン',500),('0.5mmシャープペン',500),('0.3mmシャープペン',500);
    postgres=# insert into 売上伝票 values(1,'A4ノート',30),(1,'F鉛筆',12),(1,'赤ボールペン',10),(1,'0.5mmシャープペン',5);
    postgres=# insert into 売上伝票 values(2,'B5ノート',15),(2,'HB鉛筆',24),(2,'黒ボールペン',30);
    postgres=# insert into 売上伝票 values(3,'A4ノート',20),(3,'B鉛筆',8),(3,'2B鉛筆',9),(3,'3B鉛筆',10);
    postgres=# insert into 売上伝票 values(4,'A4ノート',60),(4,'HB鉛筆',60),(4,'赤ボールペン',12);
    postgres=# insert into 売上伝票 values(5,'A4ノート',20),(5,'F鉛筆',30);

  7. 売上伝票をチェックする
  8. postgres=# select 売上伝票.伝票番号, 売上伝票.商品 ,売上伝票.数量, 商品一覧.値段, 売上伝票.数量*商品一覧.値段 as 売上額
    from 売上伝票 left outer join 商品一覧 on 売上伝票.商品=商品一覧.商品
    order by 伝票番号,商品番号;

  9. 売上伝票別の売上額チェックする
  10. postgres=# select 売上伝票.伝票番号, sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 売上伝票 left outer join 商品一覧 on 売上伝票.商品=商品一覧.商品
    group by 伝票番号
    order by 伝票番号;

  11. 商品売上をチェックする
  12. postgres=# select 商品一覧.商品, 商品一覧.値段, sum(売上伝票.数量), sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 商品一覧 right outer join 売上伝票 on 売上伝票.商品=商品一覧.商品
    group by 商品一覧.商品, 商品一覧.値段,商品番号
    order by 商品番号;

  13. 全商品の売上をチェックする
  14. postgres=# select 商品一覧.商品, 商品一覧.値段, sum(売上伝票.数量), sum(売上伝票.数量*商品一覧.値段) as 売上額
    from 商品一覧 full outer join 売上伝票 on 売上伝票.商品=商品一覧.商品
    group by 商品一覧.商品, 商品一覧.値段,商品番号
    order by 商品番号;

  15. テーブルを削除する
  16. postgres=# drop table 商品一覧,売上伝票;

  17. DB(PostgreSQL)を切断する
  18. postgres=# \q
SQL(1) SQL(2) SQL(3) SQL(4) SQL(5)
Copyright© Ciapia IT Academy 2022.