您现在的位置是:网站首页> 编程资料编程资料

mysql中的四大运算符种类实例汇总(20多项) _Mysql_

2023-05-26 334人已围观

简介 mysql中的四大运算符种类实例汇总(20多项) _Mysql_

运用运算法有什么好处呢?

运用运算符可以更加灵活的使用表中的数据,我们可以通过使用运算符来解决我们的很多问题,大大提高效率。

什么是运算符

运算符是告诉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

大于等于运算符(>=)

用来判断左边的操作数是否大于等于右边的操作数。

如果大于等于,返回值为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'>=
                
                

-六神源码网