mysql查询空值和null_MySQL数据运算

数据查询不只是简单地返回数据库中存储的数据,还要根据业务需求对数据进行运算和筛选,以及确定以什么样的形式显示查询结果。

计算字段

通常情况下数据库中的原始数据并不是我们所需要的,一般需要我们在查询数据的同时对数据进行运算和转换。语法

select <表达式1>[,<表达式2>...<表达式n>] from <表名>;

示例:将每位员工的底薪增加500元

mysql> select empno,ename,sal,sal+500 from emp;
+-------+--------+------+---------+
| empno | ename  | sal  | sal+500 |
+-------+--------+------+---------+
|  7369 | smith  |  800 |    1300 |
|  7499 | allen  | 1600 |    2100 |
|  7521 | ward   | 1250 |    1750 |
|  7566 | jones  | 2975 |    3475 |
|  7654 | martin | 1250 |    1750 |
|  7698 | blake  | 2850 |    3350 |
|  7782 | clark  | 2450 |    2950 |
|  7788 | scott  | 3000 |    3500 |
|  7839 | king   | 5000 |    5500 |
|  7844 | turner | 1500 |    2000 |
|  7876 | adams  | 1100 |    1600 |
|  7900 | james  |  950 |    1450 |
|  7902 | ford   | 3000 |    3500 |
|  7934 | miller | 1300 |    1800 |
+-------+--------+------+---------+

运算符

在MySQL中使用运算符进行运算,MySQL支持四种运算符,分别是算术运算符、比较运算符、逻辑运算符、位运算符。

算术运算符

SQL中最基本的运算符,对数值型数据执行算术运算。

7b7d13b016a0cffa5aab9d238b73b015.png

比较运算符

SQL中最常用的运算符,用于比较或判断。

81bb83caa7959f69a6efe50eac15c0cb.png

等于运算符“=”

等号“=”用来判断数字、字符串和表达式是否相等。如果相等,返回值为 1,否则返回值为 0。

  • 若有一个或两个参数为NULL,则比较运算的结果为NULL。
  • 若一个字符串和数字进行相等判断,则 MySQL 可以自动将字符串转换成数字。

安全等于运算符“<=>”

用于比较两个表达式的值。当两个表达式彼此相等或都等于空值时,比较结果为1;若其中一个是空值或者都是非空值但不相等时,则为0,不会出现NULL 的情况。

不等于运算符“<>”或者“!=”

用于数字、字符串、表达式不相等的判断。如果不相等,返回值为1;否则返回值为0,不能用于判断空值(NULL)。

IS NULL(或者 ISNULL)

用于检验一个值是否为NULL,如果为NULL,返回值为1;否则返回值为0。

IS NOT NULL

用于检验一个值是否为非NULL,如果为非NULL,返回值为1;否则返回值为0。

BETWWEN AND

语法:

<表达式> BETWEEN <最小值> AND <最大值>

若<表达式>大于或等于<最小值>,且小于或等于<最大值>,则 BETWEEN 的返回值为 1;否则返回值为 0。

LEAST

语法

LEAST(<值1>,<值2>,…,<值n>)

存在两个或多个参数的情况下,返回最小值。若任意一个自变量为 NULL,则 LEAST() 的返回值为 NULL。

GREATEST

语法

GREATEST (<值1>,<值2>,…,<值n>)

存在两个或多个参数的情况下,返回最大值。若任意一个自变量为 NULL,则 GREATEST() 的返回值为 NULL。

IN

用来判断操作数是否为 IN 列表中的一个值。如果是,返回值为 1;否则返回值为 0,不能用于判断空值(NULL)。

NOT IN

用来判断表达式是否为 IN 列表中的一个值。如果不是,返回值为 1;否则返回值为 0,不能用于判断空值(NULL)。

逻辑运算符

在SQL中,所有逻辑运算符求值结果均为1(TRUE)、0(FALSE)和 NULL。

469e467a5bee17051fe66e543460145a.png

NOT 或者 !

当操作数为 0 时,返回值为 1;当操作数为非零值时,返回值为 0;当操作数为 NULL 时,返回值为 NULL。

AND 或者 &&

当所有操作数均为非零值并且不为 NULL 时,返回值为 1;当一个或多个操作数为 0 时,返回值为 0;其余情况返回值为 NULL。

OR 或者 ||

当两个操作数均为非 NULL 值且任意一个操作数为非零值时,结果为 1,否则结果为 0;当有一个操作数为 NULL 且另一个操作数为非零值时,结果为 1,否则结果为 NULL;当两个操作数均为 NULL 时,所得结果为 NULL。

XOR

当任意一个操作数为 NULL 时,返回值为 NULL;对于非 NULL 的操作数,若两个操作数都不是 0 或者都是 0 值,则返回结果为 0;若一个为 0,另一个不为非 0,则返回结果为 1。

位运算符

用来对二进制字节中的位进行移位或者测试。

b174df6ee34a5e00072625963fbd630e.png

位或运算符“|”

将参与运算的两个数据按对应的二进制数逐位进行逻辑或运算。若对应的二进制位有一个或两个为 1,则该位的运算结果为 1,否则为 0。

位与运算符“&”

将参与运算的两个数据按对应的二进制数逐位进行逻辑与运算。若对应的二进制位都为 1,则该位的运算结果为 1,否则为 0。

位异或运算符“^”

将参与运算的两个数据按对应的二进制数逐位进行逻辑异或运算。对应的二进制位不同时,对应位的结果才为 1。如果两个对应位都为 0 或者都为 1,则对应位的结果为 0。

位左移运算符“<<”

使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐。

语法:

表达式<<n
  • n 指定值要移位的位数

位右移运算符“>>”

使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边高位的数值将被移出并丢弃,左边低位空出的位置用 0 补齐。语法

表达式>>n
  • n 指定值要移位的位数

位取反运算符“~”

将参与运算的数据按对应的二进制数逐位反转,即 1 取反后变 0,0 取反后变为 1。

运算符的优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值