运算符 | 作用 |
---|---|
+ | 求两个数的和 |
- | 求两个数的差 |
* | 求两个数的乘 |
/ | 求两个数的除法,结果是小数 |
% | 求模运算 |
注意:
0
来处理NULL
参与的运算结果都是NULL
sqlSELECT 1+2,'a'+1,2-1,2*2,'ab'*'ac',4/2,8%3,8+NULL
FROM DUAL
DUAL
表示伪表
= | 等于 |
---|---|
<=> | 安全等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
对于
=
,如果比较的是字符串,那么字符串是一个一个字符进行比较的,比较的是它们的ANSI编码。 对于<=>
主要用来解决和NULL
比较的问题,如果用=
,只要有NULL
,那么比较俩个NULL
的结果就是NULL
,如果用<=>
,其结果就是true
。
sqlSELECT NULL=NULL,NULL<=>NULL
FROM DUAL
IS NULL | 是否为空 |
---|---|
IS NOT NULL | 是否不为空 |
LEAST | 返回最小值 |
GREATEST | 返回最大值 |
BETWEEN AND | 两者之间的范围,左闭右闭 |
IN | 判断值是否在表格内 |
LIKE | 模糊匹配 |
正则表达式,暂时不写 |
例:
sqlSELECT NULL IS NULL
FROM DUAL
sqlSELECT LEAST('a','b','p','z'),GREATEST('a','b','p','z'),
LEAST('a','b','p',3)
FROM DUAL
有字符和数字一起参与运算,那么字符当成0处理。
sqlSELECT salary
FROM employees
WHERE salary BETWEEN 3300 AND 6000
sqlSELECT last_name, salary
FROM employees
WHERE salary IN (3000,3300,4000);
sqlSELECT last_name
FROM employees
#查询last_name含有a的字符串
WHERE last_name LIKE '%a%'
#查询第一个字符是a的
WHERE last_name LIKE 'a%'
#查询最后一个字符是a的
WHERE last_name LIKE '%a'
#查询第二个字符是a的
WHERE last_name LIKE '_a%'
#查询第二个字符是_的
WHERE last_name LIKE '_\_%'
上面_
是匹配任意一个字符,而用\
进行转义它,就是匹配字符为_
的字符。
NOT或! | 逻辑非 |
---|---|
AND或&& | 逻辑与 |
OR或|| | 逻辑或 |
XOR | 逻辑异或 |
对于逻辑异或(XOR):两边只能满足一边 例:A XOR B:它求的就是满足A成立的且B不成立,或者是满足B成立的且A不成立
sqlSELECT department_id ,salary
FROM employees
WHERE department_id=100 XOR salary=3000;
从上面的图片中可以看出满足100就不能满足3000、满足3000就不能满足100
和c语言的一样。
& | 按位与 |
---|---|
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
>> | 按位右移 |
<< | 按位左移 |