見出し画像

等結合と自然結合

今日は、『実践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)

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪