SQL文一覧 基本4大ステートメントのサンプルコード集
  • facebookページ
  • twitterページ
  • 2019.10.20

    SQL文一覧 基本4大ステートメントのサンプルコード集

    SQL文の基本となる、select、insert、update、deleteの基本的な使い方を紹介します。

    以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。SQL実行結果の表示にはphpMyAdminを使用しています。

    select構文 SQL文の基本


    SQL文の中で、もっとも指定が複雑なのがselect文。

    サブクエリとして使ったり、selectの結果をinsert文に渡したりとSQL文の中でも基本となるステートメントです。where条件の指定や、order by句でのソート指定、limit句での最大取得数指定は他のステートメントでも使うことになるので覚えておきましょう。

    以下のSQLは、1991年1月1日以降入社の社員数が多い部署の上位5件のdept_name(部署名)とcnt(人数)を出力します。

    部署名を取得するために、employees(社員テーブル)、dept_emp(部署・社員紐付けテーブル)、departments(部署テーブル)をjoinし、部署の社員数が7000人以下の場合は、除外しています。

    実行するとこうなります。

    SQL実行結果

    distinctで重複レコードの扱いを指定

    取得データが重複した場合は、distinct指定で重複除外が可能です。

    【関連記事】
    SQL distinctのサンプルコード集 group byよりも700倍速い?

    join条件を指定

    複数テーブルの結合指定をおこないます。1つのクエリで複数のテーブルから、必要なカラムを紐付けて取得することが可能です。

    【関連記事】
    SQL Joinサンプル集 Joinで遅いSQLの原因を調べる方法

    where句で検索条件を指定

    検索条件を指定します。あいまい検索や、範囲指定、NULL判定など高度な条件も指定可能です。

    【関連記事】
    SQL where句のサンプルコード集 ワイルドカードやサブクエリを使った複雑な条件指定

    group by句でグルーピング条件を指定

    小計を計算する場合など、カラムにグルーピング条件を指定します。

    【関連記事】
    SQLのgroup byサンプルコード集 count、like、join等の組み合わせ例

    having句で集約関数の絞込条件を指定

    グルーピングと合わせて使うcount、sum、avgなどの集約関数の絞込条件を指定します。

    【関連記事】
    SQL having 集約関数の絞り込み whereよりもレスポンスが遅い理由とは?

    order by句でソート指定

    取得レコードの並び替えをおこなうための条件を指定します。

    【関連記事】
    SQL order byでソート指定するサンプルコード集 指定のレコードだけ先頭に並べるには?

    limit句でレコード取得のオフセットや最大取得数指定

    1クエリでの最大レコード取得数や、取得開始位置(オフセット)を指定します。対象テーブルにレコードが大量にあるなど、クエリのレスポンスが遅くなる場合に有効です。

    【関連記事】
    SQL limitを使ったページング、ランダム抽出、速度改善をおこなう

    unionでselect結果の和集合を指定

    複数のselect文の結果を和集合として一つにまとめたい場合には、unionを使います。

    【関連記事】
    【意外と知らない?】SQL unionの使い方をわかりやすく説明

    case式でカラム指定に分岐ロジックを指定

    SQLの条件分岐を組み込みたい場合は、case式を使います。

    【関連記事】
    SQLのCASE式サンプル集 order byやgroup byとの組み合わせもバッチリ

    insert構文 レコードを挿入


    テーブルにレコードを挿入します。insert文にはwhere指定がありません。重複データがあればupdateの動作をする「ON DUPLICATE KEY UPDATE」は、DBMSによっては指定できない場合があります。

    下記SQLは、employees(社員テーブル)に、データを挿入します。

    または

    select文の結果をテーブルに挿入する場合の構文です。

    下記SQLはemployees(社員テーブル)のデータ全件を、employees2テーブルに挿入します。※employees2テーブルの構造は、employeesテーブルと同一の前提。

    【関連記事】
    【こんな使い方も?】SQL insertの使用方法を徹底的に解説

    update構文 レコードを更新

    テーブルのレコードを更新します。order by指定の順にデータを更新します。

    下記SQLはemployees(社員テーブル)の、emp_no(社員番号)が10002のレコードのfirst_name(姓名の名)をBezalelxに更新します。

    【関連記事】
    【実例で学ぶ】SQL「UPDATE」文の使い方 基礎・応用編

    where句で更新対象レコードを指定

    更新するレコードをwhere条件で指定します。指定を誤ると広範囲のデータを上書き更新してしまう可能性があります。

    手動でupdateステートメントを発行する場合などは、いったんselect文とwhere句を組み合わせて対象の更新レコードを確認するなどの注意が必要です。

    order by句でソート指定

    update文でのorder by指定は、更新順序を指定します。

    ソートして先頭から3レコードのみ更新したい場合など、limit句と組み合わせるケースもあります。

    postgreSQLなど、update文でorder by句を指定できないDBMSもあります。

    limit句でレコード取得のオフセットや最大取得数指定

    更新対象レコードが大量の場合、テーブルを長時間ロックしてしまわないよう小分けで更新をかけたい場合に使います。

    delete構文 レコードを削除

    テーブルのレコードを削除します。order by指定の順にデータを削除します。

    下記SQLは、employees(社員テーブル)から、emp_no(社員番号)が10007のレコードを削除します。

    【関連記事】
    【初心者向け】SQLのDELETE文の使い方を現役SE目線で解説

    where句で削除対象レコードを指定

    削除するレコードを条件指定します。指定を誤ると必要なデータまで削除してしまう恐れがあります。

    手動でSQLを発行する場合には、対象レコード指定のwhere句をselect文と組み合わせて、削除対象を確認しましょう。

    【関連記事】
    SQLで重複を削除するサンプルコード 最新データを残してdeleteするには?

    order by句でソート指定

    ソートして上位10件を削除したい場合などlimitを組み合わせるケースがあります。

    limit句でレコード取得のオフセットや最大取得数指定

    order byと組み合わせるケースや、大量データの削除をおこなう際、1クエリで実行するとレスポンスが長時間戻ってこない場合など、小分けでdeleteを実行したい場合などに使います。

    【関連記事】
    SQL limitを使ったページング、ランダム抽出、速度改善をおこなう

    まとめ

    ポテパンダの一言メモ
    • select文はデータ取得用のSQL文。各句の指定が最も複雑。
    • insertはデータ挿入用。1件挿入と、select結果の挿入が可能。
    • updateはデータ更新用。ソートとlimitで上位レコードのみ更新可能。
    • deleteはデータ削除用。大量データ処理時にlimitで小分けして処理可能。

    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件