【せれくとぶん】

SELECT文 とは?

最終更新:
💡 データベースから「データを取り出す」ための基本SQL

データベースからデータを取得するためのSQL文。テーブルから必要なカラムや行を指定し、条件付きで検索・並べ替え・集計などを行う最も基本的な操作。

📌 このページのポイント
必要な列と行を選び、順番を指定 SQLSELECT name, ageFROM usersWHERE age >= 20ORDER BY age, name;usersテーブルnameage田中25鈴木15佐藤30高橋20条件で絞り、並べる結果はnameとageの列20歳以上の3行年齢、名前の順nameage高橋20田中25佐藤30元の表は変わらない
WHEREで行を絞り、SELECTで列を選ぶ。この例はORDER BYで年齢・名前の順を指定している。
ひよこ ひよこ
SELECT文の基本的な書き方を教えて!
ペンギン先生 ペンギン先生
「SELECT name, age FROM users」なら、usersテーブルからnameとageの列を取り出すよ。「WHERE age >= 20」を加えると、20歳以上の行に絞れる。「SELECT *」の星印は、取得元のすべての列を表すんだ。
ひよこ ひよこ
SELECT *はいつ使うの?
ペンギン先生 ペンギン先生
全列を確認したいときに便利だよ。アプリで必要な列が決まっているなら、列名を明示すると、不要な列を取得せず、テーブルに列が増えても結果の列をそろえやすい。使う目的に合わせて選ぼう。
ひよこ ひよこ
取得する順番や件数はどう決めるの?
ペンギン先生 ペンギン先生
「ORDER BY age, name」なら年齢順に、同じ年齢では名前順に並べるよ。ORDER BYがなければ行の順番は保証されない。PostgreSQLなどで末尾に「LIMIT 2」を加えると最大2行になる。件数制限の構文は製品ごとに異なり、毎回同じ範囲を取るなら同順位の行も区別できる並び順が必要だよ。
ひよこ ひよこ
SQLは、書いた順に実行されるの?
ペンギン先生 ペンギン先生
意味を理解するときは、取得元を決め、条件で絞り、必要なら集計し、出力する列を決めて並べる、と考えるよ。これは論理的な処理の説明で、実際の実行計画はデータベースが選ぶ。SELECTで付けた列の別名は、同じ問い合わせのWHEREでは使えない。MySQLもこの点の例外ではないんだ。
ひよこ ひよこ
DISTINCTって重複を消すんだよね?
ペンギン先生 ペンギン先生
そう、結果の行で重複する組み合わせをまとめるよ。「SELECT DISTINCT age FROM users」なら年齢の種類を取り出せる。正当な用途があるので、DISTINCTが必要だから設計ミスとは言えない。ただし、JOINの条件を誤って行が増えた場合は、その原因を調べよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SELECT文」って出てきたら「データベースから必要なデータを取り出すSQL文」と思えばだいたいOK!
📖 おまけ:英語の意味
「SELECT」 = 選択する
💬 英語の「select(選ぶ)」そのまま。テーブルから必要なデータを選んで取り出すイメージ

参考資料

← 用語集にもどる