エビデンスで教育を考えた

頭が良くなる科学論文を紹介していきます。お勧め商品は楽天ルームで!https://room.rakuten.co.jp/room_12b7a40f6d/items

MYSQLメモ〜inner joinについて〜

f:id:mathlikeB:20200307131513p:plain
 

 このような2つのテーブルがあったとします。

テーブル名:master

                                                                                    • +
id install_time delete_flg
                                                                                    • +
1 2016-03-19 15:45:00 0
                                                                                    • +


テーブル名:login

                                                          • +
id login_time
                                                          • +
1 2016-03-19 15:50:00
                                                          • +


 両者にはuser_idが共通しています。これらから登録と、ログイン日付を出したい時はどうしたらいいでしょうか。

こういう問題の時に、inner joinが有効です。inner joinとは内側での結合のことです。もうちょっと言うと、「複数のテーブルで共通のカラムがある場合に、1つのテーブルのように繋げることができる機能」のこと。そのためのコードはこんな感じ。

mysql> select * from master
-> inner join login on master.id = login.id;
結果

                                                                                                                                              • +
id install_time delete_flg id login_time
                                                                                                                                              • +
1 2016-03-19 15:45:00 0 1 2016-03-19 15:50:00
                                                                                                                                              • +

このように、

select カラム from table A inner join table B on 共通カラム;


で表示。


 ちなみに『それならなんで1つのテーブルを複数に分けるの?初めから1つで全部表示すればいいんでないの?」とも思うのですが、これはひとえにセキュリティのため。情報漏洩のリスクは分散させるしかないんですな。