下のファイルをダウンロードし、phpmyadminでインポートしてください。
データベース dbkiso1-2022exam およびテーブル basballplayer が自動的に作成され、かつbaseballplayer上にレコードが808件挿入されていることを確認して下さい。
※本データベースは、あくまでデータベース学習用に作られた『それっぽいサンプルデータ』であり、登録されているデータは実在する野球選手や野球チームの現状を表すものではありません。
問題1
日本のプロ野球選手の情報を保持するテーブル baseballplayer の構造は以下の通りである。
| カラム名 | 型 | 意味 |
|---|---|---|
| team | VARCHAR(20) | 所属チーム名 |
| no | VARCHAR(3) | 番号 |
| name | VARCHAR(20) | 選手名 |
| birthday | DATE | 生年月日 |
| height | INT | 身長(cm) |
| weight | INT | 体重(kg) |
| pitching | VARCHAR(1) | 右投げか左投げかを『右』または『左』で表す |
| batting | VARCHAR(1) | 右打ちか左打ちかを『右』または『左』で表す |
| position | VARCHAR(5) | ポジション(『投手』『捕手』etc.) |
ただし、主キーは(team,no)の複合キーである。
設問1
このテーブルbaseballplayerにおいて、主キーが番号(no)だけではなく、チームと番号(team,no)の複合キーとなっているのはなぜか。理由を簡潔に答えなさい。
設問2
このテーブルについて、以下の操作を行うSQLを記述しなさい。
(1)チーム『横浜DeNAベイスターズ』に所属する全選手を抽出する。表示するカラムは番号、選手名、ポジションとし、番号の昇順に並べること。
※『番号』は文字列比較なので、例えば『2』は『1』の次ではなく『19』の次となってよい。

(2)所属チームを問わず、身長が180cm以上かつ体重が90kg以上の選手を抽出し、所属チーム名、番号、選手名、身長、体重、ポジションを出力する。身長の降順(同身長なら体重の降順)に並べること。

(3)所属チームを問わず、期末試験当日(2023年7月19日)時点で年齢が30代の選手を抽出し、チーム名、番号、選手名、誕生日を出力する。誕生日の昇順に並べること。
※誕生日が1983年7月20日~1993年7月19日

(4)所属チームを問わず、苗字が『田中』(nameが’田中 ’で始まる)の選手を抽出し、チーム名、番号、選手名を出力する。チーム名、番号の昇順に並べること。

(5)全選手のBMIを求め、チーム名、番号、選手名、身長、体重、BMIを出力する。BMIは小数第1位まで表示し、カラム名は’BMI’とする。BMIの降順に並べること。
※BMIは 体重(kg)÷ 身長(m)2 で求められる

(6)全選手の身長および体重の平均値を求める。平均値は小数第1位まで求め、身長の平均値のカラム名はavg_height、体重の平均値のカラム名はavg_weightとすること。

(7)各チームの『投手』(positionが’投手’)の人数を求め、チーム名と人数(表示カラム名はninzu)を出力する。ninzuの多い順に並べること。

(8)チーム毎に選手の平均身長を求め、その平均身長が180cm未満のチームを抽出し、チーム名と平均身長を表示する。平均身長のカラム名はavg_heightとし、小数第1位まで表示する。平均身長の降順に並べること。

(9)チーム名『東京ヤクルトスワローズ』、番号『11』の『キオーニ・ケラ』選手は、2023年7月13日に退団した。該当するレコードをテーブルbaseballplayerから削除しなさい。
(10)チーム名『読売ジャイアンツ』、番号『32』の『K-鈴木』選手は、登録された選手名を『K-鈴木』から本名の『鈴木 康平』に変更した)。該当レコードの登録内容を更新しなさい。ただし、選手名以外のカラムに変更はない。
※姓・名の間は全角空白文字
問題2
各チームの情報を管理するテーブルbaseballteamを以下のように設計した。
| カラム名 | 型 | 意味 |
|---|---|---|
| name | VARCHAR(20) | チーム名 |
| league | VARCHAR(20) | 所属リーグ名 |
| homebase | VARCHAR(20) | 本拠地球場名 |
| foundation_date | DATE | 創立年月日 |
| director | VARCHAR(20) | 監督指名 |
なお、主キーは name である。
設問
(1)このテーブルを作成するSQLを記述しなさい。
(2)以下のデータを挿入するSQLを記述しなさい。
| チーム名 | 読売ジャイアンツ |
| 所属リーグ名 | セントラル・リーグ |
| 本拠地球場名 | 東京ドーム |
| 創立年月日 | 1934年12月26日 |
| 監督氏名 | 原 辰徳 |


コメント