欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql中的四大運(yùn)算符種類(lèi)實(shí)例匯總(20多項(xiàng))?

 更新時(shí)間:2022年07月26日 10:44:23   作者:公號(hào)運(yùn)維家  
這篇文章主要介紹了mysql中的四大運(yùn)算符種類(lèi)匯總,運(yùn)算符連接表達(dá)式中的各個(gè)操作數(shù),他的作用是用來(lái)指明對(duì)數(shù)據(jù)表中的操作數(shù)所進(jìn)行的運(yùn)算

運(yùn)用運(yùn)算法有什么好處呢?

運(yùn)用運(yùn)算符可以更加靈活的使用表中的數(shù)據(jù),我們可以通過(guò)使用運(yùn)算符來(lái)解決我們的很多問(wèn)題,大大提高效率。

什么是運(yùn)算符

運(yùn)算符是告訴mysql執(zhí)行特定算術(shù)或者邏輯操作的符號(hào)。

mysql的內(nèi)部運(yùn)算符很豐富,主要有四大類(lèi),分別是:

算術(shù)運(yùn)算符:用于各類(lèi)數(shù)值運(yùn)算

  • 加(+)
  • 減(-)
  • 乘(*)
  • 除(/)
  • 求余(或者稱(chēng)模運(yùn)算)(%)
  • 比較運(yùn)算符:用于比較運(yùn)算
  • 大于(>)
  • 小于(<)
  • 等于(=)
  • 大于等于(>=)
  • 小于等于(<=)
  • 不等于(!=)
  • IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP
  • 邏輯運(yùn)算符:求值所得結(jié)果均為1(TRUE)、0(FALSE),這類(lèi)運(yùn)算符有:
  • 邏輯非(NOT或者!)
  • 邏輯與(AND或者&&)
  • 邏輯或(OR或者||)
  • 邏輯異或(XOR)
  • 位運(yùn)算符:參與運(yùn)算的操作數(shù)按二進(jìn)制位進(jìn)行運(yùn)算
  • 位與(&)
  • 位或(|)
  • 位非(~)
  • 位異或(^)
  • 左移(<<)
  • 右移(>>)

可以看到上面有多達(dá)20多種運(yùn)算符,我們接下來(lái)就根據(jù)這個(gè)來(lái)一一進(jìn)行整理。

算術(shù)運(yùn)算符

算術(shù)運(yùn)算符是sql中最基本的運(yùn)算符;

老規(guī)矩,一切都在操作中;

舉個(gè)例子

創(chuàng)建表一個(gè)名為yunweijia_1的數(shù)據(jù)表;

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的數(shù)據(jù)表中插入數(shù)據(jù);

mysql> insert into yunweijia_1 values (66);
Query OK, 1 row affected (0.01 sec)

mysql>

加法和減法運(yùn)算

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>

從上面可以看到,我們可以對(duì)num字段的值進(jìn)行加法和減法的運(yùn)算,而且+- 的優(yōu)先級(jí)相同,先加后減或者先減后加的結(jié)果是相同的哈。

乘法、除法和求余運(yùn)算

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>

從上面可以看到,對(duì)num進(jìn)行除除法運(yùn)算的時(shí)間,66被2整除之后,小數(shù)位也是保留了4位小數(shù)的。求余運(yùn)算的時(shí)候,由于66被22整除了,所以余數(shù)是0,但是66無(wú)法被30整除,所以余數(shù)就是6了。

注意點(diǎn):

在數(shù)學(xué)運(yùn)算時(shí),除數(shù)為0的除法是沒(méi)有意義的,因此除法運(yùn)算中的除數(shù)不能為0,如果被0除的話(huà),結(jié)果會(huì)返回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>

比較運(yùn)算符

一個(gè)比較運(yùn)算符的結(jié)果總是1、0或者null。比較運(yùn)算符經(jīng)常在select的查詢(xún)條件子句中使用,用來(lái)查詢(xún)滿(mǎn)足指定條件的記錄。

等于運(yùn)算符(=)

如果相等,返回值為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>

從結(jié)果可以看到哈,在進(jìn)行判斷時(shí),2=2和'2'=2的返回值是相同的,都是1,這是為啥呢,是因?yàn)樵谶M(jìn)行判斷時(shí),mysql自動(dòng)進(jìn)行了轉(zhuǎn)換,把字符2轉(zhuǎn)換成了數(shù)字2;'a'='a'是相同的字符比較,因此返回值為1;表達(dá)式的話(huà)就因?yàn)榈忍?hào)(=)兩邊計(jì)算結(jié)果一致,所以返回值是1,由于(=)不能用于空值NULL的判斷,因此返回值為NULL

所以數(shù)值比較時(shí)有以下規(guī)則:

  • 若有一個(gè)或者兩個(gè)參數(shù)為NULL,則比較運(yùn)算的結(jié)果為NULL;
  • 若容一個(gè)比較運(yùn)算中的兩個(gè)參數(shù)都是字符串,則按照字符串進(jìn)行比較;
  • 若兩個(gè)參數(shù)均為整數(shù)的話(huà),則按照整數(shù)進(jìn)行比較;
  • 若用字符串和數(shù)字進(jìn)行相等判斷,則mysql自動(dòng)可以將字符串轉(zhuǎn)換為數(shù)字。

安全等于運(yùn)算符(<=>)

mysql中的安全等于運(yùn)算符和等于運(yùn)算符類(lèi)似,不過(guò)呢,安全等于運(yùn)算符可以用來(lái)判斷NULL值。在兩個(gè)操作數(shù)均為NULL時(shí),其返回值為1,而不是直接返回NULL;反之,當(dāng)一個(gè)操作數(shù)為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>

不等于運(yùn)算符(<>或者!=)

'<>'或者'!='用于判斷數(shù)字、字符串、表達(dá)式不相等的判斷;如果不相等,返回值為1;否則返回值為0;

注意:

這兩個(gè)運(yùn)算符不能用于判斷空值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>

小于等于運(yùn)算符(<=)

用來(lái)判斷左邊的操作數(shù)是否小于等于右邊的操作數(shù)。

如果小于等于,返回值為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>

小于運(yùn)算符(<)

用來(lái)判斷左邊的操作數(shù)是否小于右邊的操作數(shù);

如果小于,返回值為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>

大于等于運(yùn)算符(>=)

用來(lái)判斷左邊的操作數(shù)是否大于等于右邊的操作數(shù)。

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

大于運(yùn)算符(>)

用來(lái)判斷左邊的操作數(shù)是否大于右邊的操作數(shù)。

如果大于,返回值為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)運(yùn)算符

is nullisnull用來(lái)檢驗(yàn)一個(gè)值是否為NULL;

如果是NULL,返回值為1,否則返回值為0。

is not null用來(lái)檢驗(yàn)一個(gè)值是否為非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運(yùn)算符

語(yǔ)法格式:

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運(yùn)算符

語(yǔ)法格式:

least (值1,值2,...,值n)

在有兩個(gè)或者多個(gè)參數(shù)的情況下,返回最小值。如果任意一個(gè)自變量為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,......)

當(dāng)有兩個(gè)或者多個(gè)參數(shù)時(shí),返回最大值。如果任意一個(gè)自變量為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 運(yùn)算符

in運(yùn)算符用來(lái)判斷操作數(shù)是否為in列表中的其中一個(gè)值;

如果是,返回值為1,否則的話(huà)返回值為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運(yùn)算符用來(lái)判斷表達(dá)式是否為in列表中的其中一個(gè)值;

如果不是,返回值為1,否則的話(huà)返回值為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>

當(dāng)in里面存在null值,如果運(yùn)算符不成立的話(huà),直接返回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運(yùn)算法

用來(lái)匹配字符串;語(yǔ)法格式:

expr like 匹配條件

如果expr滿(mǎn)足匹配條件,則返回值為1,否則返回值為0。

當(dāng)expr或匹配條件中任何一個(gè)為null,則結(jié)果為null。

like運(yùn)算符在進(jìn)行匹配的時(shí)候,可以使用通配符,如下:

  • %匹配任何數(shù)目的字符,甚至包括零字符;
  • _只能匹配一個(gè)字符;
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運(yùn)算符

mysql中的正則表達(dá)式,用來(lái)匹配字符串,語(yǔ)法格式為:

expr regexp 匹配條件

如果expr滿(mǎn)足匹配條件,返回1,否則返回0,如果expr或匹配條件任意一個(gè)為NULL,則結(jié)果為NULL

regexp運(yùn)算符在進(jìn)行匹配時(shí),常用的有以下幾種通配符:

  • ^匹配以該字符后面的字符開(kāi)頭的字符串
  • $匹配以該字符前面的字符結(jié)尾的字符串
  • .匹配任意一個(gè)單字符
  • [...]匹配在方括號(hào)內(nèi)的任何字符,例如:[abc]匹配'a','b','c'。常用的還有[a-z]匹配任何字母,而[0-9]匹配任何數(shù)字
  • *匹配另個(gè)或者多個(gè)在他前面的字符,例如:'x*'匹配任何數(shù)量的'x'字符,[0-9]*匹配任何數(shù)字,*匹配任何數(shù)量的任何字符。
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>

邏輯運(yùn)算符

mysql中所有邏輯運(yùn)算符的求值所得結(jié)果均為TRUEFALSENULL。

mysql中,他們提現(xiàn)為1(TRUE)、0(FALSE)和NULL。

NOT或!

邏輯非運(yùn)算符not或者!,表示當(dāng)操作數(shù)為0時(shí),所得值為1;

當(dāng)操作數(shù)為非零值時(shí),所得值為0;

當(dāng)操作數(shù)為null時(shí),所得的返回值為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>

小提示:

在使用運(yùn)算符計(jì)算時(shí),一定要注意不同運(yùn)算符的優(yōu)先級(jí)不同。如果不能確定計(jì)算順序,最好使用括號(hào),以保證運(yùn)算結(jié)果的正確。

ADD或者&&

邏輯與運(yùn)算符add或者&&表示當(dāng)所有操作數(shù)均為非零值,并且不為null時(shí),計(jì)算所得結(jié)果為1,;

當(dāng)一個(gè)或多個(gè)操作數(shù)為0時(shí),所得結(jié)果為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或者||

邏輯或運(yùn)算符or或者||表示當(dāng)兩個(gè)操作數(shù)均為非null值且任意一個(gè)操作數(shù)為非零值時(shí),結(jié)果為1,否則結(jié)果為0;

當(dāng)有一個(gè)操作數(shù)為null,且另一個(gè)操作數(shù)為非零值時(shí),則結(jié)果為1,否則結(jié)果為null;

當(dāng)兩個(gè)操作數(shù)均為null時(shí),則所得結(jié)果為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

邏輯異或運(yùn)算符xor表示當(dāng)任意一個(gè)操作數(shù)為null時(shí),返回值為null

對(duì)于非null的操作數(shù),如果兩個(gè)操作數(shù)都是非0值或者都是0值,則返回結(jié)果為0;

如果一個(gè)為0值,另一個(gè)為非0值,返回結(jié)果為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>

位運(yùn)算符

位運(yùn)算符是在二進(jìn)制數(shù)上進(jìn)行計(jì)算的運(yùn)算符。位運(yùn)算符會(huì)先將操作數(shù)變成二進(jìn)制數(shù),然后進(jìn)行位運(yùn)算,最后將計(jì)算結(jié)果從二進(jìn)制變回十進(jìn)制數(shù)。

位或運(yùn)算符(||)

位或運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的幾個(gè)數(shù)據(jù)按照對(duì)應(yīng)的二進(jìn)制數(shù)作為進(jìn)行邏輯或運(yùn)算。對(duì)應(yīng)的二進(jìn)制位有一個(gè)或兩個(gè)為1則該位的運(yùn)算結(jié)果為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的二進(jìn)制數(shù)值為1010,15的二進(jìn)制數(shù)值為1111,按位或運(yùn)算之后,結(jié)果為1111,即整數(shù)15;

9的二進(jìn)制數(shù)值為1001,4的二進(jìn)制數(shù)值為0100,2的二進(jìn)制數(shù)值為0010,按位或運(yùn)算之后,結(jié)果為1111,即整數(shù)15。

位與運(yùn)算符(&)

位與運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的幾個(gè)操作數(shù)按照對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算。對(duì)應(yīng)的二進(jìn)制位都是1或1則該位的運(yùn)算結(jié)果為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的二進(jìn)制數(shù)值為1010,15的二進(jìn)制數(shù)值為1111,按位與運(yùn)算之后,結(jié)果為1010,即整數(shù)10;

9的二進(jìn)制數(shù)值為1001,4的二進(jìn)制數(shù)值為0100,2的二進(jìn)制數(shù)值為0010,按位與運(yùn)算之后,結(jié)果為0000,即整數(shù)0。

位異或運(yùn)算符(^)

位異或運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的兩個(gè)數(shù)據(jù)按照對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯異或運(yùn)算。

對(duì)應(yīng)位的二進(jìn)制數(shù)不同時(shí),對(duì)應(yīng)位的結(jié)果才為1。如果兩個(gè)對(duì)應(yīng)位數(shù)都為0或者都為1,則對(duì)應(yīng)位的結(jié)果為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的二進(jìn)制數(shù)值為1010,5的二進(jìn)制數(shù)值為101,按位異或運(yùn)算之后,結(jié)果為1111,即整數(shù)15;

1的二進(jìn)制數(shù)值為1,2的二進(jìn)制數(shù)值為10,按位異或運(yùn)算之后,結(jié)果為11,即整數(shù)為3;

3的二進(jìn)制數(shù)值為11,6的二進(jìn)制數(shù)值為110,按位異或運(yùn)算之后,結(jié)果為101,即整數(shù)5。

位左移運(yùn)算符(<<)

位左移運(yùn)算符<<使指定的二進(jìn)制值的所有位都左移指定的位數(shù)。

左移指定位數(shù)之后,左邊高位的數(shù)值繼續(xù)左移,并不會(huì)進(jìn)行丟棄,右邊低位空出的位置用0補(bǔ)齊。

語(yǔ)法格式:

expr << n

n指定值expr要移位的位數(shù)。

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

mysql>

1的二進(jìn)制值為1,左移兩位之后變成了100,即十進(jìn)制證書(shū)4;

15的二進(jìn)制位1111,左移6位之后變成了1111000000,即十進(jìn)制整數(shù)960。

位右移運(yùn)算符(>>)

位右移運(yùn)算符>>使指定的二進(jìn)制值的所有位都右移指定的位數(shù)。

右移指定位數(shù)之后,右邊低位的數(shù)值將被移出并丟棄,左邊高位空出的位置用0補(bǔ)齊。

語(yǔ)法格式為:

expr >> n

n指定值expr要移位的位數(shù)。

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

mysql>

100的二進(jìn)制為11001000,右移兩位之后是110010,即十進(jìn)制50;

10的二進(jìn)制為1010,右移6位之后是0,即二進(jìn)制也是0。

位取反運(yùn)算符(~)

位取反運(yùn)算的實(shí)質(zhì)是將參與運(yùn)算的數(shù)據(jù)按照對(duì)應(yīng)的二進(jìn)制數(shù)逐位反轉(zhuǎn),即1取反后變?yōu)?、0取反后變?yōu)?。

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

mysql>

在邏輯運(yùn)算100 & ~1中,由于位取反運(yùn)算符~的級(jí)別高于位與運(yùn)算符,因此先對(duì)1進(jìn)行取反操作,取反之后,除了最低位為0外,其他位都是1,即1110,然后與十進(jìn)制數(shù)值100進(jìn)行與運(yùn)算,結(jié)果為1100100,即整數(shù)100。

運(yùn)算符的優(yōu)先級(jí)

運(yùn)算符的優(yōu)先級(jí)決定了不同的運(yùn)算符在表達(dá)式中計(jì)算的先后順序。我們上面整理了這么多運(yùn)算符,到底哪些運(yùn)算符的優(yōu)先級(jí)最高呢,下面我們就將優(yōu)先級(jí)由低到高排列。

每個(gè)運(yùn)算符的優(yōu)先級(jí)都是不同的,一般情況下,級(jí)別高的運(yùn)算符先進(jìn)行計(jì)算,如果級(jí)別相同,mysql按表達(dá)式的順序從左到右依次計(jì)算。如果無(wú)法確定優(yōu)先級(jí),我們可以使用圓括號(hào)()來(lái)改變優(yōu)先級(jí)。而且這樣子會(huì)使我們的sql更加優(yōu)雅,且計(jì)算過(guò)程更加清晰。 

到此這篇關(guān)于mysql中的四大運(yùn)算符種類(lèi)匯總(20多項(xiàng)) 的文章就介紹到這了,更多相關(guān)mysql運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pycharm2017實(shí)現(xiàn)python3.6與mysql的連接

    pycharm2017實(shí)現(xiàn)python3.6與mysql的連接

    這篇文章主要為大家詳細(xì)介紹了PyCharm連接MySQL數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 輕松掌握MySQL函數(shù)中的last_insert_id()

    輕松掌握MySQL函數(shù)中的last_insert_id()

    相信大家應(yīng)該都知道Mysql函數(shù)可以實(shí)現(xiàn)許多我們需要的功能,這篇文章介紹的Mysql函數(shù)Last_insert_id()就是其中之一,文章通過(guò)一個(gè)例子展開(kāi)來(lái)講,應(yīng)該更有助于大家的理解和學(xué)習(xí),有需要的朋友們下面來(lái)一起看看吧。
    2016-12-12
  • 淺析MySQL 備份與恢復(fù)

    淺析MySQL 備份與恢復(fù)

    這篇文章主要介紹了MySQL 備份與恢復(fù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • Mysql數(shù)據(jù)庫(kù)面試必備之三大log介紹

    Mysql數(shù)據(jù)庫(kù)面試必備之三大log介紹

    大家好,本篇文章主要講的是Mysql數(shù)據(jù)庫(kù)面試必備之三大log介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2021-12-12
  • mysql使用left?join連接出現(xiàn)重復(fù)問(wèn)題的記錄

    mysql使用left?join連接出現(xiàn)重復(fù)問(wèn)題的記錄

    這篇文章主要介紹了mysql使用left?join連接出現(xiàn)重復(fù)問(wèn)題的記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 一步步教你如何使用mysql?binlog恢復(fù)數(shù)據(jù)

    一步步教你如何使用mysql?binlog恢復(fù)數(shù)據(jù)

    Binlog日志即binary?log,是二進(jìn)制日志文件,有兩個(gè)作用,一個(gè)是增量備份,另一個(gè)是主從復(fù)制,下面這篇文章主要給大家介紹了關(guān)于如何使用mysql?binlog?恢復(fù)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • MySQL 啟動(dòng)報(bào)錯(cuò):File ./mysql-bin.index not found (Errcode: 13)

    MySQL 啟動(dòng)報(bào)錯(cuò):File ./mysql-bin.index not found (Errcode: 13)

    這篇文章主要介紹了MySQL 啟動(dòng)報(bào)錯(cuò):File ./mysql-bin.index not found (Errcode: 13)的解決方法,需要的朋友可以參考下
    2014-07-07
  • 新手必備之MySQL msi版本下載安裝圖文詳細(xì)教程

    新手必備之MySQL msi版本下載安裝圖文詳細(xì)教程

    今天教大家怎么下載安裝MySQL msi版本,文中有非常詳細(xì)的圖文解說(shuō),對(duì)不會(huì)下載安裝mysql的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    mysql在使用的過(guò)程中,難免遇到數(shù)據(jù)庫(kù)表誤操作,下面這篇文章主要給大家介紹了關(guān)于Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 親手教你SQLyog12.08安裝詳細(xì)教程

    親手教你SQLyog12.08安裝詳細(xì)教程

    SQLyog?是一個(gè)快速而簡(jiǎn)潔的圖形化管理MYSQL數(shù)據(jù)庫(kù)的工具,它能夠在任何地點(diǎn)有效地管理你的數(shù)據(jù)庫(kù),這篇文章主要介紹了SQLyog12.08安裝詳細(xì)教程,需要的朋友可以參考下
    2023-04-04

最新評(píng)論