MySQL 結合の基礎

日頃、扱う事が多いので、見直して再度分かり易く説明できるように書いてみます。他人に説明するのが捗るしね。

MySQLの結合の基礎

MySQL JOIN 結合
ざっくり説明すると、2つ以上のテーブルの値を結合して値を出すということ。上の図でいうとユーザーテーブルのそれぞれカラムがあり、そこには別の仕事テーブルと紐付けしているという状態。で、実際に業務に使っていると色々な条件で抽出しなければならないことがある。
実際にそのJOINの種類を見てみる。

INNER JOIN (内部結合)

単純にカラムにあった値を出すというもの。
MySQL INNER JOIN
この場合は、

SELECT * FROM `users` INNER JOIN `works` ON `users`.`work_id` = `works`.`work_id` 

SELECTの後は* と全指定なので、全て表示ですが、必要なカラムだけ指定すればそれだけ表示されます。

内部結合で人に教えるときに、そのカラムを指定を間違う点、
あとその後のONで指定しないとCROSS JOIN と同じで全て表示されるという点、
それとSELECTの後に表示させるカラム名明確に記載しないと(今回でいう*の部分)全部表示されるという事ですかね。

SELECT  `users` INNER JOIN `works` ON `users`.`work_id` = `works`.`work_id` 

MySQL INNER JOIN
SELECT の後にカラムを指定

 

テーブル名が長くてメンドクセーって場合は AS句で省略もできます。

SELECT name,work_name FROM `users` AS u INNER JOIN `works` AS w ON u.`work_id` = w.`work_id` 

LEFT OUTER JOIN と RIGHT OUTER JOIN (外部結合)

INNER JOIN 内部結合では外部キーに指定でないのですが、外部結合はお構いなしに結合してきます。記述の仕方はINNER部分が違うだけですね。

SELECT id,name,work_name FROM `users` LEFT OUTER JOIN `works` ON `users`.`work_id` = `works`.`work_id` 
MySQL INNER JOIN 違い
MINNER JOIN
MySQL LIFT JOIN
LEFT  JOIN
MySQL RIGHT JOIN
RIGHT  JOIN

図で表すとこんな感じです。

MySQL JOIN 違い

CROSS JOIN

私はあまり使わないのですが、クロス結合は全ての値を出す。デカルト積です。
実際にやってみます。
MySQL CROSS JOIN要は全て掛け合わせるということですね。
左の例ではCROSS JOINのみで、
その後のON指定はしていません。
ON や USING 指定すると
INNERJOINと同じ挙動になります。
使うか?のか?これ?
ブルートフォートの辞書作りには使うかもですね。
うん、たぶん。それ以外は使いみちが分からないです。

最新情報をチェックしよう!
>最強のWordPressテーマ「THE THOR」

最強のWordPressテーマ「THE THOR」

システムの構築・保守運用「   」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG