11月27日(木)3コマ目
今日、やったこと
[練習問題 解説]練習問題1
今日のホワイトボード
[練習問題 解説]練習問題1
1.ユーザー作成、システム権限付与
ユーザー作成は管理者権限が必要なため、systemユーザーでログイン。
1.1 ichiroユーザー作成
![]() |
| 図 ichiroユーザー作成 |
1.2 ichiroユーザーにシステム権限付与
![]() |
| 図 ichiroユーザーにシステム権限付与 |
1.3 ichiroユーザーでDBに接続
connコマンドはSQL*Plusのコマンド。SQLではない。<= 末尾の ; は不要
![]() |
| 図 ichiroユーザーでDB接続 |
2.テーブル作成
テーブルを4つ作成。
2.1 ジャンルマスタテーブル作成
![]() |
| 図 ジャンルマスタテーブル作成 |
2.2 商品マスタテーブル作成
![]() |
| 図 商品マスタテーブル作成 |
2.3 売上データテーブル作成
売上日列には初期値を指定する必要がある。
初期値の指定はdefaultで行う。
![]() |
| 図 売上データテーブル作成 |
sysdateはオラクルの現在日時を取得するための関数。
![]() |
| 図 sysdate関数 |
2.4 売上詳細データテーブル作成
主キー列は売上ID列と商品ID列の複合キーに注意。
複合キーの主キー制約はprimary key()のカッコ内にカンマ区切りで主キー列名を記述。
3. おまけ課題
サンプルデータを登録後、commitを実行。
3.1 問1
とくにややこしいことはないかと。
![]() |
| 図 おまけ課題 問1 |
3.2 問2
ジャンルでグループ化し、各グループの行数=商品点数になる。
![]() |
| 図 おまけ課題 問2 |
3.3 問3
where句でグループ関数が使えるといいが、できない。
そこで、まずサブクエリで定価の最高値を取得。
サブクエリの結果をwhere句で使って、最高値商品情報を取得。
![]() |
| 図 おまけ課題 問3 |
3.4 問4
段階を追って確認。
まず、下図のようなグループ毎の定価列の最高値(定価最高値)のテーブルがあると便利。
![]() |
| 図 ジャンル別定価最高値を検索 |
ないので、サブクエリをfrom句に書いてテーブルのように扱う。
商品マスタテーブルとサブクエリ実行結果を結合条件
ジャンルIDが等しい かつ 定価が定価最高値と等しい
行同士を結合する。
![]() |
| 図 サブクエリ実行結果と商品マスタテーブル等を結合 |
これが欲しい結果。
次回は
今までのテストをします。
何を見ても構いませんが、自力でやってください。
そのあと、View。












