SELECT文の基本 — データを取り出す

SQLのSELECT文で、テーブルから必要な列・行を取り出す方法を、WHERE・ORDER BY・LIMIT とあわせて基礎から解説します。

SQL(Structured Query Language)は、リレーショナルデータベースのデータを操作するための言語です。その中でも最初に覚えるのが、データを取り出すための SELECT 文です。このガイドでは、SELECT の基本形から、行を絞り込む WHERE、並べ替える ORDER BY、件数を制限する LIMIT までを順に見ていきます。

テーブルとは

リレーショナルデータベースでは、データを「表(テーブル)」の形で持ちます。表は「列(カラム)」と「行(レコード)」でできています。たとえば社員を管理する employees テーブルは、次のような形をしています。

idnamedeptsalary
1AliceSales500
2BobDev600
3CarolDev550
  • id, name, dept, salary のように、そのデータが持つ項目
  • :1人分の社員データ(1レコード)

SELECT 文は、この表から「どの列を」「どの行を」「どんな順で」取り出すかを指定するものだと考えると分かりやすいです。

SELECT の基本形

もっとも基本的な形は次のとおりです。

query.sql
SELECT , , ...
FROM ;

たとえば employees テーブルから、名前と給料の列だけを取り出すには次のように書きます。

query.sql
SELECT name, salary
FROM employees;

すべての列を取り出したいときは、列名の代わりに *(アスタリスク)が使えます。

query.sql
SELECT *
FROM employees;

ただし実務では、必要な列だけを明示的に書くのが基本です。* は「どの列が返るか」がクエリを見ただけでは分からず、テーブル構造が変わると結果も変わってしまうためです。

WHERE で行を絞り込む

すべての行ではなく、条件に合う行だけが欲しいときは WHERE を使います。

query.sql
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')

複数の条件を組み合わせるときは、ANDOR の優先順位に注意し、意図が曖昧になる場合は括弧で明示しましょう。

query.sql
SELECT name
FROM employees
WHERE (dept = 'Dev' OR dept = 'Sales') AND salary >= 550;

ORDER BY で並べ替える

取り出した結果を並べ替えるには ORDER BY を使います。既定は昇順(小さい順)で、DESC を付けると降順(大きい順)になります。

query.sql
SELECT name, salary
FROM employees
ORDER BY salary DESC;

これは給料の高い順に社員を並べます。複数の列を指定すると、先の列で並べ、同じ値のときは次の列で並べ替えます。

query.sql
SELECT name, dept, salary
FROM employees
ORDER BY dept ASC, salary DESC;

LIMIT で件数を制限する

「上位3件だけ」のように件数を絞りたいときは LIMIT を使います。

query.sql
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 3;

ORDER BY と組み合わせることで、「給料が高い上位3名」といった問い合わせができます。LIMIT だけを使うと、並び順が保証されないまま先頭から数件が返るので、上位◯件を出すときは必ず ORDER BY とセットで使うのが基本です。

まとめ

SELECT 文は、次の順で組み立てると考えると整理しやすいです。

  1. SELECT … どのを取り出すか
  2. FROM … どのテーブルから
  3. WHERE … どのに絞り込むか
  4. ORDER BY … どんなで並べるか
  5. LIMIT … 何まで出すか

まずはこの5つを押さえれば、日常的なデータ取り出しの多くはカバーできます。実際に手を動かして覚えるのが一番の近道です。次のステップとして、ブラウザ上で SQL を書いて自動採点できる「SELECT の基本」カテゴリの問題に挑戦してみてください。

手を動かして確認しましょう「SELECT の基本」の演習問題で、実際に SQL を書いて自動採点できます。
問題一覧へ →