MYSQL学习_逻辑运算符
参考MICK的SQL基础教程,进行SQL的基础学习。
NOT运算符
Product表
选取出销售单价大于等于1000日元的记录
SELECT
product_name,
product_type,
sale_price
FROM
product
WHERE
sale_price >= 1000;
输出:
查询条件中添加NOT运算符
SELECT
product_name,
product_type,
sale_price
FROM
product
WHERE
NOT sale_price >= 1000;
输出:
可以看出,WHERE 子句指定的查询条件(sale_price < 1000)
是等价的。
AND运算符和OR运算符
AND 运算符优先于 OR运算符
SELECT
product_name,
product_type,
regist_data
FROM
Product
WHERE
product_type = '办公用品'
AND regist_data = '2009-09-11'
OR regist_data = '2009-09-20';
输出:
SELECT
product_name,
product_type,
regist_data
FROM
Product
WHERE
product_type = '办公用品'
AND (
regist_data = '2009-09-11'
OR regist_data = '2009-09-20'
);
真值表
AND
P | Q | P AND Q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
OR
P | Q | P OR Q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
NOT
P | NOT P |
---|---|
真 | 假 |
假 | 真 |
不确定(UNKNOWN)处理
P | Q | P AND Q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
真 | 不确定 | 不确定 |
假 | 真 | 假 |
假 | 假 | 假 |
假 | 不确定 | 假 |
不确定 | 真 | 不确定 |
不确定 | 假 | 假 |
不确定 | 不确定 | 不确定 |
OR
P | Q | P OR Q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
真 | 不确定 | 真 |
假 | 真 | |
假 | 假 | 假 |
假 | 不确定 | 不确定 |
不确定 | 真 | 真 |
不确定 | 假 | 不确定 |
不确定 | 不确定 | 不确定 |
注:Product表中设置NOT NULL约束的原因:如果要考虑 NULL 的话就会像以上 那样增加为 3×3=9 行,看起来也变得更加繁琐,考虑 NULL 时的条件判断也会变得异常复杂,这与我们希望的结果大相径庭。因此,数据库领域的有识之士们达成了“尽量不使用 NULL的共识。