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

目录
  • 运用运算法有什么好处呢?
  • 什么是运算符
  • 算术运算符
    • 举个例子
    • 加法和减法运算
    • 乘法、除法和求余运算
  • 比较运算符
    • 等于运算符(=)
    • 安全等于运算符(<=>)
    • 不等于运算符(<>或者!=)
    • 小于等于运算符(<=)
    • 小于运算符(<)
    • 大于等于运算符(>=)
    • 大于运算符(>)
    • 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 nullisnull用来检验一个值是否为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列表中的其中一个值;

如果是,返回值为1,否则的话返回值为0。

mysql> select 9 in (1,4,9,10,'yunweijia'), 'yunweijia' in (1,4,9,10,'yunweijia'), 1 in (2,4,5);
+-----------------------------+---------------------------------------+--------------+
| 9 in (1,4,9,10,'yunweijia') | 'yunweijia' in (1,4,9,10,'yunweijia') | 1 in (2,4,5) |
+-----------------------------+---------------------------------------+--------------+
| 1 | 1 | 0 |
+-----------------------------+---------------------------------------+--------------+
1 row in set, 1 warning (0.00 sec)

mysql>

not in运算符用来判断表达式是否为in列表中的其中一个值;

如果不是,返回值为1,否则的话返回值为0。

mysql> select 9 not in (1,4,9,10,'yunweijia'), 'yunweijia' not in (1,4,9,10,'yunweijia'), 1 not in (2,4,5);
+---------------------------------+-------------------------------------------+------------------+
| 9 not in (1,4,9,10,'yunweijia') | 'yunweijia' not in (1,4,9,10,'yunweijia') | 1 not in (2,4,5) |
+---------------------------------+-------------------------------------------+------------------+
| 0 | 0 | 1 |
+---------------------------------+-------------------------------------------+------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

in里面存在null值,如果运算符不成立的话,直接返回null

mysql> select 9 in (1,4,9,10, null), 'yunweijia' in (1,4,9,10,'yunweijia', null), 1 in (2,4,5, null);
+-----------------------+---------------------------------------------+--------------------+
| 9 in (1,4,9,10, null) | 'yunweijia' in (1,4,9,10,'yunweijia', null) | 1 in (2,4,5, null) |
+-----------------------+---------------------------------------------+--------------------+
| 1 | 1 | NULL |
+-----------------------+---------------------------------------------+--------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

like运算法

用来匹配字符串;语法格式:

expr like 匹配条件

如果expr满足匹配条件,则返回值为1,否则返回值为0。

expr或匹配条件中任何一个为null,则结果为null

like运算符在进行匹配的时候,可以使用通配符,如下:

  • %匹配任何数目的字符,甚至包括零字符;
  • _只能匹配一个字符;
mysql> select 'yunweijia' like 'yunweijia', 'ywj' like 'yw_', 'ywj' like 'y%', 'ywj' like 'yunweijia';
+------------------------------+------------------+-----------------+------------------------+
| 'yunweijia' like 'yunweijia' | 'ywj' like 'yw_' | 'ywj' like 'y%' | 'ywj' like 'yunweijia' |
+------------------------------+------------------+-----------------+------------------------+
| 1 | 1 | 1 | 0 |
+------------------------------+------------------+-----------------+------------------------+
1 row in set (0.00 sec)

mysql>

REGEXP运算符

mysql中的正则表达式,用来匹配字符串,语法格式为:

expr regexp 匹配条件

如果expr满足匹配条件,返回1,否则返回0,如果expr或匹配条件任意一个为NULL,则结果为NULL

regexp运算符在进行匹配时,常用的有以下几种通配符:

  • ^匹配以该字符后面的字符开头的字符串
  • $匹配以该字符前面的字符结尾的字符串
  • .匹配任意一个单字符
  • [...]匹配在方括号内的任何字符,例如:[abc]匹配'a','b','c'。常用的还有[a-z]匹配任何字母,而[0-9]匹配任何数字
  • *匹配另个或者多个在他前面的字符,例如:'x*'匹配任何数量的'x'字符,[0-9]*匹配任何数字,*匹配任何数量的任何字符。
mysql> select 'yunweijia' regexp '^y', 'ywj' regexp 'j$', 'ywj' regexp 'y*j', 'ywj' regexp "['ywj', 'aa', 'bb']";
+-------------------------+-------------------+--------------------+------------------------------------+
| 'yunweijia' regexp '^y' | 'ywj' regexp 'j$' | 'ywj' regexp 'y*j' | 'ywj' regexp "['ywj', 'aa', 'bb']" |
+-------------------------+-------------------+--------------------+------------------------------------+
| 1 | 1 | 1 | 1 |
+-------------------------+-------------------+--------------------+------------------------------------+
1 row in set (0.00 sec)

mysql>

逻辑运算符

mysql中所有逻辑运算符的求值所得结果均为TRUEFALSENULL

mysql中,他们提现为1(TRUE)、0(FALSE)和NULL

NOT或!

逻辑非运算符not或者!,表示当操作数为0时,所得值为1;

当操作数为非零值时,所得值为0;

当操作数为null时,所得的返回值为null

mysql> select not 10, not (1-1), not -5, not null, not 1+1;
+--------+-----------+--------+----------+---------+
| not 10 | not (1-1) | not -5 | not null | not 1+1 |
+--------+-----------+--------+----------+---------+
| 0 | 1 | 0 | NULL | 0 |
+--------+-----------+--------+----------+---------+
1 row in set (0.00 sec)

mysql>

小提示:

在使用运算符计算时,一定要注意不同运算符的优先级不同。如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。

ADD或者&&

逻辑与运算符add或者&&表示当所有操作数均为非零值,并且不为null时,计算所得结果为1,;

当一个或多个操作数为0时,所得结果为0;

其余情况返回值为null

mysql> select 9 and -9, 1 and 0, 1 and null, 0 and null;
+----------+---------+------------+------------+
| 9 and -9 | 1 and 0 | 1 and null | 0 and null |
+----------+---------+------------+------------+
| 1 | 0 | NULL | 0 |
+----------+---------+------------+------------+
1 row in set (0.01 sec)

mysql> select 9 && -9, 1 && 0, 1 && null, 0 && null;
+---------+--------+-----------+-----------+
| 9 && -9 | 1 && 0 | 1 && null | 0 && null |
+---------+--------+-----------+-----------+
| 1 | 0 | NULL | 0 |
+---------+--------+-----------+-----------+
1 row in set, 4 warnings (0.00 sec)

mysql>

or或者||

逻辑或运算符or或者||表示当两个操作数均为非null值且任意一个操作数为非零值时,结果为1,否则结果为0;

当有一个操作数为null,且另一个操作数为非零值时,则结果为1,否则结果为null

当两个操作数均为null时,则所得结果为null

mysql> select 9 or -9 or 0, 1 or 2, 0 or 0, 1 or null, 0 or null, null or null;
+--------------+--------+--------+-----------+-----------+--------------+
| 9 or -9 or 0 | 1 or 2 | 0 or 0 | 1 or null | 0 or null | null or null |
+--------------+--------+--------+-----------+-----------+--------------+
| 1 | 1 | 0 | 1 | NULL | NULL |
+--------------+--------+--------+-----------+-----------+--------------+
1 row in set (0.00 sec)

mysql> select 9 || -9 || 0, 1 || 2, 0 || 0, 1 || null, 0 || null, null || null;
+--------------+--------+--------+-----------+-----------+--------------+
| 9 || -9 || 0 | 1 || 2 | 0 || 0 | 1 || null | 0 || null | null || null |
+--------------+--------+--------+-----------+-----------+--------------+
| 1 | 1 | 0 | 1 | NULL | NULL |
+--------------+--------+--------+-----------+-----------+--------------+
1 row in set, 7 warnings (0.00 sec)

mysql>

XOR

逻辑异或运算符xor表示当任意一个操作数为null时,返回值为null

对于非null的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;

如果一个为0值,另一个为非0值,返回结果为1。

mysql> select 1 xor 1, 0 xor 0, 1 xor 0, 1 xor null, null xor null, 1 xor 1 xor 1;
+---------+---------+---------+------------+---------------+---------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 1 xor null | null xor null | 1 xor 1 xor 1 |
+---------+---------+---------+------------+---------------+---------------+
| 0 | 0 | 1 | NULL | NULL | 1 |
+---------+---------+---------+------------+---------------+---------------+
1 row in set (0.00 sec)

mysql>

位运算符

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。

位或运算符(||)

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

mysql> select 10 | 15, 9 | 4 | 2;
+---------+-----------+
| 10 | 15 | 9 | 4 | 2 |
+---------+-----------+
| 15 | 15 |
+---------+-----------+
1 row in set (0.01 sec)

mysql>

10的二进制数值为1010,15的二进制数值为1111,按位或运算之后,结果为1111,即整数15;

9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位或运算之后,结果为1111,即整数15。

位与运算符(&)

位与运算的实质是将参与运算的几个操作数按照对应的二进制数逐位进行逻辑与运算。对应的二进制位都是1或1则该位的运算结果为1,否则为0。

mysql> select 10 & 15, 9 & 4 & 2;
+---------+-----------+
| 10 & 15 | 9 & 4 & 2 |
+---------+-----------+
| 10 | 0 |
+---------+-----------+
1 row in set (0.00 sec)

mysql>

10的二进制数值为1010,15的二进制数值为1111,按位与运算之后,结果为1010,即整数10;

9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位与运算之后,结果为0000,即整数0。

位异或运算符(^)

位异或运算的实质是将参与运算的两个数据按照对应的二进制数逐位进行逻辑异或运算。

对应位的二进制数不同时,对应位的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。

mysql> select 10 ^ 5, 1 ^ 2, 3 ^ 6;
+--------+-------+-------+
| 10 ^ 5 | 1 ^ 2 | 3 ^ 6 |
+--------+-------+-------+
| 15 | 3 | 5 |
+--------+-------+-------+
1 row in set (0.00 sec)

mysql>

10的二进制数值为1010,5的二进制数值为101,按位异或运算之后,结果为1111,即整数15;

1的二进制数值为1,2的二进制数值为10,按位异或运算之后,结果为11,即整数为3;

3的二进制数值为11,6的二进制数值为110,按位异或运算之后,结果为101,即整数5。

位左移运算符(<<)

位左移运算符<<使指定的二进制值的所有位都左移指定的位数。

左移指定位数之后,左边高位的数值继续左移,并不会进行丢弃,右边低位空出的位置用0补齐。

语法格式:

expr << n

n指定值expr要移位的位数。

mysql> select 1 << 2, 15 << 6;
+--------+---------+
| 1 << 2 | 15 << 6 |
+--------+---------+
| 4 | 960 |
+--------+---------+
1 row in set (0.00 sec)

mysql>

1的二进制值为1,左移两位之后变成了100,即十进制证书4

15的二进制位1111,左移6位之后变成了1111000000,即十进制整数960。

位右移运算符(>>)

位右移运算符>>使指定的二进制值的所有位都右移指定的位数。

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

语法格式为:

expr >> n

n指定值expr要移位的位数。

mysql> select 200 >> 2, 10 >> 6;
+----------+---------+
| 200 >> 2 | 10 >> 6 |
+----------+---------+
| 50 | 0 |
+----------+---------+
1 row in set (0.00 sec)

mysql>

100的二进制为11001000,右移两位之后是110010,即十进制50;

10的二进制为1010,右移6位之后是0,即二进制也是0。

位取反运算符(~)

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

mysql> select 100 & ~1;
+----------+
| 100 & ~1 |
+----------+
| 100 |
+----------+
1 row in set (0.00 sec)

mysql>

在逻辑运算100 & ~1中,由于位取反运算符~的级别高于位与运算符,因此先对1进行取反操作,取反之后,除了最低位为0外,其他位都是1,即1110,然后与十进制数值100进行与运算,结果为1100100,即整数100。

运算符的优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序。我们上面整理了这么多运算符,到底哪些运算符的优先级最高呢,下面我们就将优先级由低到高排列。

每个运算符的优先级都是不同的,一般情况下,级别高的运算符先进行计算,如果级别相同,mysql按表达式的顺序从左到右依次计算。如果无法确定优先级,我们可以使用圆括号()来改变优先级。而且这样子会使我们的sql更加优雅,且计算过程更加清晰。

到此这篇关于mysql中的四大运算符种类汇总(20多项) 的文章就介绍到这了,更多相关mysql运算符内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mysql常用运算符与函数汇总

    我们先把数据表建好 use test; create table `employee`( emp_no int unsigned, emp_name varchar(30), emp_sex varchar(3), emp_age tinyint unsigned, sal double, history datetime ); insert into employee values(1, '张三', '男', 18, 5000, '2012-04-23'), (2, '李四', '男', 27

  • 与MSSQL对比学习MYSQL的心得(五)--运算符

    安全等于运算符(<=>) 这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值. 在两个操作数均为NULL时,其返回值为1而不为NULL: 而当一个操作数为NULL时,其返回值为0而不为NULL. 下面分别是 SELECT NULL <=>1   SELECT 1<=>0  SELECT NULL <=>NULL 的执行结果 在两个操作数均为NULL时,其返回值为1而不为NULL: LEAST运算符 语法格式为:LEAST(值

  • MySql比较运算符正则式匹配REGEXP的详细使用详解

    一.初始化数据 DROP TABLE IF EXISTS `test_01`; CREATE TABLE `test_01` ( `id` int(0) NOT NULL, `stu` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学号', `user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_

  • 手把手教你MySQL运算符

    目录 一.算术运算符 二.比较运算符 三.逻辑运算符 四.位运算符 五.运算符的优先级 总结 一.算术运算符 主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加 (+).减(-).乘(*).除(/)和取模(%)运算 1.加法与减法运算符 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数 在Java中,+的左右两边如果有字符串,那么表示字符串的拼接.但是在MySQL中+只表示数值相加.如果遇到非数值

  • MySQL笔记之运算符使用详解

    Mysql可以通过运算符来对表中数据进行运算,比如通过出生日期求年龄等 运算符包括四类,分别是:算数运算符.比较运算符.逻辑运算符和位运算符 算数运算符加.减.乘运算 复制代码 代码如下: mysql> select a,a+5,a*2 from t1;+------+------+------+| a    | a+5  | a*2  |+------+------+------+|   24 |   29 |   48 |+------+------+------+ row in set (

  • mySQL UNION运算符的默认规则研究

    复制代码 代码如下: /* 建立数据表 */ create table td_base_data( id int(10) not null auto_increment,userId int(10) default '0',primary key (`id`))ENGINE=MyISAM DEFAULT CHARSET=gbk; create table td_base_data_20090527( id int(10) not null auto_increment,userId int(10

  • MySQL中的运算符使用实例展示

    我一贯秉承着一点:通过自己的双手真实的操作一遍之后的信息是最可靠的,所以在您参考这个小文儿的时候请不要只是"看",单纯的瞧一瞧是得不到真知滴~~~ 座右铭:纸上得来终觉浅,绝知此事要躬行! 1.算数运算符 加 mysql> select 1+2; 减 mysql> select 2-1; 乘 mysql> select 2*3; 除 mysql> select 5/3; 商 mysql> SELECT 5 DIV 2; 模 mysql> select

  • MySQL Where 条件语句介绍和运算符小结

    WHERE 条件 有时候操作数据库时,只操作一些有条件限制的数据,这时可以在SQL语句中添加WHERE子句来规定数据操作的条件. 语法: 复制代码 代码如下: SELECT column,- FROM tb_name WHERE definition WHERE 关键字后面接有效的表达式(definition),该表达式表示被操作的数据记录必须满足的条件. 除 SELECT 外,WHERE 条件关键字可以用于任何 SQL 语法允许的场合,如 UPDATE(更新).DELETE(删除)等. 例子:

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

    目录 运用运算法有什么好处呢? 什么是运算符 算术运算符 举个例子 加法和减法运算 乘法.除法和求余运算 比较运算符 等于运算符(=) 安全等于运算符(<=>) 不等于运算符(<>或者!=) 小于等于运算符(<=) 小于运算符(<) 大于等于运算符(>=) 大于运算符(>) IS NULL(ISNULL)和(IS NOT NULL)运算符 BETWEEN AND运算符 LEAST运算符 GREATEST(VALUE1, VALUE2,......) IN.N

  • MySQL中USING 和 HAVING 用法实例简析

    本文实例讲述了MySQL中USING 和 HAVING 用法.分享给大家供大家参考,具体如下: USING 用于表连接时给定连接条件(可以理解为简写形式),如 SELECT * FROM table1 JOIN table2 ON table1.id = table2.id 使用 USING 可以写为 SELECT * FROM table1 JOIN table2 USING(id) HAVING 引入 HAVING 是因为 WHERE 无法和统计函数一起使用 如表 order (定单)有如下

  • mysql中GROUP_CONCAT的使用方法实例分析

    本文实例讲述了mysql中GROUP_CONCAT的使用方法.分享给大家供大家参考,具体如下: 现在有三个表,结构如下: cate表: CREATE TABLE `cate` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `name` char(20) DEFAULT '' COMMENT '分类名', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAUL

  • MySQL中sum函数使用的实例教程

    文章简介 今天分享一下MySQL中的sum函数使用.该函数已经成为大家操作MySQL数据库中时常用到的一个函数,这个函数统计满足条件行中指定列的和,想必肯定大家都知道了,本身就没什么讲头了,这篇文章主要是通过几个小案例深入了解一下该函数,以及在做MySQL查询时如何使用sum函数做优化. 语法分析 SUM([DISTINCT] expr) [over_clause] Returns the sum of expr. If the return set has no rows, SUM() ret

  • mysql中关键词exists的用法实例详解

    目录 前言 语法解释 语法 说明 使用案例 环境准备 常用查询 exists与in的效率比较 循环嵌套查询执行原理 循环优化策略 exists和in查询原理的区别 结论 总结 前言 在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案 语法解释 语法 SELECT column1 FROM t1 WHERE [conditions] and EXI

  • MySQL中json_extract()函数的使用实例

    目录 MySQL中json_extract()函数的使用 一.初始化 二.执行json_extract() MySql中json_extract函数的一个特殊之处 在MySql中,是这样的 而在Oracle中,是这样的 MySQL中json_extract()函数的使用 作用:截取数据库中指定字段中存储的json数据中的某个字段对应的值 要做做什么?(根据数据库中相关表字段中存储的json格式的数据,然后以SQL语句的形式取出其中指定key对应的值,最终整理汇总为一张视图供以后的方便使用) 一.

  • MYSQL中binlog优化的一些思考汇总

    问题 问题1:如何解决事务提交时flush redo log带来的性能损失 WAL是实现事务持久性(D)的一个常用技术,基本原理是将事务的修改记录redo log.redo log顺序追加写入.事务提交时,只需要保证事务的redo log落盘即可,通过redo log的顺序写代替页面的随机写提升数据库系统的性能.但是,该方案必须要求每个事务提交时都将其生成的redo log进行一次刷盘,效率不高. 问题2:binlog和引擎层事务提交的顺序问题 对于单个事务而言,日志写入顺序是先redo log

  • MySQL中常见的几种日志汇总

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日常学习及运维过程中也会和这些日志打交道.本节内容将带你了解 MySQL 数据库中几种常用日志的作用及管理方法. 1.错误日志(errorlog) 错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误及警告相关信息.当数据库意外宕机或发生其他错误时,我们应该去排查错误日志. lo

  • MySQL中EXPLAIN语句及用法实例

    目录 前言 EXPLAIN 语法如下: 1.获取表结构 2.获取执行计划信息 3.使用 EXPLAIN ANALYZE 获取信息 总结 前言 在MySQL中 DESCRIBE 和 EXPLAIN 语句是相同的意思.DESCRIBE 语句多用于获取表结构,而 EXPLAIN 语句用于获取查询执行计划(用于解释MySQL如何执行查询语句). 通过 EXPLAIN 语句可以帮助我们发现表格的哪些字段上需要建立索引,用于加速查询.也可以使用 EXPLAIN 检查优化器是否使用最优的顺序来连接表. EXP

  • MySQL中UPDATE语句使用的实例教程

    一.UPDATE常见用法 首先建立测试环境: DROP TABLE IF EXISTS t_test; CREATE TABLE t_test ( bs bigint(20) NOT NULL auto_increment, username varchar(20) NOT NULL, password varchar(20) default NULL, remark varchar(200) default NULL, PRIMARY KEY (bs) ) ENGINE=InnoDB AUTO

随机推荐