ここまでは、テーブルに入っている行をすべて選択していました。しかし、実際には毎回すべての行を取り出したいわけではありません。むしろ「職種IDがIT_PROG」や「給与額が300,000円以上」など、何らかの条件に合う行だけを選択したい、というケースがほとんどです。
SELECT文では、選択したい行の条件をWHERE句で指定します。WHERE句には、「ある列の値がこの文字列と等しい」「ある列の値がこの数値以上」などの条件を指定することができ、それを含むSELECT文を実行すると、その条件に合う行だけが選択されます。
- SELECT文(WHERE句含む)の基本構文
- SELECT <列名>, ……
FROM <テーブル名>
WHERE <条件式>;
選択した行からは、好きな列を出力することができます。
SELECT name, job_id
FROM Employees
WHERE job_id = 'IT_PROG';
実行結果
name | job_id
------------+---------
佐藤達弘 | IT_PROG
木村幸平 | IT_PROG
高木龍之介 | IT_PROG
(3 行)
WHERE句にある「job_id = ‘IT_PROG’」が抽出条件(検索条件)を表す式(条件式)です。「=」は両辺が等しいかどうかを比較するための記号です。
さらに、選択された行からSELECT句で指定されているname列とjob_id列を出力するという実行結果になります。つまり、WHERE句で指定した条件に合う行をまず選択し、その後にSELECT句で指定された列を出力します。
また、WHERE句で検索条件になっているjob_id列を出力していますが、必ずそうしなければならないというわけではありません。以下のように、job_id列を検索条件にのみ使用し、name列のみを出力するといったことも可能です。
SELECT name FROM Employees WHERE job_id = 'IT_PROG';
実行結果
name
------------
佐藤達弘
木村幸平
高木龍之介
(3 行)
なお、SQLでは句の記述順が決まっており、勝手に変えることはできません。WHERE句は、必ずFROM句の直後に書きます。記述順を変えるとエラーとなります。
抽出条件と結合条件
WHERE句には、抽出条件と結合条件を指定できます。抽出条件とは、上記サンプルのように比較演算子を用いて、行の選択を行うための条件です。比較演算子(=, >, <, >=, <=, <>)の他に、論理演算子(AND, OR , NOT)やIN、BETWEEN、LIKE、IS NULLなどの演算子を使用して、行を絞り込むことができます。
WHERE句は、行選択のための抽出条件以外に表と表を結合するための結合条件を指定することもできます。
抽出条件で使用する各種演算子の使い方や結合条件の指定方法など、詳しくは以降のページで見ていきますので、ここではWHERE句には、抽出条件と結合条件を指定できるということを覚えておきましょう。