SELECT文で複合条件で行を抽出する(AND,OR,NOT)

スポンサードリンク

いろいろな条件を組み合わせて抽出をおこなう場合は、論理演算子を使用してWHERE句を記述する。SQLで使用できる論理演算子は次のとおりである。

それぞれの論理演算子を組み合わせて使用することも可能である。論理演算子を組み合わせて使用する場合は、演算の優先順位を考慮しなくてはならない。優先順位はNOT、AND、ORの順である。

SQLで使用できる論理演算子
論理演算子論理演算意 味
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つの区切りとして分けて考える