01算数运算符
数学中我们接触过的基本运算符—加,减,乘,除(+,-,,/)乃至括号()在sql语句同样适用,并且起相同含义
例一根据公式(利润=(售价-进价)* 2+*进价)计算商品的利润
SELECT sale_price,purchase_price
sale_price-purchase_price*2+purchase_price AS price
FROM PRODUCT
ps关于product表的内容见上一篇文章
执行:
不挣钱,老板哭晕在厕所。反手给财务嘤嘤嘤~~
财务错哪了?来看看另一个财务的报表
SELECT sale_price,purchase_price
(sale_price-purchase_price*2)+purchase_price AS price
FROM PRODUCT
执行
赚钱啦,老板开心跳起广场舞
造成两次计算结果差异原因是什么呢?
sql中()可以改变优先级,同时sql算数运算符的优先级和数学中的相同----乘除高于加减,()是上帝
细心的你可能会注意到第四行利润为null,这是为啥呢?
这是因为在sql语句中null像个黑洞,所有包含null的计算,结果必为空
02比较运算符
sql语句中常使用大于等于(>=),小于等于(<=),等于(=)表达比较关系关系
note:>=和<=写成=>或者<=会报错
(小规则:和汉语上的读法顺序一致)
常见的逻辑运算符:
例二从商品中选择售价大于500的产品
SELECT product_name,purchase_price
FROM PRODUCT
WHERE sale_price>500
执行:
SELECT product_name,purchase_price
FROM PRODUCT
WHERE sale_price>'500'
想想看这两种执行代码有什么不同?
执行结果一样好像没什么不同
赐你一副眼镜
对字符串使用要注意500与‘500’含义不同
‘500’是按照字典顺序的
比如按照字典由小到大排序
1
10
11
2
20
21
说白了就是
字母顺序先后排,姓氏相同座一块
细心的你有没有注意到结果中的null呢?
在使用比较运算符时应避免出现null
对于包含null的要先进行判断
选取不是null使用 IS NOT NULL
例三选择进价不为空的商品
SELECT product_name,purchase_price
FROM PRODUCT
WHERE purchase_price IS NOT NULL
选择为空的使用IS NULL
例四选择售价为空的商品
SELECT product_name,purchase_price
FROM PRODUCT
WHERE purchase_price IS NULL