Mysql 基础(七) 算术预算符和比较运算符
学习是劳动,是充满思想的劳动。——乌申斯基
学习重点
运算符就是对两边的列或者值进行运算(计算或者比较大小等)的符号
使用算数运算符可以进行四则运算
括号可以提升运算的优先顺序(优先进行运算)
包含 NULL 的运算其结果也是 NULL
比较运算符可以用来判断列或者值是否相等,还可以用来比较大小
判断是否为 NULL,需要使用 IS NULL 或者 IS NOT NULL 运算符
算术运算符
- SQL 语句中使用计算表达式,比如上个单元的例子 把 sale_price 的单价 2 倍以”sale_price_x2”列的形式读取出来
SELECT product_name,sale_price,sale_price*2 AS '翻倍价格' from Product
- 最后结果
product_name | sale_price | 翻倍价格 |
---|---|---|
T 恤衫 | 1000 | 2000 |
打孔器 | 500 | 1000 |
运动 T 恤 | 4000 | 8000 |
菜刀 | 3000 | 6000 |
高压锅 | 6800 | 13600 |
叉子 | 500 | 1000 |
擦菜板 | 880 | 1760 |
圆珠笔 | 100 | 200 |
四则运算是以+,-,x,/为基准 SQL 除了算术运算符之外还有其他各种各样的运算符
SELECT 子句中也可以使用常数或者表达式
当然 SQL 中也可以像平常的运算表达式那样使用括号(),括号中的运算表达式的优先级会得到提升,优先运算例如(1+2)3 会先计算 1+2 的值然后在对其结果3 运算
括号的使用并不仅仅局限于四则运算,还可以用在 SQL 语句的任何表达式
需要注意 NULL
- SQL 语句进行运算的时候,需要特别注意含有 NULL 的运算。
5+NULL
10-NULL
1*NULL
4/NULL
NULL/9
NULL/0
# 这样所有的结果都是NULL
包含 NULL 的计算,结果肯定都是 NULL
比较运算符
,<, = ,<> 表示不等于,>=,<=
SELECT product_name,product_type from Product WHERE sale_price>50
最后结果
product_name | product_type |
---|---|
T 恤衫 | 衣服 |
打孔器 | 办公用品 |
运动 T 恤 | 衣服 |
菜刀 | 厨房用具 |
高压锅 | 厨房用具 |
叉子 | 厨房用具 |
擦菜板 | 厨房用具 |
圆珠笔 | 办公用品 |
像符号=这样用来比较其两边的列或者值的符号称为比较运算符.符号=就是比较运算符,在 where 子句中通过使用比较运算符可以组合各种条件表达式
SELECT product_name,product_type from Product WHERE sale_price <> 50
最后结果
product_name | product_type |
---|---|
T 恤衫 | 衣服 |
打孔器 | 办公用品 |
运动 T 恤 | 衣服 |
菜刀 | 厨房用具 |
高压锅 | 厨房用具 |
叉子 | 厨房用具 |
擦菜板 | 厨房用具 |
圆珠笔 | 办公用品 |
SELECT product_name,product_type from Product WHERE regist_date < '2009-09-27'
最后结果
product_name | product_type |
---|---|
T 恤衫 | 衣服 |
打孔器 | 办公用品 |
菜刀 | 厨房用具 |
高压锅 | 厨房用具 |
叉子 | 厨房用具 |
擦菜板 | 厨房用具 |
- 也可以使用计算表达式
SELECT product_name,sale_price,purchase_price from Product WHERE sale_price - purchase_price >= 500
最后结果
product_name | sale_price | purchase_price |
---|---|---|
T 恤衫 | 1000 | 500 |
运动 T 恤衫 | 4000 | 2800 |
高压锅 | 6800 | 5000 |
对字符串使用比较运算的注意事项
- 字符串类型的数据原则上按照字典顺序进行排序,不能与数字大小顺序混淆
比如字符串要是个字符串的数字比如’10’ ‘2’ 那么它不会变成数字来比较,而是按照一定的顺序来比较
这里的’10’和’2’比较 最后的结果是’2’大
不能对 NULL 使用比较运算符
- 数据里面只要有 NULL 那么 不能使用运算符比较
SELECT product_name,purchase_price from Product WHERE purchase_price = NULL
这样最后结果一条也取不出来,即使使用<>也没有用
- 必须使用 IS NULL 或者 IS NOT NULL
SELECT product_name,purchase_price FROM Product WHERE purchase_price IS NULL
最后结果
product_name | purchase_price |
---|---|
叉子 | NULL |
圆珠笔 | NULL |
SELECT product_name,purchase_price FROM Product WHERE purchase_price IS NOT NULL
最后结果
product_name | purchase_price |
---|---|
T 恤衫 | 500 |
打孔器 | 320 |
运动 T 恤 | 2800 |
菜刀 | 2800 |
高压锅 | 5000 |
擦菜板 | 790 |
希望选取 NULL 时,必须使用 IS NULL 或者 NOT NULL