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文の基本形は
です。
文字だけではイメージしづらいと思うので、下記に例文を記載します。
図のように、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文の基本形は
※サンプルとして、左外部結合で説明させていただきます。
以下のテーブルが2つあるとします。
2つのテーブルを外部結合させていきたいと思います!
【SQL構文】
【図】
効率的なSQLの勉強方法
人によりますが、SELECT文やINSERT文と違って、結合などの複雑なSQLは実際に動かしてみないと理解できないことも多いです(私がそうでした。)
そこで、私が実際に利用したサイトをご紹介させていただきます!
Progate
実際にコードを書きながら学ぶことができるため、理論だけでなく実践的なスキルを身につけることができます。ブラウザ上で直接コードを実行できる環境が整っています。
私の場合、書籍を読むより、実際にコードを書きながら学びたかったので、
環境構築の手間もなしに、ブラウザ上で直接コードが実行できるところが魅力的でした。
私の体験ですが、ProgateのSQLコースを、5時間前後の勉強時間で学習し、結合について、理解することができました!
書籍だとSQLの動きがイメージ出来ず、理解に時間がかかったのですが、実際にSQL構文を書いて動かすことにより、イメージしやすくなり、自身の理解を深めることができました!
最後に
実際に現場で仕事をしていると、
SELECT文などの検索はできるのに、複雑な検索ができない。。。
という場面がたくさん出てくると思います。
複雑だと感じるSQL構文も結合がかかわっていることが、私の経験上、ほとんどでした。
少しずつできることを増やして、現場でもゴリゴリにSQLを実践できるように目指していってもらえたらと思います!!
★SHIFTグループ公式アドベントカレンダー2024【A】 IT技術関連トピック Day19は「shadcn/uiとDuckDB Wasmで軽量で直感的なデータ可視化を実践」(Kenta Koshiishi)
お問合せはお気軽に
SHIFTについて(コーポレートサイト)
SHIFTのサービスについて(サービスサイト)
SHIFTの導入事例
お役立ち資料はこちら
SHIFTの採用情報はこちら
PHOTO:UnsplashのPawel Czerwinski