SQL
 Computer >> コンピューター >  >> プログラミング >> SQL

SQLのWHERE句とは?基本構文からSELECT・UPDATE・DELETEでの使い方まで徹底解説

SQLのWHERE句は、コマンドが返す、または操作対象とするレコードの数を絞り込むために使われる句です。SELECTUPDATEDELETEなどのステートメントと組み合わせて使用し、ANDキーワードを使えば、複数の条件を満たすレコードだけを対象にすることもできます。

例えば、「営業マネージャーの社員一覧を取得したい」「特定の日付以降に入社した従業員を調べたい」といった場面では、クエリの結果を特定の条件でフィルタリングする必要があります。

このようなときに活躍するのがWHERE句です。本記事では、WHERE句を使ってSQLでレコードを絞り込む方法を、基本構文から実践的な例まで詳しく解説します。

SQLのWHERE句とは

SQLのWHERE句は、特定の条件(または複数の条件)を満たすレコードのみを抽出するための句です。SQLステートメント内では、FROM句の後に記述します。

基本的な構文は以下の通りです。

SELECT * FROM table WHERE column comparison value;

SELECT * FROM table」は標準的なSELECTクエリです。ここにWHERE句を追加することで、クエリが返すレコードを制限できます。「column」は条件を適用する列名、「comparison」と「value」はそれぞれ比較演算子と比較対象の値を表します。

代表的な比較の例は以下の通りです。

WHERE name = 'Jeff';
WHERE age > 15;
WHERE salary < 50000;

また、SQLのANDキーワードを使えば、複数の条件を組み合わせることも可能です。

SELECT * FROM table WHERE column1 comparison1 value1 AND column2 comparison2 value2;

それでは、実際の例を見ていきましょう。

WHERE句の使用例①:SELECT文でレコードを絞り込む

ここでは、「役職がシニアセールスアソシエイトである社員の一覧」を取得したいとします。この場合、次のようなSQLのSELECT文を使用します。

SELECT name, title FROM employees WHERE title = 'Senior Sales Associate';

このクエリを実行すると、条件を満たす以下の行が返されます。

 name  |         title         
-------+-----------------------
 Geoff | Senior Sales Associate
 Adam  | Senior Sales Associate
(2 rows)

結果には、役職が「Senior Sales Associate」である社員だけが表示されています。

次にもう一つ例を挙げます。「年収が35,000ドルを超えていて、かつ名前がAdamではない社員の一覧」を取得したい場合は、以下のように記述します。

SELECT name, salary FROM employees WHERE salary > 35000 AND name <> 'Adam';

このクエリの実行結果は以下の通りです。

 name  | salary 
-------+--------
 Geoff |  38000
 Emma  |  50000
 Jonah |  50000
 Adam  |  38000
(4 rows)

Adamは年収が35,000ドルを超えていますが、クエリ内で<>(等しくない)演算子を使って名前を除外しているため、結果セットには含まれていません。このように、ANDキーワードで複数の条件を組み合わせれば、より精密なデータ抽出が可能になります。

WHERE句の使用例②:UPDATE文とDELETE文

WHERE句は、UPDATE文やDELETE文とも組み合わせて使えます。

UPDATE文との組み合わせ

例えば、会社の再編に伴い、社員ごとの勤務地(支店名)を更新したい場合を考えてみましょう。Lukeの勤務地を「Boston」から新しいオフィスのある「Cambridge」に変更するには、次のようなSQLのUPDATE文を使用します。

UPDATE employees SET branch = 'Cambridge' WHERE name = 'Luke';

更新後にLukeの支店を確認すると、以下の結果が得られます。

 name |  branch   
------+-----------
 Luke | Cambridge
(1 row)

DELETE文との組み合わせ

同様に、WHERE句はSQLのDELETEコマンドでも使用できます。

例えば、閉鎖されたAlbany支店で働く全社員のレコードを削除したい場合は、以下のコマンドを実行します。

DELETE FROM employees WHERE branch = 'Albany';

削除後に社員一覧を取得すると、返される行数は8行ではなく6行になっています。

  name   |    branch     
---------+---------------
 Mike    | Stamford
 Hannah  | San Francisco
 Geoff   | San Francisco
 Alexis  | Boston
 Adam    | Sacramento
 Luke    | Cambridge
(6 rows)

このように、WHERE句を付け忘れるとテーブル内の全レコードが更新・削除されてしまうため、UPDATEやDELETEでWHERE句を使う際は特に注意が必要です。

WHERE句で使えるSQLの演算子一覧

WHERE句では、論理演算子を使ってレコードをフィルタリングします。最初の例では「等しい」ことを表す=演算子を使って、シニアセールスアソシエイトの名前を検索しました。

WHERE句で利用できる主な論理演算子は以下の通りです。

演算子説明使用例
=等しいWHERE name = 'Jake'
>より大きいage > 20
<より小さいage < 20
>=以上salary >= 50000
<=以下salary <= 40000
<> または !=等しくないname <> 'Adam'
LIKEパターンマッチングname LIKE 'Jo%'
INリスト内のいずれかの値と一致するか確認title IN ('Sales Associate', 'Director of Sales')
BETWEEN指定した値が範囲内にあるか確認employee_month_awards BETWEEN 1 AND 5

これらの演算子を組み合わせることで、柔軟かつ高度な条件指定ができるようになります。

まとめ

SQLのWHERE句は、コマンドの影響を受けるレコードを条件によって絞り込むための句です。SELECT文、UPDATE文、DELETE文のいずれとも組み合わせて使用でき、ANDキーワードを使えば複数の条件を指定することも可能です。なお、WHEREキーワード自体は一度書けば十分で、追加の条件はANDでつなぎます。

本記事では、WHERE句の基本構文、SELECT文でのデータ抽出、UPDATE・DELETE操作での条件指定、そして利用できる条件演算子について解説しました。

プロのSQL開発者を目指したい方は、ぜひ「SQL学習ガイド」も参考にしてください。SQLを習得するための厳選された学習リソースを多数紹介しています。

  1. SQL ServerのCOALESCE関数とは?構文と使い方を実例付きで解説

    本記事では、SQL ServerにおけるCOALESCE関数の使い方について、具体的な構文とサンプルコードを交えながら詳しく解説します。NULL値の処理に欠かせないこの関数を、わかりやすい例とともにしっかりマスターしましょう。 COALESCE関数の概要 COALESCE関数は、引数として渡された複数の式の中から、最初にNULL以外の値を持つ式を返します。すべての式がNULLだった場合は、COALESCEはNULLを返します。 複数のカラムや値の中から「NULLでない最初の値」を取得したい場合に非常に便利な関数で、データのデフォルト値設定やフォールバック処理など、実務でも広く活用されています

  2. SQL ServerのCURRENT_USERステートメントの使い方を徹底解説

    この記事では、SQL ServerでCURRENT_USERステートメントを使用する方法について、具体的な構文と実行例を交えながら詳しく解説します。現在のデータベースユーザー名を取得する仕組みを理解し、実務に活かせるようにしましょう。 説明 CURRENT_USERステートメントは、SQL Serverデータベースにおける現在のユーザー名を返す組み込み関数です。戻り値のデータ型は sysname であり、セッションの実行コンテキストに基づいたユーザー名が取得されます。たとえば、EXECUTE AS によって実行コンテキストが別のユーザーに切り替えられている場合は、そのユーザーの名前が返されます