SQLの比較演算子について、基本的な使い方から実践的な応用まで、具体的なコード例を交えて解説します。データベース操作の効率を上げるには、比較演算子をどのように活用すればよいのでしょうか?
SQLのNOT演算子による論理否定の基本と実践的な使い方
SQLのNOT演算子を使った論理否定について、基礎から実践的な使い方まで詳しく解説します。データベース操作で避けて通れないNOT演算子、その真の実力を知っていますか?
NOT演算子は、WHERE句で指定した条件を否定するために使用される論理演算子です。基本的な構文は以下のようになります:
SELECT カラム名
FROM テーブル名
WHERE NOT 条件式
具体例として、社員テーブルから特定の部署以外の社員を抽出する場合:
SELECT 社員番号, 氏名
FROM 社員テーブル
WHERE NOT 部署 = '営業部'
NOT演算子は、BETWEEN、IN、LIKE、IS NULLなどの演算子と組み合わせて使用することができます。以下に代表的な例を示します:
-- NOT BETWEENの例
SELECT * FROM 商品
WHERE NOT price BETWEEN 1000 AND 5000
-- NOT INの例
SELECT * FROM 顧客
WHERE NOT 都道府県 IN ('東京', '大阪', '福岡')
-- NOT LIKEの例
SELECT * FROM 商品
WHERE NOT 商品名 LIKE '%セール%'
NOT演算子を使用する際、NULLの扱いには特別な注意が必要です。NULLは真偽値の判定において特殊な扱いとなります:
-- NULLを含むデータの処理例
SELECT *
FROM 顧客データ
WHERE NOT (電話番号 IS NULL OR メールアドレス IS NULL)
SQL実行時の演算子の優先順位において、NOTは比較的高い優先順位を持っています。パフォーマンスを最適化するためには、以下の点に注意が必要です:
-- 最適化された複合条件の例
SELECT *
FROM 注文データ
WHERE NOT (
注文状態 = 'キャンセル'
AND 注文日 < CURRENT_DATE - 30
)
ビジネスシーンで頻出する具体的な応用例を紹介します:
-- 未対応の問い合わせを抽出
SELECT 問い合わせID, 内容
FROM お問い合わせ
WHERE NOT EXISTS (
SELECT 1
FROM 対応履歴
WHERE お問い合わせ.問い合わせID = 対応履歴.問い合わせID
)
-- 在庫切れでない商品を検索
SELECT 商品ID, 商品名, 在庫数
FROM 商品マスタ
WHERE NOT 在庫数 <= 0
ORDER BY 在庫数