演算子MySQLの
MySQLデータベースのテーブル構造を確立した後、テーブルに表されるデータの重要性が確認されています。MySQLの操作オペレータによって実行される、あなたはテーブル構造以外の別のデータを取得することができます。
1)算術演算子
加算、減算、乗算、除算:などの算術演算を実行します。
2)比較演算子
それに等しいかまたは等しくない、など、より小さい、より大きい含みます。主に比較値のために使用され、その文字列マッチングに。たとえば:LIKE、IN、間がnullで、さらにREGEXP正規表現を構成する他のすべての比較演算子は、比較演算子です。
3)論理演算子
含むAND、OR、XOR、および他の非論理演算子。誰の戻り値はtrue(1または真)のブール値と偽の値(0またはfalse)です。
4)ビット演算子
これは、ビット単位のAND、ビット単位のOR、ビット単位、ビット単位のXOR、ビット単位の左シフトと右シフトビット対立演算子を含みます。ビット単位の第1の2値データに変換し、バイナリ形式で動作する必要があり、操作が完了した後、バイナリ値は、元の型に、ユーザに返さ。
算術演算子
算術演算子 | 説明 |
---|---|
+ | 追加 |
- | 引き算 |
* | 乗算 |
/ | 部門は、商を返します。 |
% | モジュロ演算は、剰余を返します |
比較演算子
比較演算子 | 説明 |
---|---|
= | 等しいです |
< | 以下 |
<= | 以下 |
> | より大きい |
> = | 以上 |
<=> | セキュリティは、等しいUNKNOWN戻りません |
<>または!= | 等しくありません |
NULL或ISNULL IS | 値がNULLであるかどうかを決定します |
NULLではありません | 値がNULLでないかどうかを判断します |
LEAST | 二つ以上の引数がある場合は、最小値を返します。 |
最高の | リターンの2つの以上のパラメータがあり、最大値 |
間 | 値を決定することは、二つの値の間にあります |
に | 判定値は、リスト内の任意の値であり、 |
ありませんで | INリストの値以外の任意の値を分析します |
好む | ワイルドカードのマッチング |
REGEXP | 正規表現マッチ |
以下は、比較演算子の異なる方法の使用を記載します。
1)「=」演算子と同じです
等号の数を決定するために使用される、「=」記号、文字列と式が等しいです。等しい場合、戻り値は、それ以外の場合は0の値を返し、1です。
データは、以下のルールを比較すると:
- 一つまたは二つのパラメータの結果がNULLの場合は、比較演算はNULLです。
- 二つのパラメータとの比較動作が文字列である場合、文字列が比較による。
- 両方の引数は、整数比較に基づいて、正である場合。
- 数字が文字列と決定等しい場合、MySQLは自動的に番号に文字列を変換することができます。
2)安全性は、オペレータに等しい「<=>」
二つの表現の比較のための値。二つの式の値がnull値を持っているか、値がnullの場合は、UNKNOWNに戻ります。
FALSEに比べ、同等ではなく、前記値がヌルまたは非ヌル値である場合、ない;演算子「<=>」、2つの式が互いに又はヌル値に等しいと等しいとき、比較結果がTRUEであるためUNKNOWN状況が発生します。
3)オペレータと等しくない「<>」または「!=」
「<>」や「!=」数値、文字列、不平等な表現決意のために。等しくない場合、戻り値は1で、それ以外の場合は0の値を返します。使用されないことができる2つのオペレータは、決定されたヌル(NULL)です。
4)以下演算子「<=」と等しいです
「<=」は、左側のオペランドが右のオペランド以下であるか否かを決定するために使用されます。戻り値以下であることは1であり、それ以外の場合は0の値を返します。「<=」null値を決定するために使用することはできません。
5)オペレータ未満の「<」
「<」左オペランドを決定するために、右のオペランド以下です。未満の場合、戻り値は1で、それ以外の場合は0の値を返します。「<」ではないnullを決定するために。
6)オペレータ以上です「> =」
「> =」左のオペランドが右のオペランド以上であるか否かを判断します。戻り値以上が1である場合、それ以外の場合は0の値を返します。「> =」NULL値を決定するために使用することはできません。
7)「>」演算子よりも大きいです
「>」左オペランドを決定するために、右のオペランドより大きい。そうである場合、戻り値は1で、それ以外の場合は0の値を返します。「>」NULL値を決定するために使用することはできません。
8))NULL(またはISNULL
NULL ISNULLであり、値がNULLであるかどうかをチェックするため、NULL場合、戻り値は1で、それ以外の場合は0の値を返します。
9)NULLではありません
非NULL、戻り値が1であれば値が非NULLであるかどうかをNULLテストされていない、それ以外の場合は0の値を返します。
10)BETWWENと
構文は次のとおりです。
<式> <分>と<最大値> BETWEEN
もし<表达式>
より大きいか等しい<最小值>
とより小さいか等しい<最大值>
そうでなければ0の値は、1との間の戻り値、。
11)LEAST
構文は次のとおりです。
LEAST(<値1>、<値2>、...、<値N>)
nは、パラメータ・リストの値を表し、nの値を有しています。どこに二つ以上の引数が、最小値を返します。いずれかの引数がNULLの場合、()LEASTは、NULLの値を返します。
12)GREATEST
構文は次のとおりです。
GREATEST(<値1>、<値2>、...、<値N>)
nは、パラメータ・リストの値を表し、nの値を有しています。どこに二つ以上の引数が、最大値を返します。いずれかの引数がNULLの場合、GREATEST()NULLの値を返します。
13)
演算子のオペランドは、リスト内の値であるかどうかを決定するために使用されます。そうである場合、戻り値は1で、それ以外の場合は0の値を返します。
14)NOT IN
演算子式のINリストの値を決定するために使用されるわけではありません。そうでない場合、戻り値は1で、それ以外の場合は0を返します。
論理演算子
SQL言語では、得られたすべての論理演算子は、TRUE、FALSE、またはNULLを評価します。MySQLでは1(TRUE)、0(FALSEとして具現化される ) 、及びNULL。
次の表のMySQLの論理演算子。
論理演算子 | 説明 |
---|---|
またはNOT! | 論理否定 |
ANDまたは&& | ロジックと |
ORまたは|| | 論理または |
XOR | 論理XOR |
以下は、異なる論理演算子の使用を記載しています。
1)NOTまたは!
!論理否定演算子NOTまたはオペランドが0の場合を示し、戻り値は1であり、オペランドが非ゼロである場合、戻り値は0であり、オペランドがNULLである場合、戻り値はNULLです。
2)ANDまたは&&
論理演算子ANDとORが&&すべてのオペランドが非ゼロ値である場合を示し、NULLでない場合、戻り値は1であり、一つ以上のオペランドがゼロである場合、戻り値は0であり、戻り値以外の場合NULL。
3)ORまたは||
または論理演算子ORまたは||は、そうでなければ結果は0であり、結果は1であり、両方のオペランドが非NULL値であり、いずれかのオペランドが非ゼロである場合を表し;一方のオペランド、他方がNULLである場合オペランドが非ゼロである場合、結果は、そうでなければ結果はNULLである、1であり、両方のオペランドがNULLである場合、得られた結果はNULLです。
4)XOR
排他的論理和演算XOR。いずれかのオペランドがNULLである場合、戻り値はNULLである;非NULLのオペランド、どちらのオペランドは、結果が0に戻され、0の値であるか、または0である場合、0である場合、他のではありません非0、返される結果は1です。
ビット演算子
ビットバイナリ演算子は、バイトまたはテストプロセスのビットをシフトするために使用されます。
以下の表に提供するMySQLのビット演算子。
ビット演算子 | 説明 |
---|---|
| | ビットごとのOR |
& | ビットAND |
^ | ビットごとのXOR |
<< | ビット単位の左シフト |
>> | ビット単位の右シフト |
〜 | 全ビットのビット単位の反転 |
以下は、異なるビット演算子の使用を記載しています。
1)ビット単位のOR演算子 "|"
エッセンスビット単位のORビットによって対応するバイナリビットによってOR演算ティングに関与する2つのデータ。対応するビットが1または2である場合、1ビットの演算結果がそうでなければ0です。
2)演算子「&」を位置付けます
ビットによって対応するバイナリビットによって行われる論理AND演算を計算する際に関与するデータ操作の2ビットの本質。対応するビットが1である場合、1ビットの演算結果がそうでなければ0です。
3)ビットごとの排他的論理和演算子「^」
実質的なビットXOR演算は、ビットによって、対応するバイナリビットによって2つのデータ排他的論理和演算を計算に関与しています。対応するビットは、ビットを対応するとき、結果が1で、異なっています。対応する2つのビットが0または1の両方である場合、結果の対応するビットはゼロです。
4)ビット単位の左シフト演算子「<<」
位左移运算符“<<”使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐。
语法格式为表达式<<n
,这里 n 指定值要移位的位数。
5) 位右移运算符“>>”
位右移运算符“>>”使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边高位的数值将被移出并丢弃,左边低位空出的位置用 0 补齐。
语法格式为表达式>>n
,这里 n 指定值要移位的位数。
6) 位取反运算符“~”
位取反运算符的实质是将参与运算的数据按对应的二进制数逐位反转,即 1 取反后变 0,0 取反后变为 1。
运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级。
优先级由低到高排列 | 运算符 |
---|---|
1 | =(赋值运算)、:= |
2 | II、OR |
3 | XOR |
4 | &&、AND |
5 | NOT |
6 | BETWEEN、CASE、WHEN、THEN、ELSE |
7 | =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN |
8 | | |
9 | & |
10 | <<、>> |
11 | -(减号)、+ |
12 | *、/、% |
13 | ^ |
14 | -(负号)、〜(位反转) |
15 | ! |
可以看出,不同运算符的优先级是不同的。一般情况下,级别高的运算符优先进行计算,如果级别相同,MySQL 按表达式的顺序从左到右依次计算。
另外,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。
MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定。而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据。
1) 算术运算符
执行算术运算,例如:加、减、乘、除等。
2) 比较运算符
包括大于、小于、等于或者不等于,等等。主要用于数值的比较、字符串的匹配等方面。例如:LIKE、IN、BETWEEN AND 和 IS NULL 等都是比较运算符,还包括正则表达式的 REGEXP 也是比较运算符。
3) 逻辑运算符
包括与、或、非和异或等逻辑运算符。其返回值为布尔型,真值(1 或 true)和假值(0 或 false)。
4) 位运算符
包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算必须先将数据转换为二进制,然后在二进制格式下进行操作,运算完成后,将二进制的值转换为原来的类型,返回给用户。
算术运算符
算术运算符 | 说明 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
比较运算符
比较运算符 | 说明 |
---|---|
= | 等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
<=> | 安全的等于,不会返回 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) 小于运算符“<”
“<”用来判断左边的操作数是否小于右边的操作数。如果小于,返回值为 1;否则返回值为 0。“<”不能用于判断空值。
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(<值1>,<值2>,…,<值n>)
其中,值 n 表示参数列表中有 n 个值。存在两个或多个参数的情况下,返回最小值。若任意一个自变量为 NULL,则 LEAST() 的返回值为 NULL。
12) GREATEST
语法格式为:
GREATEST (<值1>,<值2>,…,<值n>)
其中,值 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) 位左移运算符“<<”
位左移运算符“<<”使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐。
语法格式为表达式<<n
,这里 n 指定值要移位的位数。
5) 位右移运算符“>>”
位右移运算符“>>”使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边高位的数值将被移出并丢弃,左边低位空出的位置用 0 补齐。
语法格式为表达式>>n
,这里 n 指定值要移位的位数。
6) 位取反运算符“~”
位取反运算符的实质是将参与运算的数据按对应的二进制数逐位反转,即 1 取反后变 0,0 取反后变为 1。
运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级。
优先级由低到高排列 | 运算符 |
---|---|
1 | =(赋值运算)、:= |
2 | II、OR |
3 | XOR |
4 | &&、AND |
5 | NOT |
6 | BETWEEN、CASE、WHEN、THEN、ELSE |
7 | =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN |
8 | | |
9 | & |
10 | <<、>> |
11 | -(减号)、+ |
12 | *、/、% |
13 | ^ |
14 | -(负号)、〜(位反转) |
15 | ! |
可以看出,不同运算符的优先级是不同的。一般情况下,级别高的运算符优先进行计算,如果级别相同,MySQL 按表达式的顺序从左到右依次计算。
另外,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。