見出し画像

SQL応用編 ~JOINを駆使して脱初心者~

こちらは、公式アドベントカレンダー2024_A IT技術関連トピック Day.18 の記事です。
公式アドベントカレンダー2024_B 仕事術・キャリア・体験記も毎日記事を公開していますので、ぜひあわせてご覧下さい。

★Day17のアドベントカレンダー記事
スクラムで性格診断を活用したミーティング活性化【ソーシャルスタイル編】(伊藤 慶紀)


こんにちは!QAエンジニアの鳥羽です。

QAエンジニアになって、案件に参画することになったものの、
SQLの経験がなく、基礎的な構文はできるけど、実践的なSQL構文が記載できない。。。
そんな方向けに、私が案件に参画した際に利用してきたSQL構文をまとめました!

SQLとは何か?


SQL(Structured Query Language)は、データベースの操作に用いられる言語です。データの検索、挿入、更新、削除など、データベース管理には欠かせない機能を提供しています。
ここでは、基礎的なお話は割愛させていただきます。

1. INNER JOIN (内部結合) - テーブルとテーブルを結合するためのSQL構文


テーブルとテーブルを結合するためのSQL構文です。
そして、INNER(内部)であることの特徴は、テーブルとテーブルの互いの条件に一致するレコード(データ行)をのみを抽出するという点です。
SELECT文の基本形は

SELECT カラム名 FROM テーブル名
INNER JOIN テーブル名 ON 結合条件;

です。
文字だけではイメージしづらいと思うので、下記に例文を記載します。
図のように、2つのテーブルがあるとします。

チョコを購入した人を知りたい場合、どのように検索しますか?
一回、商品リストテーブルをSELECT検索して、次に購入者リストテーブルを検索しますか?
それでは手間ですよね?
そんな場合、INNER JOIN を利用します!!

【SQL構文】

【図】

結合をうまく使うことで、1回SQL構文を利用しただけで、必要な情報をGETすることができました!!

★補足
ここでは、INNER JOINでの結合について記載させていただきましたが、INNER JOINを使用せずに、FROM句に複数のテーブルを指定し、WHERE句で結合条件を指定する方法でも、内部結合することができます。

【SQL構文】(INNER JOINで結合したテーブルと同じ情報が検索できる)

現場によっては、INNER JOINを利用していない現場もあるので、どちらの方法も覚えておくと便利です!

2. OUTER JOIN (内部結合) - 2つ以上のテーブルを結合し、一致する行以外も表示する


2つ以上テーブルを結合し、指定したキーで一致するレコードを結合するだけでなく、一致しないレコードも出力するSQLの構文です。
※一致しないレコードの欠けた値は NULL で埋められます。

SELECT文の基本形は

■左外部結合
SELECT カラム名 FROM 結合元テーブル名 LEFT JOIN 結合先テーブル名
ON 結合元テーブル名.カラム名 = 結合先テーブル名.カラム名;
■右外部結合
SELECT カラム名 FROM 結合先テーブル名 RIGHT JOIN 結合元テーブル名
ON 結合先テーブル名.カラム名 = 結合元テーブル名.カラム名;

※サンプルとして、左外部結合で説明させていただきます。

以下のテーブルが2つあるとします。

2つのテーブルを外部結合させていきたいと思います!

【SQL構文】

【図】

効率的なSQLの勉強方法


人によりますが、SELECT文やINSERT文と違って、結合などの複雑なSQLは実際に動かしてみないと理解できないことも多いです(私がそうでした。)
そこで、私が実際に利用したサイトをご紹介させていただきます!

Progate
実際にコードを書きながら学ぶことができるため、理論だけでなく実践的なスキルを身につけることができます。ブラウザ上で直接コードを実行できる環境が整っています。
私の場合、書籍を読むより、実際にコードを書きながら学びたかったので、
環境構築の手間もなしに、ブラウザ上で直接コードが実行できるところが魅力的でした。

私の体験ですが、ProgateのSQLコースを、5時間前後の勉強時間で学習し、結合について、理解することができました!
書籍だとSQLの動きがイメージ出来ず、理解に時間がかかったのですが、実際にSQL構文を書いて動かすことにより、イメージしやすくなり、自身の理解を深めることができました!

最後に


実際に現場で仕事をしていると、
SELECT文などの検索はできるのに、複雑な検索ができない。。。
という場面がたくさん出てくると思います。
複雑だと感じるSQL構文も結合がかかわっていることが、私の経験上、ほとんどでした。
少しずつできることを増やして、現場でもゴリゴリにSQLを実践できるように目指していってもらえたらと思います!!


執筆者プロフィール:鳥羽千明
新卒でIT業界の事務職に就職 → 手に職付けたくて、全くの未経験から
エンジニアにジョブチェンジ。
土日は、バンド活動「The Drunken's Party Night」のバイオリニストとして活動する日々。

SHIFTグループ公式アドベントカレンダー2024【A】 IT技術関連トピック Day19は「shadcn/uiとDuckDB Wasmで軽量で直感的なデータ可視化を実践」(Kenta Koshiishi)

お問合せはお気軽に

SHIFTについて(コーポレートサイト)

SHIFTのサービスについて(サービスサイト)

SHIFTの導入事例

お役立ち資料はこちら

SHIFTの採用情報はこちら

PHOTO:UnsplashPawel Czerwinski