2.2--查询基础——算术运算符和比较运算符

算术运算符和比较运算符

一、重点内容总结

1、运算符就是对其两边的列或者值进行运算(计算或者比较大小等)的符号

2、使用算术运算符可以进行四则运算

3、括号可以提升运算的优先顺序(优先进行运算)

4、包含NULL的运算,其结果也是NULL

5、比较运算符可以用来判断列或者值是否相等,还可以用来比较大小

6、判断是否为NULL,需要使用IS NULL或者IS NOT NULL运算符

二、算术运算符

SQL 语句中可以使用计算表达式,将各个商品单价的2 倍(sale_price 的2 倍)以"sale_price_x2" 列的形式读取出来

SELECT shopping_name, sale_price,
sale_price * 2 AS "sale_price_x2"
FROM shopping;

输出:

SQL 语句中可以使用的四则运算的主要运算符如图所示:

四则运算所使用的运算符(+、-、*、/)称为算术运算符。运算符就是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号。加法运算符(+)前后如果是数字或者数字类型的列名的话,就会返回加法运算后的结果。SQL 中除了算术运算符之外还有其他各种各样的运算符。

SQL 中也可以像平常的运算表达式那样使用括号()。括号中运算表达式的优先级会得到提升,优先进行运算。例如在运算表达式
(1 + 2) * 3 中,会先计算1 + 2 的值,然后再对其结果进行* 3 运算。

注意NULL

A 、5 + NULL
B 、10 - NULL
C 、1 * NULL
D 、4 / NULL
E 、NULL / 9
F 、NULL / 0

以上结果都是NULL,所有包含NULL 的计算,结果肯定是NULL,类似5/0 这样除数为0 的话会发生错误,只有NULL 除以0 时不会发生错误,并且结果还是NULL

二、比较运算符

使用符号= 选取出销售单价(sale_price)为500 (数字500)的记录:

SELECT shopping_name, shopping_type
FROM shopping
WHERE sale_price = 500;

输出:

像符号= 这样用来比较其两边的列或者值的符号称为比较运算符,符号= 就是比较运算符,

在WHERE 子句中通过使用比较运算符可以组合出各种各样的条件表达式
使用“不等于”这样代表否定含义的比较运算符<>选取出sale_price 列的值不为500 的记录

SELECT shopping_name, shopping_type
FROM shopping
WHERE sale_price <> 500;

输出:

除了等于和不等于之外,还有进行大小比较的运算符

选取出销售单价大于等于1000的记录:

SELECT shopping_name, shopping_type, sale_price
FROM shopping
WHERE sale_price >= 1000;

输出:

在使用大于等于(>=)或者小于等于(<=)作为查询条件时,一定要注意不等号(<、>)和等号(=)的位置不能颠倒。一定要让不等号在左,等号在右。如果写成(=<)或者(=>)就会出错

还可以使用比较运算符对计算结果进行比较;

WHERE子句的条件表达式中也可以使用计算表达式:

SELECT shopping_name, sale_price, purchase_price
FROM shopping
WHERE sale_price - purchase_price >= 500;

输出:

三、对字符串使用不等号时的注意事项

虽然该表中存储的都是数字,但chr 是字符串类型(CHAR 类型)的列

创建Chars表并插入数据:

-- DDL :创建表
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr));
-- DML :插入数据
BEGIN TRANSACTION; ——————————①
INSERT INTO Chars VALUES ('1');
INSERT INTO Chars VALUES ('2');
INSERT INTO Chars VALUES ('3');
INSERT INTO Chars VALUES ('10');
INSERT INTO Chars VALUES ('11');
INSERT INTO Chars VALUES ('222');
COMMIT;

输出:

选取出大于'2'的数据的SELECT语句:

SELECT chr
FROM Chars
WHERE chr > '2';

输出:

10 和11 比2 大,所以也应该选取出来呢?之所以这样想,是因为混淆了数字和字符串,也就是说2 和'2' 并不一样

现在,chr 列被定为字符串类型,并且在对字符串类型的数据进行大小比较时,使用的是和数字比较不同的规则

典型的规则就是按照字典顺序进行比较,也就是像姓名那样,按照条目在字典中出现的顺序来进行排序

该规则最重要的一点就是,以相同字符开头的单词比不同字符开头的单词更相近

Chars 表chr 列中的数据按照字典顺序进行排序的结果如下所示:
1
10
11
2
222
3

字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆

四、不能对NULL使用比较运算符

关于比较运算符还有一点十分重要,那就是作为查询条件的列中含有NULL 的情况

选取进货单价为2800的记录:

SELECT shopping_name, purchase_price
FROM shopping
WHERE purchase_price = 2800;

输出:

选取出进货单价不是2800的记录:

SELECT shopping_name, purchase_price
FROM shopping
WHERE purchase_price <> 2800;

输出:

执行结果中并没有“叉子”和“圆珠笔”。这两条记录由于进货单价不明(NULL),因此无法判定是不是2800

SQL提供了专门用来判断是否为NULL 的 IS NULL 运算符:

选取NULL的记录:

SELECT shopping_name, purchase_price
FROM shopping
WHERE purchase_price IS NULL;

输出:

反之,希望选取不是NULL 的记录时,需要使用IS NOT NULL 运算符

SELECT shopping_name, purchase_price
FROM shopping
WHERE purchase_price IS NOT NULL;

输出:

——————————————————————————————————

内容来源---《SQL基础教程》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值