総合演習3

下のファイルをダウンロードし、phpmyadminでインポートしてください。
データベース dbkiso1-2022exam およびテーブル basballplayer が自動的に作成され、かつbaseballplayer上にレコードが808件挿入されていることを確認して下さい。

※本データベースは、あくまでデータベース学習用に作られた『それっぽいサンプルデータ』であり、登録されているデータは実在する野球選手や野球チームの現状を表すものではありません。

問題1

日本のプロ野球選手の情報を保持するテーブル baseballplayer の構造は以下の通りである。

カラム名意味
teamVARCHAR(20)所属チーム名
noVARCHAR(3)番号
nameVARCHAR(20)選手名
birthdayDATE生年月日
heightINT身長(cm)
weightINT体重(kg)
pitchingVARCHAR(1)右投げか左投げかを『右』または『左』で表す
battingVARCHAR(1)右打ちか左打ちかを『右』または『左』で表す
positionVARCHAR(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を以下のように設計した。

カラム名意味
nameVARCHAR(20)チーム名
leagueVARCHAR(20)所属リーグ名
homebaseVARCHAR(20)本拠地球場名
foundation_dateDATE創立年月日
directorVARCHAR(20)監督指名

なお、主キーは name である。

設問

(1)このテーブルを作成するSQLを記述しなさい。

(2)以下のデータを挿入するSQLを記述しなさい。

チーム名読売ジャイアンツ
所属リーグ名セントラル・リーグ
本拠地球場名東京ドーム
創立年月日1934年12月26日
監督氏名原 辰徳

コメント

タイトルとURLをコピーしました