WHERE (SQL)

SQLにおけるWHERE句の詳細解説



SQLの`WHERE`句は、データベース操作において非常に重要な役割を担います。これは、データ操作言語(DML)と組み合わせて使用され、`SELECT`、`INSERT`、`UPDATE`、`DELETE`といった命令が操作する行を絞り込むために使われます。`WHERE`句を使用することで、データベース内の特定の条件を満たすデータだけを操作することが可能になり、効率的なデータ管理が実現します。

WHERE句の基本構文



`WHERE`句は、DMLステートメントの後に記述され、指定した条件に合致する行のみを対象とします。以下が基本的な構文です。

sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;


`condition`部分には、操作対象とする行を決定するための条件式を記述します。この条件式が真(true)である行のみが操作の対象となり、偽(false)または不明(NULL)である行は除外されます。

条件式の記述



条件式では、さまざまな演算子を用いてデータの比較や論理的な結合を行います。

単純な比較演算子


  • - `=`:等しい
  • - `<>`:等しくない
  • - `>`:より大きい
  • - `>=`:以上
  • - `<`:より小さい
  • - `<=`:以下

これらの演算子は、数値や文字列の比較に利用されます。

論理演算子


複数の条件を組み合わせる際には、以下の論理演算子が使用されます。

  • - `AND`:両方の条件が真である場合に真
  • - `OR`:どちらか一方の条件が真である場合に真

`AND`演算子は`OR`演算子よりも優先順位が高いため、複雑な条件式では括弧`()`を使用して評価順序を明示することが推奨されます。

その他の演算子


  • - `IN`:指定した値のリストの中に値が含まれるかを判定します。

sql
SELECT FROM mytable WHERE ename IN ('Bob', 'Alice', 'John');


上記の例では、`ename`列の値が「Bob」、「Alice」、「John」のいずれかと一致する行が抽出されます。

  • - `BETWEEN`:指定した範囲内に値が含まれるかを判定します。

sql
SELECT
FROM mytable WHERE income BETWEEN 500000 AND 1000000;


上記の例では、`income`列の値が500000以上1000000以下の行が抽出されます。

  • - `LIKE`:文字列のパターンマッチングを行います。

- `%`:0文字以上の任意の文字列と一致
- `_`:任意の1文字と一致

sql
SELECT FROM mytable WHERE item LIKE 'S%'; -- 'S'で始まる文字列
SELECT
FROM mytable WHERE item LIKE '%S'; -- 'S'で終わる文字列
SELECT FROM mytable WHERE item LIKE '%S%'; -- 'S'を含む文字列
SELECT
FROM mytable WHERE item LIKE 'A_E'; -- 'A'と'E'の間に1文字ある文字列
SELECT FROM mytable WHERE item LIKE '[A-Za-z0-9_]%'; -- 最初の文字がアルファベットか数字か'_'である文字列


  • - `IS NULL` / `IS NOT NULL`:値がNULLであるか否かを判定します。

sql
SELECT
FROM mytable WHERE mynumber IS NULL; -- mynumberがNULLの行を抽出
SELECT FROM mytable WHERE mynumber IS NOT NULL; -- mynumberがNULLでない行を抽出


WHERE句使用時の注意点



  • - `LIKE`演算子を使用する際は、インデックスが利用されない可能性があるため、パフォーマンスに注意が必要です。可能な限り、`=`や`<>`などの比較演算子を使用することが推奨されます。
  • - データベースの種類によって文字列の扱い(大文字小文字の区別など)が異なる場合があります。

実践的な例



以下に、`WHERE`句を使用した具体的なSQLの例を示します。

SELECT文での使用例


`mytable`テーブルから`mynumber`が100より大きい行を抽出する。

sql
SELECT
FROM mytable WHERE mynumber > 100;


DELETE文での使用例


`mytable`テーブルから`mynumber`がNULLであるか、100である行を削除する。

sql
DELETE FROM mytable WHERE mynumber IS NULL OR mynumber = 100;


複数の条件の組み合わせ


`mytable`テーブルから`mynumber`が100より大きく、かつ`item`が「ハンマー」である行を削除する。

sql
DELETE FROM mytable WHERE mynumber > 100 AND item = 'ハンマー';


まとめ



`WHERE`句は、SQLにおいてデータを効率的に操作するための基本であり、非常に強力なツールです。さまざまな演算子や条件式を組み合わせることで、複雑なデータ抽出や更新を柔軟に行うことができます。この記事で解説した内容を参考に、`WHERE`句を使いこなして、より効果的なデータベース操作を目指しましょう。

参照



  • - PSOUG Home Puget Sound Oracle Users Group WHERE句を用いたSELECT文の例が提示されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。