■ SQL課題
はじめに
まずはこの見本をみて残りのテーブルを作ってみましょう!
【store_tableテーブル】
CREATE TABLE store_table( store_code CHAR(4) NOT NULL, store_name VARCHAR(20) NOT NULL, store_nameAbc VARCHAR(50) NOT NULL, update_day DATE NOT NULL, CONSTRAINT pk_store PRIMARY KEY(store_code)) ;
残りの2つのテーブルを作り終わったら今度はテーブルの中にデータを入れていきましょう!
下記を参考に残りもやってみてください。
INSERT INTO store_table( store_code, store_name, store_nameAbc, update_day) VALUES('EA01','札幌店','SAPPOROTEN','2000-01-01'), ('EA02','仙台店','SENDAITEN','2000-03-01'), ('EA03','郡山店','KOORIYAMATEN','2000-04-01'), ('EA04','宇都宮店','UTSUNOMIYATEN','2005-04-01'), ('EA05','埼玉店','SAITAMATEN','2005-07-01'), ('EA06','丸の内店','MARUNOUTHITEN','2008-03-01'), ('EA07','横浜店','YOKOHAMATEN','2009-03-01'), ('EA08','千葉店','CHIBATEN','2009-04-01'), ('WE01','栄店','SAKAETEN','2010-03-01'), ('WE02','心斎橋店','SHINSAIBASHITEN','2011-03-01') ;
データを入れ終わったらSELECT文で確認してみましょう!
select * from テーブル名
store_tableテーブル(店舗テーブル)
物理名 | 理論名 | データ型 | サイズ | キー | NULL可 | 備考 |
---|---|---|---|---|---|---|
store_code | 店舗コード | char | 4 | primary | ||
store_name | 店舗名 | varchar | 20 | |||
store_nameAbc | 店舗名(アルファベット) | varchar | 50 | |||
update_day | 更新日 | date |
goods_tableテーブル(商品テーブル)
物理名 | 理論名 | データ型 | サイズ | キー | NULL可 | 備考 |
---|---|---|---|---|---|---|
goods_code | 商品コード | char | 4 | primary | ||
goods_name | 商品名 | varchar | 50 | |||
price | 値段 | integer | ○ | 初期値:0 | ||
update_day | 更新日 | date |
stock_tableテーブル(在庫テーブル)
物理名 | 理論名 | データ型 | サイズ | キー | NULL可 | 備考 |
---|---|---|---|---|---|---|
goods_code | 商品コード | char | 4 | primary | ||
store_code | 店舗コード | char | 4 | primary | ||
quantity | 在庫数 | integer | ○ | 初期値:0 | ||
update_day | 更新日 | date |
insert内容
store_table
店舗コード | 店舗名 | 店舗名(アルファベット) | 更新日 |
---|---|---|---|
EA01 | 札幌店 | SAPPOROTEN | 2000-01-01 |
EA02 | 仙台店 | SENDAITEN | 2000-03-01 |
EA03 | 郡山店 | KOORIYAMATEN | 2000-04-01 |
EA04 | 宇都宮店 | UTSUNOMIYATEN | 2005-04-01 |
EA05 | 埼玉店 | SAITAMATEN | 2005-07-01 |
EA06 | 丸の内店 | MARUNOUTHITEN | 2008-03-01 |
EA07 | 横浜店 | YOKOHAMATEN | 2009-03-01 |
EA08 | 千葉店 | CHIBATEN | 2009-04-01 |
WE01 | 栄店 | SAKAETEN | 2010-03-01 |
WE02 | 心斎橋店 | SHINSAIBASHITEN | 2011-03-01 |
goods_table
商品コード | 商品名 | 値段 | 更新日 |
---|---|---|---|
S987 | セーター | 29000 | 2000-05-01 |
M032 | マフラー | 7000 | 2000-07-01 |
K209 | カットソー | 12000 | 2003-01-01 |
Z939 | ジーンズ | 40000 | 2004-01-01 |
B345 | ドカジャン | 8000 | 2005-06-01 |
M286 | マフラー | 4000 | 2006-08-01 |
P175 | パーカー | 20000 | 2009-11-01 |
K206 | カットソー | 5000 | 2010-01-01 |
K456 | カットソー | 26000 | 2011-02-01 |
N094 | ニット | 3000 | 2012-01-01 |
stock_table
商品コード | 店舗コード | 在庫数 | 更新日 |
---|---|---|---|
S987 | EA01 | 20 | 2000-06-01 |
S987 | EA03 | 10 | 2000-06-23 |
M032 | EA02 | 0 | 2000-07-01 |
K209 | EA03 | 13 | 2000-09-01 |
K209 | EA05 | 1 | 2000-09-01 |
K209 | EA07 | 5 | 2000-09-01 |
Z939 | EA04 | 10 | 2004-05-01 |
Z939 | EA08 | 30 | 2004-05-01 |
B345 | EA05 | 13 | 2005-05-01 |
B345 | WE01 | 11 | 2005-05-01 |
M286 | EA06 | 23 | 2006-12-01 |
M286 | EA07 | 22 | 2006-12-01 |
M286 | WE02 | 15 | 2006-12-01 |
P175 | EA07 | 16 | 2007-04-01 |
K206 | EA01 | 17 | 2007-05-01 |
K206 | EA08 | 8 | 2007-05-01 |
P093 | EA01 | 15 | 2009-09-01 |
P093 | WE01 | 0 | 2009-09-01 |
N094 | WE02 | 30 | 2010-05-01 |
ER図
ER図とは、データベースのテーブル(Entity)とテーブル同士の関連(Relationship)を図に表したものであり、
データベースのテーブル設計に用いられる。ER図において、エンティティは四角形の記号、リレーションは四角形同士を結ぶ線で表現される。
※DBeaverというツールを使っています。気になる方はDBeaverより取ってみてね!!!!
課題
/* ■ [回答]と記載のある箇所へ、1〜8の各課題内容に沿ったSQL文を記述しなさい。 */ -- 1. 店舗テーブルから店舗名を抽出しなさい。また、列名の表示は別名で'店舗名'とすること。 -- [回答] -- 2. 店舗情報を店舗名のABC順に抽出しなさい。 -- [回答] -- 3. 在庫テーブルに店舗テーブル、商品テーブルを「内部結合」し、店舗名・商品名・在庫数を全て取得しなさい。 -- [回答] -- 4. 商品テーブルから全商品の単価の平均値を抽出しなさい。 -- [回答] -- 5. 店舗コード='EA01'の在庫数の平均値より大きい在庫数を持つ店舗コードを抽出しなさい。 -- [回答] -- 6. 商品テーブルに「商品コード='M001'、商品名='マフラー'、単価=4500円、更新日付=本日日付」のデータを追加しなさい。※実行後のSELECT結果も貼付すること。 -- [回答] -- 7. 在庫テーブルの商品コード='S987'、かつ、店舗コード='EA01'に対して、「在庫数=10、更新日付=本日日付」で更新しなさい。※実行後のSELECT結果も貼付すること。 -- [回答] -- 8. 7で更新した商品を削除しなさい。※実行後のSELECT結果も貼付すること。 -- [回答]
また、問題1と2に関しては取得結果を以下に示しますので参考にしてください。
問1
問2
課題提出方法
4-3フォルダを作成して、その中に「sqlTask.sql」ファイルを作成してください。
上記、課題に記載された内容をsqlTask.sqlにコピーして、 [回答] 部分にSQL文を記述してください。
また、実行後のSELECT結果の提出に関しては、SELECT文と実行結果をスクリーンショットに撮り、保存した画像を4-3フォルダの中に入れ、これまでと同様に提出してください。
尚、スクリーンショットは 実行結果のレコードすべてが映るようコンソール部分を調整して 撮ってください。