本文根据《SQL进阶教程》([日]MICK 吴炎昌/译)所写笔记。
排中律不成立
排中律就是指不认可中间状态,对命题真伪的判断黑白分明。
首先看一个排中律不成立的例子,如果排中律成立,那么下面的查询结果应该能选出所有行。
-- 我们首先创建一个表
CREATE TABLE Students
(name VARCHAR(16) PRIMARY KEY,
age INTEGER );
INSERT INTO Students VALUES('布朗', 22);
INSERT INTO Students VALUES('拉里', 19);
INSERT INTO Students VALUES('约翰', NULL);
INSERT INTO Students VALUES('伯杰', 21);
-- 查询年龄是20岁或者不是20岁的学生
mysql> select * from students
-> where age=20 or age<>20;
+--------+------+
| name | age |
+--------+------+
| 伯杰 | 21 |
| 布朗 | 22 |
| 拉里 | 19 |
+--------+------+
-- 若想将所有结果都查询出来,应该使用以下语句
mysql> select * from students
-> where age=20
-> or age<>20
-> or age is null;
+--------+------+
| name | age |
+--------+------+
| 伯杰 | 21 |
| 布朗 | 2