SQLの代表的な構文を、やりたいことから逆引き方式でまとめています。
SQL 逆引き一覧
やりたいことに対応するSQL構文と、サンプルコードを記載した記事を紹介します。
レコード検索
レコードを検索する – select
条件を指定して、対象レコードを検索・抽出するにはselect文を使います。
【関連記事】
▶【初心者向け】SQLのデータ抽出処理!SELECT文の使い方を理解しよう!
重複レコードを考慮して検索 – select、distinct
重複レコードを除外したり、重複レコードのみを取得するにはselectとdistinctを使います。
【関連記事】
▶SQLで重複データを扱うサンプルコード集 カウント、集計、最新のみ抽出、重複禁止
NULLを考慮して検索 – IS NULL/IS NOT NULL
NULLの判定にはIS NULLを使います。
【関連記事】
▶SQL isnullの使い方 NULL判定やNULL置換の方法 case式でも対応可能
取得した値がNULLだった場合の置き替えには、coalesceを使います。
【関連記事】
▶SQL coalesce 値がNULLの場合の代替値を返す 簡易版のNVLやNULLIFが使えるDBもあり
指定範囲のレコードを検索 – between
範囲指定を行うにはbetweenを使います。select以外のupdateやdeleteの条件としても使用可能です。
【関連記事】
▶SQL betweenで範囲指定するサンプルコード 速度アップにもつながる?
複数の値のどれかに一致・除外したレコードを検索 – IN
複数の値のどれかに一致する条件は、inを使います。
【関連記事】
▶SQL in句のサンプルコード集 複数カラムの指定方法とは?
複数の値を除外するには、not inを使います。
【関連記事】
▶SQL not in データの除外指定 NULLや複数カラムを扱う方法
検索結果のカラム名に変更する – AS
検索結果のカラム名が、長くなる場合など、名前変更するにはasを使います。
【関連記事】
▶SQLで別名をつけるならAS句を使いこなそう!つけ方をわかりやすく解説
複数テーブルを結合して検索
テーブルの内部結合・等価結合 – inner join
複数テーブルを内部結合するにはinner joinを使います。
【関連記事】
▶【初心者向け】SQLのINNER JOIN 内部結合の基本的な使い方を理解しよう!
テーブルの外部結合 – left outer join/right outer join/full outer join
複数テーブルの外部結合には、left outer join/right outer join/full outer joinを使います。「outer」は省略可能です。
【関連記事】
▶SQL 外部結合サンプルコード 3テーブル結合とパフォーマンス比較
テーブルの自己結合(セルフジョイン) – join/AS
テーブルを自分自身と結合するには、サブクエリの結果をasで別テーブルとして扱い、joinします。
【関連記事】
▶SQLのas句で、同一テーブルに別名をつけセルフジョインするサンプルコード
別クエリの結果を使って検索(副問い合わせ)
副問い合わせ(サブクエリ)
副問い合わせの基本的な使い方です。
【関連記事】
▶SQLの副問い合わせ(サブクエリ)とは?概要・種類・使い方を解説
サブクエリのサンプルコードです。
【関連記事】
▶SQL where句のサンプルコード集 ワイルドカードやサブクエリを使った複雑な条件指定
別クエリの結果に含まれる条件を指定 – IN/EXISTS
複数の値のどれかにマッチする条件は、inを使います。
【関連記事】
▶SQL in句のサンプルコード集 複数カラムの指定方法とは?
existsを使った方が高速なケースもあります。
【関連記事】
▶SQLのexistsとinの違いは、返り値とカラム指定するかどうか
複数の値のどれにもマッチしない条件には、not inやnot existsを使います。
【関連記事】
▶SQL not exists サンプルコード 2テーブルの片方にしかないデータを抽出
サブクエリを使ったビューを作成 – view
ビューの作成にも、サブクエリを使用できます。
【関連記事】
▶SQLのview作成 joinやサブクエリを使ったselectも使用可能
集合
和集合(複数の検索結果を統合) – union
複数の検索結果を統合するには、union。3つ以上の検索結果統合にはunion allを使います。
【関連記事】
▶【意外と知らない?】SQL unionの使い方をわかりやすく説明
unionのサンプルコードです。
【関連記事】
▶MySQL UNIONで、select文ごとにorder byでソート指定するサンプルSQL
差集合(複数の検索結果の差を取得) – except
検索結果の差集合を得るにはexcept。ただし、標準SQLではないため一部のDBMSでは工夫が必要です。
【関連記事】
▶SQLのexceptは差分集合を作る 標準SQLなのにサポートされないDBもあり
挿入
レコードの挿入 – insert
レコードを挿入するにはinsertを使います。
【関連記事】
▶【こんな使い方も?】SQL insertの使用方法を徹底的に解説
selectした結果をレコードとして挿入 – insert/select
selectした結果をinsertすることも可能です。
【関連記事】
▶【SQL】SELECTした結果を別テーブルへINSERTする方法
更新
レコードの更新 – update
レコードを更新するにはupdateを使います。
【関連記事】
▶【実例で学ぶ】SQL「UPDATE」文の使い方 基礎・応用編
レコードの挿入時に、存在すれば更新
挿入時に、データが存在すればupdateを行う仕様拡張がされているデータベースもあります。
【関連記事】
▶【SQL】UPDATEとINSERTを同時に行う便利なクエリ「merge」についての解説
削除
レコードの削除 – delete
レコードを削除するにはdeleteを使います。
【関連記事】
▶SQL DELETEで、データベース・テーブルの行を削除する方法
レコードを高速に削除 – truncate
truncateは高速にレコード削除が可能ですが、条件指定ができない点とロールバック不可な点に注意。
【関連記事】
▶SQL truncate 高速データ削除 deleteやdropとの違いとDBMS間の差異
文字列操作
文字列の連結 – concat
複数の文字列を連結するにはconcatを使います。DBMSによっては、より簡易な記述で文字列の連結が可能な場合もあります。
【関連記事】
▶SQL concat 複数文字列を連結する NULLが入っていた場合は無視
文字列の切り出し – substr/left/right/mid
文字列の切り出しには、substr、left、right、midなどを使います。DBMSによって、関数名が異なるケースもあります。
【関連記事】
▶SQLで文字列を切り出すには?MySQLのsubstr関数の使い方
文字数を取得 – length
文字列の文字数を取得するにはlengthを使います。
【関連記事】
▶【SQL】文字数を調べる!SQLでのLENGTH関数の使い方を徹底解説!
文字列の置き替え – replace
指定の文字列を別の文字列に置き換えるにはreplaceを使います。
【関連記事】
▶SQLのREPLACE関数を用いた置換機能 使用方法を徹底的に解説
数値計算
四則演算・剰余(あまり)を算出
四則演算は、+、-、*、/の記号で計算可能。剰余はmodで算出できます。
【関連記事】
▶SQLのSELECT句で計算してみよう!算術演算子を使った加工処理とは!
平均を求める – GROUP BY、AVG
GROUP BYで検索結果をグルーピングし、AVGで平均値を計算できます。
【関連記事】
▶SQLで平均を求める関数や方法について徹底解説!
小計を求める – GROUP BY、SUM
GROUP BYで検索結果をグルーピングし、SUMで小計を計算できます。
【関連記事】
▶SQL sumのサンプルコード集 基本の小計出力から、NULL対策まで
最大値、最小値を求める – GROUP BY、MAX、MIN
GROUP BYで検索結果をグルーピングし、グループ内の最大値をMAX、最小値をMINで計算できます。
【関連記事】
▶【超便利!】SQLのMAX関数・MIN関数の使い方をわかりやすく解説
レコード数をカウントする – COUNT
レコード数をカウントするにはCOUNTを使います。
【関連記事】
▶SQL countのサンプルコード集 複数テーブル件数を一発で取得する
distinctと組み合わせて、データの種類をカウントすることも可能。
【関連記事】
▶SQL distinctとcountを組み合わせてデータ種類をカウントする
日付計算
日付計算にはdateを使います。
【関連記事】
▶SQLのdateは、日付を扱うデータ型 書式変換、加減算、比較が可能
型変換
文字列型へ変換 – TO_CHAR
文字列型にデータ型を変換するにはTO_CHARを使います。ゼロ詰めやカンマ編集も可能。
【関連記事】
▶TO_CHAR関数の使い方を解説!SQLで数値や日付を書式を指定して文字列に変換
日付型へ変換 – TO_DATE
日付型に変換するには、TO_DATEを使います。データベースによっては別の関数が用意されています。
【関連記事】
▶【SQL】TO_DATE関数の使い方|PostgreSQL・MySQLでの代用法も
数値に変換 – TO_NUMBER
数値型に変換するにはTO_NUMBERを使います。
【関連記事】
▶SQLで文字列と数値を変換する 数値をゼロ詰めフォーマットする方法
まとめ
- データベースにより一部の仕様が異なるケースがある
- 基本はレコードの検索、挿入、更新、削除
- レコード検索には、関数や条件指定バリエーションで多彩な検索か可能