SELECT文の基本 — データを取り出す
SQLのSELECT文で、テーブルから必要な列・行を取り出す方法を、WHERE・ORDER BY・LIMIT とあわせて基礎から解説します。
SQL(Structured Query Language)は、リレーショナルデータベースのデータを操作するための言語です。その中でも最初に覚えるのが、データを取り出すための SELECT 文です。このガイドでは、SELECT の基本形から、行を絞り込む WHERE、並べ替える ORDER BY、件数を制限する LIMIT までを順に見ていきます。
テーブルとは
リレーショナルデータベースでは、データを「表(テーブル)」の形で持ちます。表は「列(カラム)」と「行(レコード)」でできています。たとえば社員を管理する employees テーブルは、次のような形をしています。
| id | name | dept | salary |
|---|---|---|---|
| 1 | Alice | Sales | 500 |
| 2 | Bob | Dev | 600 |
| 3 | Carol | Dev | 550 |
- 列:
id,name,dept,salaryのように、そのデータが持つ項目 - 行:1人分の社員データ(1レコード)
SELECT 文は、この表から「どの列を」「どの行を」「どんな順で」取り出すかを指定するものだと考えると分かりやすいです。
SELECT の基本形
もっとも基本的な形は次のとおりです。
SELECT 列名, 列名, ...
FROM テーブル名;たとえば employees テーブルから、名前と給料の列だけを取り出すには次のように書きます。
SELECT name, salary
FROM employees;すべての列を取り出したいときは、列名の代わりに *(アスタリスク)が使えます。
SELECT *
FROM employees;ただし実務では、必要な列だけを明示的に書くのが基本です。* は「どの列が返るか」がクエリを見ただけでは分からず、テーブル構造が変わると結果も変わってしまうためです。
WHERE で行を絞り込む
すべての行ではなく、条件に合う行だけが欲しいときは WHERE を使います。
SELECT name, salary
FROM employees
WHERE dept = 'Dev';これは「dept が 'Dev' である行だけ」を取り出します。文字列はシングルクォート '...' で囲むことに注意してください(ダブルクォートは別の意味になります)。
比較には次のような演算子が使えます。
| 演算子 | 意味 | 例 |
|---|---|---|
= | 等しい | dept = 'Dev' |
<> | 等しくない | dept <> 'Dev' |
> >= | より大きい・以上 | salary >= 500 |
< <= | より小さい・以下 | salary < 600 |
AND OR | 条件の組み合わせ | dept = 'Dev' AND salary >= 550 |
BETWEEN | 範囲 | salary BETWEEN 500 AND 600 |
IN | いずれかに一致 | dept IN ('Dev', 'Sales') |
複数の条件を組み合わせるときは、AND と OR の優先順位に注意し、意図が曖昧になる場合は括弧で明示しましょう。
SELECT name
FROM employees
WHERE (dept = 'Dev' OR dept = 'Sales') AND salary >= 550;ORDER BY で並べ替える
取り出した結果を並べ替えるには ORDER BY を使います。既定は昇順(小さい順)で、DESC を付けると降順(大きい順)になります。
SELECT name, salary
FROM employees
ORDER BY salary DESC;これは給料の高い順に社員を並べます。複数の列を指定すると、先の列で並べ、同じ値のときは次の列で並べ替えます。
SELECT name, dept, salary
FROM employees
ORDER BY dept ASC, salary DESC;LIMIT で件数を制限する
「上位3件だけ」のように件数を絞りたいときは LIMIT を使います。
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 3;ORDER BY と組み合わせることで、「給料が高い上位3名」といった問い合わせができます。LIMIT だけを使うと、並び順が保証されないまま先頭から数件が返るので、上位◯件を出すときは必ず ORDER BY とセットで使うのが基本です。
まとめ
SELECT 文は、次の順で組み立てると考えると整理しやすいです。
SELECT… どの列を取り出すかFROM… どのテーブルからWHERE… どの行に絞り込むかORDER BY… どんな順で並べるかLIMIT… 何件まで出すか
まずはこの5つを押さえれば、日常的なデータ取り出しの多くはカバーできます。実際に手を動かして覚えるのが一番の近道です。次のステップとして、ブラウザ上で SQL を書いて自動採点できる「SELECT の基本」カテゴリの問題に挑戦してみてください。