SQLの基本|SELECT・WHERE・ORDER BYで必要なデータを取り出す
データが増えると、必要な情報だけを探したり、条件に合う順で並べたりしたくなります。SQLは、データベースに対して問い合わせなどを行う言語です。最初は読むためのSELECTから始め、どんな結果になるかを予想して確かめましょう。
この記事では、架空の読書一覧を使って基本を紹介します。既存の業務データベースへ作成や変更を実行するための手順ではありません。サンプル表を用意できる練習環境で、問い合わせの結果を確認してください。
表・列・行の関係を整理する
この練習ではbooksという表があり、id、title、pagesの3列を持つとします。行は一冊ずつの記録です。まず項目の意味を読めるようにすると、何を取得するか、どの条件で選ぶかを考えやすくなります。
- id:本を区別する練習用の番号
- title:本の名前を表す文字列
- pages:ページ数を表す数値
id | title | pages
1 | 週末の読書 | 180
2 | 旅の記録 | 320
3 | 小さな習慣 | 240上の3行を使うものとして、次の問い合わせを読みます。列名や表名は実際のデータベースごとに異なります。コードだけをコピーする前に、自分の練習環境の表と列を確認してください。例の本の名前と数値はこの記事の説明用です。
SELECTで必要な列を指定する
SELECTのあとに取得する列、FROMのあとに表を指定します。titleとpagesだけが必要なら、次のように書けます。SELECT *で全列を選ぶこともできますが、最初は必要な項目を明示すると結果を確認しやすくなります。
SELECT title, pages
FROM books;この問い合わせでは3行それぞれの本の名前とページ数を取得します。ただし並び順を指定していないため、常にidの順で表示されるとは考えないようにしましょう。欲しい情報と表示順は別に指定します。
参考:PostgreSQL公式「Querying a Table」
WHEREで条件を付け、ORDER BYで並べる
WHEREは条件に合う行を選ぶために使います。ORDER BYは結果を並べる指定です。この例では200ページ以上の本を選び、ページ数が少ない順、同じページ数ならidが小さい順に並べます。
SELECT title, pages
FROM books
WHERE pages >= 200
ORDER BY pages ASC, id ASC;練習の3行では、「小さな習慣 240」「旅の記録 320」の順になります。ASCは昇順、DESCは降順の指定です。条件の>=を>へ変える場合は、ちょうど200ページの行がどう変わるかを考えると、比較の意味を確認できます。
同じ値の行がある場合に結果の順を安定させたいなら、区別できる列も並び順へ含めます。必要な順序を言葉で決めてから書くと、偶然見えた結果を正しい仕様だと思い込まずに済みます。
結果は件数と境界の値で照合する
問い合わせが実行できても、必要な行が全部取れたとは限りません。元の一覧と比べ、条件に合う件数と値を確認しましょう。200ページ未満、ちょうど200ページ、200ページより多い行を練習に加えると、境界の確認ができます。
- 取得したい列を文章で決める
- 条件に合う行を手元で数える
- 問い合わせを実行して件数を照合する
- 並び順と境界の値を確認する
SQLの方言やデータ型、文字の比較にはデータベースごとの差があります。使う製品の公式資料を参照し、実際の仕様を確認してください。アプリから入力を受けて問い合わせる場合は、文字をそのままSQLへつなげず、使用するドライバーのパラメーター指定を学ぶ必要があります。
更新や削除は読み取りと影響が違うため、別の課題として練習します。まずSELECTで必要な情報を取れる状態にし、実データを変更する操作は権限や対象を確認してから扱いましょう。
よくある質問
Q. 表計算のフィルターと同じですか?
条件で行を絞るという点では似た考え方を使えます。ただしSQLはデータベースへの問い合わせで、表示や保存の仕組みは表計算とは異なります。最初は条件と結果を対応させる練習から始めましょう。
Q. WHEREを書かなければどうなりますか?
このSELECTの例では、表のすべての行が取得対象になります。意図している範囲かを確認してください。更新や削除など別の文では影響が大きいため、SELECTの感覚だけで変更処理を実行しないようにしましょう。
実践前のチェックリスト
- 表名と列の意味を確認した
- 必要な列を明示した
- 条件を文章で決めた
- 並び順を指定した
- 件数と境界の値を照合した
まとめ
SQLの入門では、SELECTで列を選び、WHEREで行を絞り、ORDER BYで順を指定する流れを学びましょう。小さな練習用の表なら、期待する結果を手で確認できます。実行できたかに加え、件数と並び順が目的に合うかを確かめてください。
関連記事
- 美容・脱毛
初めての脱毛ガイド|医療脱毛・サロンの選び方と契約前の確認ポイント
- プログラミング
プログラミングのポートフォリオの作り方|小さな作品を伝わる形にまとめる
- 美容・脱毛
化粧品のネット購入で確認すること|定期購入・総額・返品条件のチェック
- 海外旅行
ディズニークルーズ準備ガイド|船選び・費用・予約と船内の英会話
- 海外旅行
エジプト旅行の準備ガイド|ツアーと個人手配の選び方・現地での会話
- 海外旅行
コーチェラ参加の準備ガイド|チケット・宿泊・移動・現地の英会話
- 海外旅行
アイスランド温泉旅行の準備ガイド|施設選び・予約・移動・現地の会話
- 海外旅行
海外ファームステイの準備ガイド|滞在先の選び方・確認事項・ホストとの英会話
- 海外旅行
初めての地中海クルーズ準備ガイド|航路・予算・寄港地・船内の英会話
- 美容・脱毛
美容費の見直し方|化粧品の買いすぎを防ぐ予算とストック管理のコツ
- プログラミング
APIの基本|HTTP・JSON・fetchを初めて学ぶ人の確認ポイント
- 美容・脱毛
ファンデーションの選び方|色・仕上がり・使い方を比べる初心者ガイド
- プログラミング
プログラミングでエラーが出たら|原因を切り分ける調べ方と質問の書き方
- 美容・脱毛
化粧品の表示の読み方|無香料・薬用・オーガニックで迷わない確認順
- プログラミング
Gitの基本|変更を確認して最初のコミットを作る手順