本文整理自网络,侵删。
目录
- 运用运算法有什么好处呢?
- 什么是运算符
- 算术运算符
- 举个例子
- 加法和减法运算
- 乘法、除法和求余运算
- 比较运算符
- 等于运算符(=)
- 安全等于运算符(<=>)
- 不等于运算符(<>或者!=)
- 小于等于运算符(<=)
- 小于运算符(<)
- 大于等于运算符(>=)
- 大于运算符(>)
- IS NULL(ISNULL)和(IS NOT NULL)运算符
- BETWEEN AND运算符
- LEAST运算符
- GREATEST(VALUE1, VALUE2,......)
- IN、NOT IN 运算符
- like运算法
- REGEXP运算符
- 逻辑运算符
- NOT或!
- ADD或者&&
- or或者||
- XOR
- 位运算符
- 位或运算符(||)
- 位与运算符(&)
- 位异或运算符(^)
- 位左移运算符(<<)
- 位右移运算符(>>)
- 位取反运算符(~)
- 运算符的优先级
运用运算法有什么好处呢?
运用运算符可以更加灵活的使用表中的数据,我们可以通过使用运算符来解决我们的很多问题,大大提高效率。
什么是运算符
运算符是告诉mysql
执行特定算术或者逻辑操作的符号。
mysql
的内部运算符很丰富,主要有四大类,分别是:
算术运算符:用于各类数值运算
- 加(+)
- 减(-)
- 乘(*)
- 除(/)
- 求余(或者称模运算)(%)
- 比较运算符:用于比较运算
- 大于(>)
- 小于(<)
- 等于(=)
- 大于等于(>=)
- 小于等于(<=)
- 不等于(!=)
IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP
等
- 逻辑运算符:求值所得结果均为1(
TRUE
)、0(FALSE
),这类运算符有:
- 逻辑非(NOT或者!)
- 逻辑与(AND或者&&)
- 逻辑或(OR或者||)
- 逻辑异或(XOR)
- 位运算符:参与运算的操作数按二进制位进行运算
- 位与(&)
- 位或(|)
- 位非(~)
- 位异或(^)
- 左移(<<)
- 右移(>>)
可以看到上面有多达20多种运算符,我们接下来就根据这个来一一进行整理。
算术运算符
算术运算符是sql
中最基本的运算符;
老规矩,一切都在操作中;
举个例子
创建表一个名为yunweijia_1
的数据表;
mysql> create table yunweijia_1 (num int); Query OK, 0 rows affected (0.04 sec) mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | yunweijia_1 | +-------------------+ 1 row in set (0.00 sec) mysql>
在yunweijia_1
的数据表中插入数据;
mysql> insert into yunweijia_1 values (66); Query OK, 1 row affected (0.01 sec) mysql>
加法和减法运算
mysql> select num, num+10, num-10, num+10-5, num-5+10 from yunweijia_1; +------+--------+--------+----------+----------+ | num | num+10 | num-10 | num+10-5 | num-5+10 | +------+--------+--------+----------+----------+ | 66 | 76 | 56 | 71 | 71 | +------+--------+--------+----------+----------+ 1 row in set (0.00 sec) mysql>
从上面可以看到,我们可以对num
字段的值进行加法和减法的运算,而且+
和-
的优先级相同,先加后减或者先减后加的结果是相同的哈。
乘法、除法和求余运算
mysql> select num, num*2, num/2, num%22, num%30 from yunweijia_1; +------+-------+---------+--------+--------+ | num | num*2 | num/2 | num%22 | num%30 | +------+-------+---------+--------+--------+ | 66 | 132 | 33.0000 | 0 | 6 | +------+-------+---------+--------+--------+ 1 row in set (0.00 sec) mysql>
从上面可以看到,对num
进行除除法运算的时间,66被2整除之后,小数位也是保留了4位小数的。求余运算的时候,由于66被22整除了,所以余数是0,但是66无法被30整除,所以余数就是6了。
注意点:
在数学运算时,除数为0的除法是没有意义的,因此除法运算中的除数不能为0,如果被0除的话,结果会返回
NULL
。如下:
mysql> select num, num/0, num%0 from yunweijia_1; +------+-------+-------+ | num | num/0 | num%0 | +------+-------+-------+ | 66 | NULL | NULL | +------+-------+-------+ 1 row in set (0.00 sec) mysql>
比较运算符
一个比较运算符的结果总是1、0或者null
。比较运算符经常在select
的查询条件子句中使用,用来查询满足指定条件的记录。
等于运算符(=)
如果相等,返回值为1,否则返回值为0;
mysql> select 1=0, '2'=2, 2=2, '0.01'=0, 'a'='a', (1+5)=(8-2), NULL=NULL; +-----+-------+-----+----------+---------+-------------+-----------+ | 1=0 | '2'=2 | 2=2 | '0.01'=0 | 'a'='a' | (1+5)=(8-2) | NULL=NULL | +-----+-------+-----+----------+---------+-------------+-----------+ | 0 | 1 | 1 | 0 | 1 | 1 | NULL | +-----+-------+-----+----------+---------+-------------+-----------+ 1 row in set (0.00 sec) mysql>
从结果可以看到哈,在进行判断时,2=2和'2'=2的返回值是相同的,都是1,这是为啥呢,是因为在进行判断时,mysql
自动进行了转换,把字符2
转换成了数字2;'a'='a'是相同的字符比较,因此返回值为1;表达式的话就因为等号(=)两边计算结果一致,所以返回值是1,由于(=)不能用于空值NULL
的判断,因此返回值为NULL
。
所以数值比较时有以下规则:
- 若有一个或者两个参数为
NULL
,则比较运算的结果为NULL
; - 若容一个比较运算中的两个参数都是字符串,则按照字符串进行比较;
- 若两个参数均为整数的话,则按照整数进行比较;
- 若用字符串和数字进行相等判断,则
mysql
自动可以将字符串转换为数字。
安全等于运算符(<=>)
mysql
中的安全等于运算符和等于运算符类似,不过呢,安全等于运算符可以用来判断NULL
值。在两个操作数均为NULL
时,其返回值为1,而不是直接返回NULL
;反之,当一个操作数为NULL
,其返回值为0
,而也不是NULL
。
mysql> select 1<=>0, '2'<=>2, 2<=>2, '0.01'<=>0, 'a'<=>'a', (1+5)<=>(8-2), NULL<=>NULL, 3<=>NULL; +-------+---------+-------+------------+-----------+---------------+-------------+----------+ | 1<=>0 | '2'<=>2 | 2<=>2 | '0.01'<=>0 | 'a'<=>'a' | (1+5)<=>(8-2) | NULL<=>NULL | 3<=>NULL | +-------+---------+-------+------------+-----------+---------------+-------------+----------+ | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | +-------+---------+-------+------------+-----------+---------------+-------------+----------+ 1 row in set (0.00 sec) mysql>
不等于运算符(<>或者!=)
'<>'或者'!='用于判断数字、字符串、表达式不相等的判断;如果不相等,返回值为1;否则返回值为0;
注意:
这两个运算符不能用于判断空值
NULL
。
mysql> select 'goot'<>'good', 'good'!='good', 1<>2, 4!=4, 5.5!=5, (9-3)!=(9-5), NULL<>NULL; +----------------+----------------+------+------+--------+--------------+------------+ | 'goot'<>'good' | 'good'!='good' | 1<>2 | 4!=4 | 5.5!=5 | (9-3)!=(9-5) | NULL<>NULL | +----------------+----------------+------+------+--------+--------------+------------+ | 1 | 0 | 1 | 0 | 1 | 1 | NULL | +----------------+----------------+------+------+--------+--------------+------------+ 1 row in set (0.00 sec) mysql>
小于等于运算符(<=)
用来判断左边的操作数是否小于等于右边的操作数。
如果小于等于,返回值为1,否则返回值为0。同样的,<=
不能用于判断空值NULL
。
mysql> select 'good'<='good', 'good'<='goood', 'good'<='god', 1<=2, 3<=2, (4+1)<=(9-8), NULL<=NULL; +----------------+-----------------+---------------+------+------+--------------+------------+ | 'good'<='good' | 'good'<='goood' | 'good'<='god' | 1<=2 | 3<=2 | (4+1)<=(9-8) | NULL<=NULL | +----------------+-----------------+---------------+------+------+--------------+------------+ | 1 | 1 | 0 | 1 | 0 | 0 | NULL | +----------------+-----------------+---------------+------+------+--------------+------------+ 1 row in set (0.00 sec) mysql>
小于运算符(<)
用来判断左边的操作数是否小于右边的操作数;
如果小于,返回值为1,否则返回值为0。<
不能用于判断空值NULL
。
mysql> select 'good'<'good', 'good'<'goodd', 'good'<'god', 1<2, 2<2, 5<3, NULL<NULL; +---------------+----------------+--------------+-----+-----+-----+-----------+ | 'good'<'good' | 'good'<'goodd' | 'good'<'god' | 1<2 | 2<2 | 5<3 | NULL<NULL | +---------------+----------------+--------------+-----+-----+-----+-----------+ | 0 | 1 | 0 | 1 | 0 | 0 | NULL | +---------------+----------------+--------------+-----+-----+-----+-----------+ 1 row in set (0.00 sec) mysql>
大于等于运算符(>=)
用来判断左边的操作数是否大于等于右边的操作数。
如果大于等于,返回值为1;否则返回值为0。不能用于判断空值NULL
。
mysql> select 'good'>='good', 'good'>='goodd', 'good'>='god', 1>=2, 2>=1, (5+5)>=(6-2), NULL>=NULL; +----------------+-----------------+---------------+------+------+--------------+------------+ | 'good'>='good' | 'good'>='goodd' | 'good'>='god' | 1>=2 | 2>=1 | (5+5)>=(6-2) | NULL>=NULL | +----------------+-----------------+---------------+------+------+--------------+------------+ | 1 | 0 | 1 | 0 | 1 | 1 | NULL | +----------------+-----------------+---------------+------+------+--------------+------------+ 1 row in set (0.00 sec) mysql>
大于运算符(>)
用来判断左边的操作数是否大于右边的操作数。
如果大于,返回值为1;否则返回值为0。不能用于判断空值NULL
。
mysql> select 'good'>'good', 'good'>'goood', 'good'>'god', 2>1, 3>5, (9+9)>(1+2), NULL>NULL; +---------------+----------------+--------------+-----+-----+-------------+-----------+ | 'good'>'good' | 'good'>'goood' | 'good'>'god' | 2>1 | 3>5 | (9+9)>(1+2) | NULL>NULL | +---------------+----------------+--------------+-----+-----+-------------+-----------+ | 0 | 0 | 1 | 1 | 0 | 1 | NULL | +---------------+----------------+--------------+-----+-----+-------------+-----------+ 1 row in set (0.00 sec) mysql>
IS NULL(ISNULL)和(IS NOT NULL)运算符
is null
和isnull
用来检验一个值是否为NULL
;
如果是NULL
,返回值为1,否则返回值为0。
is not null
用来检验一个值是否为非NULL
;
如果是非NULL
,返回值为1,否则返回值为0。
mysql> select null is null, isnull(null), isnull(99), 99 is not null; +--------------+--------------+------------+----------------+ | null is null | isnull(null) | isnull(99) | 99 is not null | +--------------+--------------+------------+----------------+ | 1 | 1 | 0 | 1 | +--------------+--------------+------------+----------------+ 1 row in set (0.00 sec) mysql>
BETWEEN AND运算符
语法格式:
expr between min and max
如果expr
大于等于min
且小于等于max
,则between
的返回值为1,否则返回值为0。
mysql> select 4 between 1 and 5, 4 between 4 and 5, 9 between 1 and 8, 7 between 10 and 12; +-------------------+-------------------+-------------------+---------------------+ | 4 between 1 and 5 | 4 between 4 and 5 | 9 between 1 and 8 | 7 between 10 and 12 | +-------------------+-------------------+-------------------+---------------------+ | 1 | 1 | 0 | 0 | +-------------------+-------------------+-------------------+---------------------+ 1 row in set (0.00 sec) mysql>
LEAST运算符
语法格式:
least (值1,值2,...,值n)
在有两个或者多个参数的情况下,返回最小值。如果任意一个自变量为NULL
,则LEAST()
返回的值为NULL
;
mysql> select least(0,1,2,3), least(1.0,5,99), least('a', 'b', 'c'), least(0,null,9); +----------------+-----------------+----------------------+-----------------+ | least(0,1,2,3) | least(1.0,5,99) | least('a', 'b', 'c') | least(0,null,9) | +----------------+-----------------+----------------------+-----------------+ | 0 | 1.0 | a | NULL | +----------------+-----------------+----------------------+-----------------+ 1 row in set (0.00 sec) mysql>
GREATEST(VALUE1, VALUE2,......)
当有两个或者多个参数时,返回最大值。如果任意一个自变量为NULL
,则grestest()
返回的值为NULL
。
mysql> select greatest(0,1,2,3), greatest(1.0,5,99), greatest('a', 'b', 'c'), greatest(0,null,9); +-------------------+--------------------+-------------------------+--------------------+ | greatest(0,1,2,3) | greatest(1.0,5,99) | greatest('a', 'b', 'c') | greatest(0,null,9) | +-------------------+--------------------+-------------------------+--------------------+ | 3 | 99.0 | c | NULL | +-------------------+--------------------+-------------------------+--------------------+ 1 row in set (0.00 sec) mysql>
IN、NOT IN 运算符
in
运算符用来判断操作数是否为in
列表中的其中一个值;
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql中的四大运算符种类实例汇总(20多项)
相关推荐
评论
管理员已关闭评论功能...