ANDとORの正確な理解が出来ません。。
ANDとORの正確な理解が出来ません。。
お世話になっております。
現在、翔泳社の黒本を参考書にOracle11gのSQL基礎Iの学習をしております。
1点、どうしても参考書の解説を読んでも理解できない問題がありまして、
質問いたします。
問題:次のSQL文と同じ結果になるものはどちらか選びなさい
SELECT * FROM EMP WHERE DEPTNO NOT IN (10,20);
a.SELECT * FROM EMP WHERE DEPTNO <>10 or DEPTNO <> 20;
b.SELECT * FROM EMP WHERE DEPTNO <>10 AND DEPTNO <> 20;
(正答はb.)
問題のSQL文のWHERE句は「DEPTNOが10でも20でもない物」を取ると理解しています。
そしてa.の文は「10でない、または20でない」、
b.の文は「10でない、かつ20でない」、
と理解しています。
テーブルの中にDEPTNOの値が 「5,10,15,20,25」だったとして、
問題文もa.もb.も5,15,25が取られるのではないか?
なぜb.のみが正解なのか?どうしても理解できません。
どういうレコードがあるとき、a. と b.の結果は変わるのでしょうか?
基本的な質問をしてしまいますが、宜しくお願いします。