SQL

SQL

【SQL】DELETE文でデータを削除する|SQLの基本を初心者向けに解説

こんにちは、かつコーチです。前回はUPDATE文で既存データを書き換える方法を解説しました。DML(データ操作言語)の最後のピースが、テーブルから不要な行を取り除くDELETE文です。DELETE文はSELECT・INSERT・UPDATE...
SQL

【SQL】UPDATE文でデータを更新する

こんにちは、かつコーチです。前回の記事では、テーブルに新しいデータを追加するINSERT文を解説しました。今回は、すでに登録されているデータの内容を書き換えるUPDATE文を扱います。会員情報の変更、注文ステータスの更新など、Webアプリで...
SQL

【SQL】INSERT文でデータを追加する|SQLの基本を初心者向けに解説

こんにちは、かつコーチです。ここまでの記事では、すでにあるデータを取得するSELECT文を中心に解説してきました。ここからは、データそのものを操作するDML(データ操作言語)に入っていきます。第一弾は、テーブルに新しいデータを追加するINS...
SQL

【SQL】相関サブクエリの仕組みと使いどころ|非相関サブクエリとの違いを理解する

こんにちは、かつコーチです。前回の記事「サブクエリの基本」では、外側のクエリと独立して実行できる非相関サブクエリを扱いました。今回は、外側のクエリの各行を参照しながら繰り返し実行される相関サブクエリ(correlated subquery)...
SQL

【SQL】サブクエリの基本:クエリの中にクエリを書く|SQL中級者への第一歩

こんにちは、かつコーチです。「一度取得した結果を、もう一度別の条件で絞り込みたい」「他のテーブルの集計結果と比較したい」——そんな場面でJOINだけでは書きづらいと感じたことはありませんか。この記事では、そうした悩みを解決するサブクエリの基...
SQL

【SQL】HAVINGでグループ集計結果を絞り込む|WHEREとの違いを整理

こんにちは、かつコーチです。前回の記事「GROUP BYでグループごとに集計する」で、GROUP BYを使うとグループ単位の集計ができることを解説しました。そこで一つ壁にぶつかった方も多いのではないでしょうか。「集計した結果を条件で絞り込み...
SQL

【SQL】GROUP BYでグループごとに集計する|SQLの基本を初心者向けに解説

こんにちは、かつコーチです。「COUNT・SUM・AVGは使えるようになったけど、『顧客ごとの注文件数』のように、グループ単位で集計したいときはどう書けばいいんだろう」と悩んでいませんか。この記事では、そんな悩みを解決するGROUP BYの...
SQL

【SQL】UNION・UNION ALLで結果セットを結合する

こんにちは、かつコーチです。「今月の注文テーブル」と「過去の注文アーカイブテーブル」を1つのリストとしてまとめて表示したい。こうした「複数のSELECT結果を縦に連結したい」場面で使うのがUNION・UNION ALLです。これまで解説して...
SQL

【SQL】自己結合(SELF JOIN)の使い方

こんにちは、かつコーチです。「社員テーブルの中で、上司と部下の関係を一覧にしたい」「同じ商品カテゴリの中で、価格が近い商品同士を比較したい」。こうした「同じテーブルの中にある行同士を比較・結合したい」というケースで使うのが自己結合(SELF...
SQL

【SQL】3つ以上のテーブルを結合する

こんにちは、かつコーチです。実務のデータベースは、2つのテーブルだけで完結することはほとんどありません。「会員」「注文」「商品」のように、3つ、4つとテーブルが連鎖している構成が一般的です。今回は、複数テーブルを連結して結合する方法と、多対...
SQL

【SQL】LEFT JOIN・RIGHT JOINの違いと使いどころ

こんにちは、かつコーチです。前回はINNER JOINで「一致する行だけ」を取得する方法を解説しました。今回は、「一致しない行も含めて取得したい」ときに使うLEFT JOINとRIGHT JOINを解説します。「一度も注文したことがない会員...
SQL

【SQL】INNER JOINで複数テーブルを結合する

こんにちは、かつコーチです。「注文テーブルと会員テーブルを組み合わせて、注文者の名前も一緒に表示したい」——このように、複数のテーブルにまたがるデータを1つの結果として取得したいとき、JOIN(結合)が必要になります。今回は、もっとも基本的...
SQL

【SQL】NULLの扱い方:IS NULL・IS NOT NULLでハマらないために

こんにちは、かつコーチです。「WHERE column = NULLと書いたのに、なぜか1件もヒットしない」——SQLを書き始めた人がほぼ必ず一度はハマる落とし穴です。今回は、NULL(値が存在しない、未入力であることを示す特殊な状態)の正...
SQL

【SQL】IN・BETWEENで複数条件・範囲を指定する

こんにちは、かつコーチです。「東京・大阪・愛知に住んでいる人」「価格が1,000円〜3,000円の商品」のように、複数の候補や範囲を指定したい場面はとても多いです。ORを何個も並べると読みにくくなりますが、INとBETWEENを使えばすっき...
SQL

【SQL】LIKE演算子であいまい検索をする

こんにちは、かつコーチです。「名前に“田中”を含む人を探したい」「メールアドレスが“gmail.com”で終わる人を探したい」という場面、実務でよくありますよね。今回は、こうしたあいまい検索(完全一致ではなく部分的に一致する文字列を探す検索...
SQL

【SQL】比較演算子とAND・OR・NOTの使い方

こんにちは、かつコーチです。今回は、WHERE句で条件を組み立てるときに欠かせない比較演算子(値同士の大小や一致を比べる記号)と、論理演算子(複数の条件を組み合わせる言葉)のAND・OR・NOTを解説します。「30代の女性だけ抽出したい」「...
SQL

【SQL】集計関数(COUNT・SUM・AVG・MAX・MIN)の使い方

こんにちは、かつコーチです。「今月の注文件数は何件?」「売上の合計はいくら?」「一番高い商品はいくら?」。こうした問いに答えるとき、1件ずつデータを目で数える必要はありません。SQLには、複数行のデータをまとめて計算してくれる集計関数が用意...
SQL

【SQL】DISTINCTで重複を除去する

こんにちは、かつコーチです。「注文テーブルから、注文したことがある都道府県の一覧が欲しい」。こういう場面でSELECT文をそのまま書くと、同じ都道府県が注文件数分だけ何度も表示されてしまいます。この記事では、結果から重複行を取り除くDIST...
SQL

【SQL】LIMIT・OFFSETで件数を制限する

こんにちは、かつコーチです。「新着記事を5件だけ表示したい」「1ページあたり20件ずつ表示するページネーションを作りたい」。こうした要件でよく使うのがLIMIT句とOFFSET句です。この記事では、usersテーブルを例にLIMIT・OFF...
SQL

【SQL】ORDER BYで並び替える

こんにちは、かつコーチです。「新着順に商品を並べたい」「年齢の若い順に会員を表示したい」など、データを並び替えて表示したい場面は非常に多くあります。このような並び替えを実現するのがORDER BY句です。この記事では、これまでと同じuser...