等結合と自然結合
今日は、『実践Pythonによるデータベース入門』の4.4 SELECT文―等結合と自然結合― で学んだことをアプトプットします。
【例題4.1】で作成した三つのテーブルを用いて、等結合演算と自然結合演算を行っていきます。
【例題4.3】
SQL命令文を用いて以下の要求を実現し、それをMySQL上で実行し、動作作確認をせよ。
(1)学生証番号が等しいと条件の下で、テーブルgakuseiとテーブルrishuの等結合を求める。
(2)テーブルgakuseiとテーブルrishuの自然結合を求める。
(3)学生証番号が等しいの条件の下で、テーブルgakuseiとテーブルrishuの等結合を求めて、さらに科目番号が等しいの条件の下で、テーブルkamokuとの等結合を求める。ただし、以下の項目のみを表示するものとする。
学生の氏名漢字、科目の科目名、教室、曜日、時限
(4)テーブルgakuseiとテーブルrishuとテーブルkamokuの自然結合を求める。ただし、以下の項目のみを表示するものとする。
学生の氏名漢字、科目の科目名、教室、曜日、時限
(1)学生証番号が等しいと条件の下で、テーブルgakuseiとテーブルrishuの等結合を求める。
mysql> SELECT * FROM gakusei INNER JOIN rishu ON gakusei.gakuseino = rishu.gakuseino;
+-----------+-----------------+--------------------+-----------+----------+
| gakuseino | namae | kana | gakuseino | kamokuno |
+-----------+-----------------+--------------------+-----------+----------+
| 80AB0001 | 田中花子 | たなかはなこ | 80AB0001 | C110 |
| 80AB0001 | 田中花子 | たなかはなこ | 80AB0001 | C212 |
| 80AB0001 | 田中花子 | たなかはなこ | 80AB0001 | T1022 |
| 80AB0001 | 田中花子 | たなかはなこ | 80AB0001 | C321 |
| 80AB0001 | 田中花子 | たなかはなこ | 80AB0001 | T1211 |
| 80AB0002 | 山田聡 | やまださとし | 80AB0002 | C211 |
| 80AB0002 | 山田聡 | やまださとし | 80AB0002 | C110 |
| 80AB0002 | 山田聡 | やまださとし | 80AB0002 | C321 |
| 80AB0002 | 山田聡 | やまださとし | 80AB0002 | T1211 |
| 80AB0002 | 山田聡 | やまださとし | 80AB0002 | T1023 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | 80AB0003 | C211 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | 80AB0003 | C110 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | 80AB0003 | T1212 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | 80AB0003 | C321 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | 80AB0003 | T1023 |
| 80AB0004 | 鈴木博 | すずきひろし | 80AB0004 | C211 |
| 80AB0004 | 鈴木博 | すずきひろし | 80AB0004 | C111 |
| 80AB0004 | 鈴木博 | すずきひろし | 80AB0004 | C322 |
| 80AB0004 | 鈴木博 | すずきひろし | 80AB0004 | T1212 |
| 80AB0004 | 鈴木博 | すずきひろし | 80AB0004 | T1023 |
+-----------+-----------------+--------------------+-----------+----------+
20 rows in set (0.00 sec)
(2)テーブルgakuseiとテーブルrishuの自然結合を求める。
mysql> SELECT * FROM gakusei NATURAL INNER JOIN rishu;
+-----------+-----------------+--------------------+----------+
| gakuseino | namae | kana | kamokuno |
+-----------+-----------------+--------------------+----------+
| 80AB0001 | 田中花子 | たなかはなこ | C110 |
| 80AB0001 | 田中花子 | たなかはなこ | C212 |
| 80AB0001 | 田中花子 | たなかはなこ | T1022 |
| 80AB0001 | 田中花子 | たなかはなこ | C321 |
| 80AB0001 | 田中花子 | たなかはなこ | T1211 |
| 80AB0002 | 山田聡 | やまださとし | C211 |
| 80AB0002 | 山田聡 | やまださとし | C110 |
| 80AB0002 | 山田聡 | やまださとし | C321 |
| 80AB0002 | 山田聡 | やまださとし | T1211 |
| 80AB0002 | 山田聡 | やまださとし | T1023 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | C211 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | C110 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | T1212 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | C321 |
| 80AB0003 | 佐藤美那子 | さとうみなこ | T1023 |
| 80AB0004 | 鈴木博 | すずきひろし | C211 |
| 80AB0004 | 鈴木博 | すずきひろし | C111 |
| 80AB0004 | 鈴木博 | すずきひろし | C322 |
| 80AB0004 | 鈴木博 | すずきひろし | T1212 |
| 80AB0004 | 鈴木博 | すずきひろし | T1023 |
+-----------+-----------------+--------------------+----------+
20 rows in set (0.00 sec)
(3)学生証番号が等しいの条件の下で、テーブルgakuseiとテーブルrishuの等結合を求めて、さらに科目番号が等しいの条件の下で、テーブルkamokuとの等結合を求める。ただし、以下の項目のみを表示するものとする。
学生の氏名漢字、科目の科目名、教室、曜日、時限
mysql> SELECT gakusei.namae, kamoku.kamokumei, kamoku.kyoushitsu, kamoku.youbi, kamoku.jigen FROM gakusei INNER JOIN rishu ON gakusei.gakuseino = rishu.gakuseino INNER JOIN kamoku ON rishu.kamokuno = kamoku.kamokuno;
+-----------------+--------------------------------------+--------------+-------+-------+
| namae | kamokumei | kyoushitsu | youbi | jigen |
+-----------------+--------------------------------------+--------------+-------+-------+
| 佐藤美那子 | ネットワーク基礎 | 2111 | 火 | 1 |
| 山田聡 | ネットワーク基礎 | 2111 | 火 | 1 |
| 田中花子 | ネットワーク基礎 | 2111 | 火 | 1 |
| 鈴木博 | プログラミング入門 | 2111 | 火 | 2 |
| 鈴木博 | オペレーティングシステム | 1203 | 月 | 3 |
| 佐藤美那子 | オペレーティングシステム | 1203 | 月 | 3 |
| 山田聡 | オペレーティングシステム | 1203 | 月 | 3 |
| 田中花子 | データベース | 1203 | 月 | 2 |
| 佐藤美那子 | プロジェクト1 | 1211 | 水 | 3 |
| 山田聡 | プロジェクト1 | 1211 | 水 | 3 |
| 田中花子 | プロジェクト1 | 1211 | 水 | 3 |
| 鈴木博 | プロジェクト2 | 1212 | 水 | 4 |
| 田中花子 | 英語1 | 3221 | 火 | 2 |
| 鈴木博 | 英語2 | 3221 | 金 | 2 |
| 佐藤美那子 | 英語2 | 3221 | 金 | 2 |
| 山田聡 | 英語2 | 3221 | 金 | 2 |
| 山田聡 | 体育1 | 体育館 | 水 | 3 |
| 田中花子 | 体育1 | 体育館 | 水 | 3 |
| 鈴木博 | 体育2 | グランド | 火 | 2 |
| 佐藤美那子 | 体育2 | グランド | 火 | 2 |
+-----------------+--------------------------------------+--------------+-------+-------+
20 rows in set (0.00 sec)
(4)テーブルgakuseiとテーブルrishuとテーブルkamokuの自然結合を求める。ただし、以下の項目のみを表示するものとする。
学生の氏名漢字、科目の科目名、教室、曜日、時限
mysql> SELECT gakusei.namae, kamoku.kamokumei, kamoku.kyoushitsu, kamoku.youbi, kamoku.jigen FROM gakusei NATURAL INNER JOIN rishu NATURAL INNER JOIN kamoku;
+-----------------+--------------------------------------+--------------+-------+-------+
| namae | kamokumei | kyoushitsu | youbi | jigen |
+-----------------+--------------------------------------+--------------+-------+-------+
| 佐藤美那子 | ネットワーク基礎 | 2111 | 火 | 1 |
| 山田聡 | ネットワーク基礎 | 2111 | 火 | 1 |
| 田中花子 | ネットワーク基礎 | 2111 | 火 | 1 |
| 鈴木博 | プログラミング入門 | 2111 | 火 | 2 |
| 鈴木博 | オペレーティングシステム | 1203 | 月 | 3 |
| 佐藤美那子 | オペレーティングシステム | 1203 | 月 | 3 |
| 山田聡 | オペレーティングシステム | 1203 | 月 | 3 |
| 田中花子 | データベース | 1203 | 月 | 2 |
| 佐藤美那子 | プロジェクト1 | 1211 | 水 | 3 |
| 山田聡 | プロジェクト1 | 1211 | 水 | 3 |
| 田中花子 | プロジェクト1 | 1211 | 水 | 3 |
| 鈴木博 | プロジェクト2 | 1212 | 水 | 4 |
| 田中花子 | 英語1 | 3221 | 火 | 2 |
| 鈴木博 | 英語2 | 3221 | 金 | 2 |
| 佐藤美那子 | 英語2 | 3221 | 金 | 2 |
| 山田聡 | 英語2 | 3221 | 金 | 2 |
| 山田聡 | 体育1 | 体育館 | 水 | 3 |
| 田中花子 | 体育1 | 体育館 | 水 | 3 |
| 鈴木博 | 体育2 | グランド | 火 | 2 |
| 佐藤美那子 | 体育2 | グランド | 火 | 2 |
+-----------------+--------------------------------------+--------------+-------+-------+
20 rows in set (0.00 sec)
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪