我们讲过了,插入数据,修改数据和删除数据,你以为该讲查询数据了吗? 怎么可能,查询数据那么麻烦,老蝴蝶才不先讲呢。
这一章讲解一下 MySQL的运算符。
MySQL的运算符,与 Java, C 或者C++一样,也有一些常见的运算符。
MySQL的运算符分类:
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
相比较 Java, 少了 赋值运算符 和 ?三目运算符, instanceof 运算符等。
仍然使用 yuejl 数据库的 user 表。
一. 算法运算符
一.一 拥有运算符
结果是一个新的数值。
一.二 举例查询
1 . 可以单独在数据库中查询,不指定表。 也不用像oracle 数据库那样 用 dual 虚拟表。
select 2+7,7-2,2*7,7/2,7%2 ;
2 . 与数据库表里面的 整数型数据进行联合
如, user 表里面的 age 字段。
select age,age+2,age-2,age*2,age/2,age%2 from user;
可以发现, MySQL 会保留四位小数。 如 24/2 时是 12.0000
一.三 除0 和%0 的操作
除数不能为0. 看MySQL 如何处理的
select 2/0,2%0;
两个结果都是0. 但注意,有警告,虽然不报错。
1 row in set, 2 warnings (0.00 sec)
二. 比较运算符
二.一 拥有运算符
二.二 举例查询
二.二.一 = 号 比较, 返回值为 0(假) 1(真)
select 2=7,2=2,'yuezl'='yuezl','2'=2,(2+7)=(5+4),2=null,null=null;
前两个 2=7,2=2 是普通的数字比较。 第三个 ‘yuezl’=‘yuezl’ 是字符串的比较。
‘2’=2 是字符串与数字的比较, 会先将字符串转换成数字,再进行比较。
(2+7)=(5+4) 是表达式比较,表达式结果相同,为真。
2=null 返回的是null
null=null, 返回的是 null, 当与 null进行比较时,无论是什么,都返回 null.
非数字型字符串也可以与数字进行= 号, 一律返回 假 (0)
select 97='a';
二.二.二 <=> 号比较。 返回值为 0(假) 1(真)
这个叫 安全等, 是对 =的加强版。 加强的是什么呢, 加强的是 null 值。 当左右两个比较值没有一个值为null时,那么 <=> 就等于 ‘=’ 号。 如果有 null值,那么就不一样了。
select 2<=>null,null<=>7,null<=>null;
两个均为null时,不返回 null,而是返回 1(真)。 只有一个为null时,那么返回 0 (假)
二.二.三 < 号 返回值为 0(假) 1(真)
select 2<7,2.500<7,'yuezl'<'abc',null<null;
字符串比较时,按照 ASCII 码进行比较, 与java中的字符串比较一致。
null与null 比较时,返回 null.
非数字型字符串也可以与 数字进行比较, 会先将字符串通过ASCII 码 转换成数字,然后再进行比较。
select 98>'a',98>'abc',95<'a',95<'abc';
但看见没有,有警告。 所以,最好不要这么比较。 接下来,也都正常的进行比较。
二.二.四 > 号。 返回值为 0(假) 1(真)
select 7>2,(3+5)>(2+1),'bc'>'ac',null>null;
二.二.五 <>号|!= 返回值为 0(假) 1(真)
不等于号, 用 <> 或者 != 均可以。 但建议使用 <> 号。
select 7<>2,7!=2,'yuejl'<>'yuejl','yuejl'!='good',(3+4)<>(2+4),null <> null;