mysql 資料庫中的表結構確立後,表中的資料代表的意義就已經確定。而通過 mysql 運算子進行運算,就可以獲取到表結構以外的另一種資料。
例如,學生表中存在乙個 birth 字段,這個字段表示學生的出生年份。而運用 mysql 的算術運算子用當前的年份減學生出生的年份,那麼得到的就是這個學生的實際年齡資料。
mysql 支援 4 種運算子,分別是:
1) 算術運算子
執行算術運算,例如:加、減、乘、除等。
2) 比較運算子
包括大於、小於、等於或者不等於,等等。主要用於數值的比較、字串的匹配等方面。例如:like、in、between and 和 is null 等都是比較運算子,還包括正規表示式的 regexp 也是比較運算子。
3) 邏輯運算子
包括與、或、非和異或等邏輯運算子。其返回值為布林型,真值(1 或 true)和假值(0 或 false)。
4) 位運算子
包括按位與、按位或、按位取反、按位異或、按位左移和按位右移等位運算子。位運算必須先將資料轉換為二進位制,然後在二進位制格式下進行操作,運算完成後,將二進位制的值轉換為原來的型別,返回給使用者。
算術運算子
算術運算子是 sql 中最基本的運算子,mysql 中的算術運算子如下表所示。
算術運算子
說明加法運算
減法運算
乘法運算
除法運算,返回商
求餘運算,返回餘數
比較運算子
比較運算子的語法格式為:
mysql 支援的比較運算子如下表所示。
比較運算子
說明等於
小於小於等於
大於大於等於
安全的等於,不會返回 unknown
<> 或!=
不等於is null 或 isnull
判斷乙個值是否為 null
is not null
判斷乙個值是否不為 null
least
當有兩個或多個引數時,返回最小值
greatest
當有兩個或多個引數時,返回最大值
between and
判斷乙個值是否落在兩個值之間
in判斷乙個值是in列表中的任意乙個值
not in
判斷乙個值不是in列表中的任意乙個值
like
萬用字元匹配
regexp
正規表示式匹配
下面分別介紹不同的比較運算子的使用方法。
1) 等於運算子「=」
等號「=」用來判斷數字、字串和表示式是否相等。如果相等,返回值為 1,否則返回值為 0。
資料進行比較時,有如下規則:
若有乙個或兩個引數為 null,則比較運算的結果為 null。
若同乙個比較運算中的兩個引數都是字串,則按照字串進行比較。
若兩個引數均為正數,則按照整數進行比較。
若乙個字串和數字進行相等判斷,則 mysql 可以自動將字串轉換成數字。
2) 安全等於運算子「<=>」
用於比較兩個表示式的值。當兩個表示式的值中有乙個為空值或者都為空值時,將返回 unknown。
對於運算子「<=>」,當兩個表示式彼此相等或都等於空值時,比較結果為 true;若其中乙個是空值或者都是非空值但不相等時,則為 false,不會出現 unknown 的情況。
3) 不等於運算子「<>」或者「!=」
「<>」或者「!=」用於數字、字串、表示式不相等的判斷。如果不相等,返回值為 1;否則返回值為 0。這兩個運算子不能用於判斷空值(null)。
4) 小於或等於運算子「<=」
「<=」用來判斷左邊的運算元是否小於或等於右邊的運算元。如果小於或等於,返回值為 1;否則返回值為 0。「<=」不能用於判斷空值。
5) 小於運算子「
6) 大於或等於運算子「>=」
「>=」用來判斷左邊的運算元是否大於或等於右邊的運算元。如果大於或等於,返回值為 1;否則返回值為 0。「>=」不能用於判斷空值。
7) 大於運算子「>」
「>」用來判斷左邊的運算元是否大於右邊的運算元。如果大於,返回值為 1;否則返回值為 0。「>」不能用於判斷空值。
8) is null(或者 isnull)
is null 和 isnull 用於檢驗乙個值是否為 null,如果為 null,返回值為 1;否則返回值為 0。
9) is not null
is not null 用於檢驗乙個值是否為非 null,如果為非 null,返回值為 1;否則返回值為 0。
10) betwwen and
語法格式為:
between and
若大於或等於,且小於或等於,則 between 的返回值為 1;否則返回值為 0。
11) least
語法格式為:
least(,,…,)
其中,值 n 表示引數列表中有 n 個值。存在兩個或多個引數的情況下,返回最小值。若任意乙個自變數為 null,則 least() 的返回值為 null。
12) greatest
語法格式為:
greatest (,,…,)
其中,值 n 表示引數列表中有 n 個值。存在兩個或多個引數的情況下,返回最大值。若任意乙個自變數為 null,則 greatest() 的返回值為 null。
13) in
in 運算子用來判斷運算元是否為 in 列表中的乙個值。如果是,返回值為 1;否則返回值為 0。
14) not in
not in 運算子用來判斷表示式是否為 in 列表中的乙個值。如果不是,返回值為 1;否則返回值為 0。
邏輯運算子
在 sql 語言中,所有邏輯運算子求值所得的結果均為 true、false 或 null。在 mysql 中分別體現為 1(true)、0(false)和 null。
mysql 中的邏輯運算子如下表所示。
邏輯運算子
說明not 或者 !
邏輯非and 或者 &&
邏輯與or 或者 ||
邏輯或xor
邏輯異或
下面分別介紹不同的邏輯運算子的使用方法。
1) not 或者 !
邏輯非運算子 not 或者 !,表示當運算元為 0 時,返回值為 1;當運算元為非零值時,返回值為 0;當運算元為 null 時,返回值為 null。
2) and 或者 &&
邏輯與運算子 and 或者 &&,表示當所有運算元均為非零值並且不為 null 時,返回值為 1;當乙個或多個運算元為 0 時,返回值為 0;其餘情況返回值為 null。
3) or 或者 ||
邏輯或運算子 or 或者 ||,表示當兩個運算元均為非 null 值且任意乙個運算元為非零值時,結果為 1,否則結果為 0;當有乙個運算元為 null 且另乙個運算元為非零值時,結果為 1,否則結果為 null;當兩個運算元均為 null 時,所得結果為 null。
4) xor
邏輯異或運算子 xor。當任意乙個運算元為 null 時,返回值為 null;對於非 null 的運算元,若兩個運算元都不是 0 或者都是 0 值,則返回結果為 0;若乙個為 0,另乙個不為非 0,則返回結果為 1。
位運算子
位運算子是用來對二進位制位元組中的位進行移位或者測試處理的。
mysql 中提供的位運算子如下表所示。
位運算子
說明按位或
按位與按位異或
按位左移
按位右移
按位取反,反轉所有位元
下面分別介紹不同的位運算子的使用方法。
1) 位或運算子「|」
位或運算的實質是將參與運算的兩個資料按對應的二進位制數逐位進行邏輯或運算。若對應的二進位制位有乙個或兩個為 1,則該位的運算結果為 1,否則為 0。
2) 位與運算子「&」
位與運算的實質是將參與運算的兩個資料按對應的二進位制數逐位進行邏輯與運算。若對應的二進位制位都為 1,則該位的運算結果為 1,否則為 0。
3) 位異或運算子「^」
位異或運算的實質是將參與運算的兩個資料按對應的二進位制數逐位進行邏輯異或運算。對應的二進位制位不同時,對應位的結果才為 1。如果兩個對應位都為 0 或者都為 1,則對應位的結果為 0。
4) 位左移運算子「<
位左移運算子「<
語法格式為表示式<
5) 位右移運算子「>>」
位右移運算子「>>」使指定的二進位制值的所有位都右移指定的位數。右移指定位數之後,右邊高位的數值將被移出並丟棄,左邊低位空出的位置用 0 補齊。
語法格式為表示式》n,這裡 n 指定值要移位的位數。
6) 位取反運算子「~」
位取反運算子的實質是將參與運算的資料按對應的二進位制數逐位反轉,即 1 取反後變 0,0 取反後變為 1。
運算子的優先順序決定了不同的運算子在表示式中計算的先後順序,下表列出了 mysql 中的各類運算子及其優先順序。
優先順序由低到高排列
運算子=(賦值運算)、:=
ii、or
xor&&、and
notbetween、case、when、then、else
=(比較運算)、<=>、>=、>、<=、、!=、 is、like、regexp、in
-(減號)、+
-(負號)、〜(位反轉)
可以看出,不同運算子的優先順序是不同的。一般情況下,級別高的運算子優先進行計算,如果級別相同,mysql 按表示式的順序從左到右依次計算。
另外,在無法確定優先順序的情況下,可以使用圓括號「()」來改變優先順序,並且這樣會使計算過程更加清晰。
mysql 運算子轉義 mysql常用運算子
一 算數運算子 加法 減法 乘法 除法 返回餘數 二 比較運算子 等於 或 不等於 等於 這裡是安全的等於 例如 select null null 結果是1,如果是select null null 結果是null,有時候會報錯程式 between 存在於指定範圍 舉例 select 10 betwe...
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 5 2,mod 5,2 2.比較運算子 等於 mysql...
mysql 位運算 MySQL資料運算
資料查詢不只是簡單地返回資料庫中儲存的資料,還要根據業務需求對資料進行運算和篩選,以及確定以什麼樣的形式顯示查詢結果。通常情況下資料庫中的原始資料並不是我們所需要的,一般需要我們在查詢資料的同時對資料進行運算和轉換。語法 select 表示式1 表示式2 表示式n from 表名 示例 將每位員工的...