SELECT文で複合条件で行を抽出する(AND,OR,NOT)
スポンサードリンク
いろいろな条件を組み合わせて抽出をおこなう場合は、論理演算子を使用してWHERE句を記述する。SQLで使用できる論理演算子は次のとおりである。
それぞれの論理演算子を組み合わせて使用することも可能である。論理演算子を組み合わせて使用する場合は、演算の優先順位を考慮しなくてはならない。優先順位はNOT、AND、ORの順である。
論理演算子 | 論理演算 | 意 味 |
---|---|---|
AND | 論理積 | すべての条件を満足している(かつ) |
OR | 論理和 | いずれかの条件を満足している(または) |
NOT | 否定 | 条件の否定(〜でない) |
演算の優先順位
NOT → AND → OR
もし、優先順位を変更したい場合は( )を使って優先順位を変える。
《例題1》
学籍表から、性別が「男」でかつ学科が「情報」の氏名、学科、年齢と性別を表示する。
学籍表
SELECT文
SELECT 氏名,学科,年齢,性別
FROM 学籍表
WHERE 性別='男' AND 学科='情報' ← 性別が'男'でかつ学科が'情報'
− 実行結果 −
性別が「男」でかつ学科が「情報」の氏名、学科、年齢と性別が表示されている
《例題2》
学籍表から、性別が「女」または学科が「公務員」の氏名、学科、年齢と性別を表示する。
SELECT文
SELECT 氏名,学科,年齢,性別
FROM 学籍表
WHERE 性別='女' OR 学科='公務員' ← 性別が'女'または学科が'公務員'
− 実行結果 −
性別が「女」または学科が「公務員」の氏名、学科、年齢と性別が表示されている。
スポンサードリンク
《例題3》
学籍表から、学科が「公務員」でない氏名と学科を表示する。
SELECT文
SELECT 氏名,学科
FROM 学籍表
WHERE 学科NOT='公務員' ← 学科が'公務員'でない
− 実行結果 −
学科が「公務員」でない氏名と学科が表示されている。
《例題4》
学籍表から、性別が「女」または、学科が「公務員」かつ年齢が20歳より大きい氏名、性別、学科、年齢を表示する。
SELECT文
SELECT 氏名,性別,学科,年齢
FROM 学籍表
WHERE (性別='女' OR 学科='公務員') AND 年齢 > 20
− 実行結果 −
条件が複雑なときは、ANDを1つの区切りとして分けて考えると分かりやすい。まず、()内の条件式である性別が「女」または学科が「公務員」であるものをさがす。次にその中から年齢が20歳より大きいものをさがす。
Point 複雑な条件式
複雑な条件式は、ANDを1つの区切りとして分けて考える