mysql 常见运算符

        学习了mysql数据类型,接下来学习mysql常见运算符。        

2,常见运算符介绍

        运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。运用运算符

可以更加灵活地使用表中的数据,常见的运算符类型有:算术运算符,比较运算符,逻辑运算

符,位运算符。

1,运算符概述

        运算符是告诉 MySQL 执行特定算术或逻辑操作的符号。MySOL 的内部运算符很丰富。主要有四大类,分别是:算术运算符、比较运算符、逻辑运算符、位操作运算符。

1,算术运算符

        算术运算符用于各类数值运算,包括加(+)、减(-)、乘 (*)、除(/)、求余(或称模运算,%)。

2,比较运算符

        比较运算符用于比较运算。包括大于(>)、小于(<)、等于(=)、大于等于(>=)

        小于等于(<=)、不等于(!=),以及INBETWEEN AND、IS NULL、GREATESTLEAST

LIKEREGEXP 等。

3,逻辑运算符

        逻辑运算符的求值所得结果均为1(TRUE)、0(FALSE),这类运算符有逻辑非(NOT或者!)、逻辑与(AND 或者&&)、逻辑或(OR 或者)、辑异或(XOR)。

4,位操作运算符

        位操作运算符参与运算的操作数按二进制位进行运算。包括位与(&、位或()、位非(~)、位异或 (^)、左 (<<)、右移(>>)6种。

2,算术运算符

        算术运算符是SQL中最基本的运算符,MySQL中的算术运算符如表10所示

                                表10 MySQL中的算术运算符

运算符

作用

+

加法运算

-

减法运算

*

乘法运算

除法运算,返回商

%

求余运算,返回余数

        [例26]创建表tmp14,定义数据类型为INT的字段num,插入值64,对num 值进行算术运算:

首先创建表tmpl4,输入语句如下:

CREATE TABLE tmp14 (num INT);

向字段num插入数据64:

INSERT INTO tmp14 value(64);

接下来,对num 值进行加法和减法运算:

SELECT num, num+10, num-3+5, num+5-3, num+36.5 FROM tmp14;

        

        由计算结果可以看到 可以对 num 字段的值进行加法和减法的运算而且由于'+'和'-'的优先级相同,因此先加后减,或者先减后加之后的结果是相同的。

        【例27】对tmp14表中的num 进行乘法、除法运算。

SELECT num, num*2, num/2, num/3, num%3 FROM tmp14;

        由计算结果可以看到,对 num 进行除法运算时候,由于 64 无法被3 整除,因此MySQL

对 num/3 求商的结果保存到了小数点后面四位,结果为 21.3333:64 除以3 的余数为1,因此

取余运算num%3的结果为1。

        在数学运算时,除数为0的除法是没有意义的,因此除法运算中的除数不能为 0,如果被0除,则返回结果为NULL。

        【例28】用0除num。

SELECT num, num/0, num%0 FROM tmp14;

        由计算结果可以看到,对num进行除法求商或者求余运算的结果均为 NULL

3,比较运算符

        一个比较运算符的结果总是10或者是NULL,比较运算符常在SELECT 的查询条子句中使用,用来查询满足指定条件的记录。MySQL 中比较运算符如表11 所示。

                        表11 MySQL中的比较运算符

运算符

作用

=

等于

<=>

安全的等于

<>(!=)

不等于

<=

小于等于

>=

大于等于

>

大于

IS NULL

判断一个值是否为NULL

IS NOT NULL

判断一个值是否不为NULL

LEAST

在有两个或多个参数时,返回最小值

GREATEST

当有两或多个参数时,返回最大值

BETWEEN AND

判断一个值是否落在两个值之间

ISNULL

与IS NULL作用相同

IN

判断一个值是IN列表中的任意一个值

NOT IN

判断一个值不是N列表中的任意一个值

LIKE

通配符匹配

REGEXP

正则表达式匹配

等于运算符(=)

        等号(=)用来判断数字、字符串和表达式是否相等。如果相等,返回值为 1,否则返回值为0。

       【例29】使用“=’进行相等判断,SQL语句如下:

SELECT 1=0, '2'=2, 2=2, '0.02'=0, 'b'='b', (1+3)= (2+2), NULL=NULL;

        由结果可以看到,在进行判断时,2-2 和“2’=2 的返回值相同,都为 1。因为在进行判断时,MySQL 自动进行了转换,把字符“2’转换成了数字2:“b’=“b’为相同的字符比较,因此返回值为1;表达式 1+3 和表达式22的结果都为4,因此结果相等,返回值为1

        由于“=’不能用于空值NULL的判断,因此返回值为 NULL。

数值比较时有如下规则:

        (1)若有一个或两个参数为 NULL,则比较运算的结果为 NULL。

        (2)若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较

        (3)若两个参数均为整数,则按照整数进行比较。

        (4)若一个字符串和数字进行相等判断,则 MySQL 可以自动将字符串转换为数字。

安全等于运算符(<=>)

        这个操作符和-操作符执行相同的比较操作,不过<=>可以用来判断 NULL 值。在两个操作数均为 NULL 时,其返回值为1而不为 NULL;而当一个操作数为 NULL 时,其返回值为0而不为 NULL。

不等于运算符(<>或者 != )

        '<>’或者'!=’用于判断数字、字符串、表达式不相等的判断。如果不相等,返回值为 1;否则返回值为 0。这两个运算符不能用于判断空值 NULL。

        [例31]使用'<>'和‘!=’进行不相等的判断,SOL语句如下:

SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, (1+3)!=(2+1), NULL<>NULL;

        

        由结果可以看到,两个不等于运算符作用相同,都可以进行数字、字符串、表达式的比较判断。

小于或等于运算符(<=)

        '<=’用来判断左边的操作数是否小于或者等于右边的操作数。如果小于或者等于,返回值为 1,否则返回值为 0。'<=’不能用于判断空值 NULL。

        [例32]使用'<=’进行比较判断,SQL语句如下:

SELECT 'good'<='god', 1<=2, 4<=4, 5.5<=5, (1+3)<= (2+1), NULL<=NULL;

        由结果可以看到,左边操作数小于或者等于右边时,返回值为 1,例如:4<=4;当左边操作数大于右边时,返回值为 0,例如:“good’第3个位置的o’字符在字母表中的顺序大于“god’中的第3个位置的d’字符,因此返回值为0;同样比较NULL值时返回 NULL

小于运算符(<)

        '<’运算符用来判断左边的操作数是否小于右边的操作数,如果小于,返回值为 1;否则返回值为 0。'<’不能用于判断空值 NULL。

        [例33]使用'<’进行比较判断,SQL语句如下:

SELECT 'good'<'god', 1<2, 4<4, 5.5<5, (1+3) < (2+1), NULL<NULL;

        

        由结果可以看到,当左边操作数小于右边时,返回值为 1,例如:1<2;当左边操作数大于右边时,返回值为0。例如:“good’第3 个位置的’字符在字母表中的顺序大于'god'中的第3个位置的d’字符,因此返回值为0;同样比较NULL值时返回NULL。

大于或等于运算符(>=)

        '>=’运算符用来判断左边的操作数是否大于或者等于右边的操作数,如果大于或者等于,返回值为 1;否则返回值为 0。'>=’不能用于判断空值 NULL。

        [例34]使用“>=’进行比较判断,SOL语句如下:

 SELECT 'good'>='god', 1>=2, 4>=4, 5.5>=5, (1+3)>= (2+2), NULL>=NULL;

        由结果可以看到,左边操作数大于或者等于右边时,返回值为 1,例如:4>-4;当左边操作数小于右边时,返回值为 0,例如:1>=2;同样比较NULL 值时返回 NULL。

大于运算符(>)

        '>’运算符用来判断左边的操作数是否大于右边的操作数,如果大于,返回值为 1;否则返回值为0。“>’不能用于判断空值NULL。

        [例35]使用'>'进行比较判断,SQL 语句如下:

SELECT 'good'>'god', 1>2, 4>4, 5.5>5, (1+3)>(2+1), NULL>NULL;

        由结果可以看到,左边操作数大于右边时,返回值为 1,例如:5.5>5;当左边操作数小于右边时,返回0,例如:1>2;同样比较NULL值时返回 NULL。

IS NULL(ISNULL),IS NOT NULL 运算符

        IS NULL和ISNULL检验一个值是否为 NULL,如果为 NULL,返回值为1。否则返回值为0;IS NOTNULL检验一个值是否为非 NULL,如果是非 NULL,返回值为1;否则返回值为0。

        [例36]使用IS NULL、ISNULL和IS NOT NULL 判断 NULL 值和非 NULL值,SQL语句如下:

SELECT NULL IS NULL, ISNULL(NULL), ISNULL(10), 10 IS NOT NULL;

        由结果可以看到,IS NULL和ISNULL 的作用相同,只是格式不同。ISNULL和IS NOT

NULL的返回值正好相反。

BETWEEN AND 运算符

        语法格式为:

expr BETWEEN min AND max

假如expr 大于或等于 min 且小于或等于 max则 BETWEEN 的返回值为 1,否则返回值为 0

        [例37]使用 BETWEEN AND 进行值区间判断,输入 SQL语如下

SELECT 4 BETNEEN 2 AND 5, 4 BETWEEN 4 AND 6, 12 BETWEEN 9 AND 10;

        由结果可以看到,4 在端点值区间内或者等于其中一个端点值时,BETWEEN AND 表达式返回值为1。12 并不在指定区向内,因此这回值为0;对于学符串类型的比较,按字表中字母顺序进行比较,“x’不在指定的字母区间内,因此返回值为 0,而'b’位于指定字母区间内,因此返回值为 1。

LEAST运算符

        语法格式为:LEAST(值 1,值 2.值n),其中值n 表示参数列表中有 个值,在有两个或多个参数的情况下,返回最小值假如任意一个自变量为NULL,则LEASTO的返回值为NULL。

        【例38】使用 LEAST 运算符进行大小判断,SOL语句如下

SELECT LEAST(2, 0), LEAST(20.0, 3.0, 100.5), 
LEAST('a','c', 'b'), LEAST(0, NULL);

        由结果可以看到,当参数中是整数或者浮点数时,LEAST 将返回其中最小的值,当参数

为字符串时,返回字母表中顺序最靠前的字符:当比较值列表中有 NULL 时,不能判断大小,

返回值为NULL。

GREATEST (value1,value2,...)

        语法格式为:GREATEST(值 1,值 2,值 n),其中 n 表示参数列表中有 n 个值,当有2个或多个参数时,返回值为最大值,假如任意一个自变量为 NULL,则GREATESTO的返回值为NULL。

        【例39】使用 GREATEST 运算符进行大小判断,SQL 语句如下:

SELECT greatest(2, 0), greatest(20.0, 3.0, 100.5), 
​​​​​​​greatest('a', 'c', 'b'), greatest(0, NULL);

        由结果可以看到,当参数中是整数或者浮点数时,GREATEST 将返回其中最大的值;当参数为字符串时,返回字母表中顺序最靠后的字符;当比较值列表中有 NULL 时,不能判断大小,返回值为 NULL.

IN、NOT IN 运算符

        IN 运算符用来判断操作数是否为 IN 列表中的其中一个值,如果是,返回值为 1;否则返回值为 0。

        NOT IN 运算符用来判断表达式是否为IN 列表中的其中一个值,如果不是,返回值为 1;否则返回值为 0。

        [例40] 使用IN、NOT IN 运算符进行判断,SQL语句如下

 SELECT 2 IN (1,3,5,'thks'), 'thks' IN (1, 3, 5, 'thks');

        

        由结果可以看到,IN 和NOT IN 的返回值正好相反。

        在左侧表达式为 NULL 的情况下,或是表中找不到匹配项并且表中一个表达式为 NULL的情况下,IN 的返回值均为 NULL。

        [例41]存在 NULL 值时的IN 查询,SQL 语如下

SELECT NULL IN (1, 3, 5, 'thks'), 10 IN(1, 3, NULL, 'thks');

        IN()语法也可用于在 SELECT 语句中进行套子查询

LIKE

        LIKE 运算符用来匹配字符串,语法格式为:expr LIKE 匹配条件,如果 expr 满是匹配条件,则返回值为1(TRUE:如果不匹配,则返回值为 0(FALSE)。若 expr 或匹配条件中任何一个为NULL,则结果为 NULL。

LIKE 运算符在进行匹配时,可以使用下面两种通配符:

(1)'%’,匹配任何数目的字符,甚至包括零字符。

(2)'-' ,只能匹配一个字符。

        [例42]使用运算符 LIKE 进行字符申匹配运算,SQL语句如下

SELECT 'stud' LIKE 'stud', 'stud' LIKE  'stu_', 'stud' LIKE '%d%', 'stud'
LIKE 't___', 's' LIKE NULL;

        由结果可以看到,指定匹配字符串为“stud”。“stud”表示直接匹配“stud”字符串,满足匹配条件,返回1;“stu_”表示匹配以stu开头的长度为4个字符的字符串,“stud”正好是4个字符,满足匹配条件,因此匹配成功,返回1;“%d”表示匹配以字母“d”结尾的字符串,“stud”满足匹配条件,匹配成功,返回1;“t___”表示匹配以‘t’开头的长度为4个字符的字符串,“stud”不满足匹配条件,因此返回0;当字符‘s’与NULL匹配时,结果为NULL。

REGEXP

        REGEXP运算符用来匹配字符串,语法格式为: expr REGEXP匹配条件,如果 expr满足匹配条件,返回1;如果不满足,则返回0;若expr 或匹配条件任意一个为NULL,则结果为NULL。

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

(1)‘^’匹配以该字符后面的字符开头的字符串。

(2)‘$’匹配以该字符后面的字符结尾的字符串。

(3)‘.’匹配任何一个单字符。

(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。

(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符。

        【例43】使用运算符REGEXP进行字符串匹配运算,SQL语句如下:

 SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky ', 'ssky' REGEXP '[ab]';

由结果可以看到,指定匹配字符串为“ssky”。

        “^s”表示匹配任何以字母‘s’开头的字符串,因此满足匹配条件,返回1;

        “y$”表示任何以字母“y”结尾的字符串,因此满足匹配条件,返回1;

        “.sky”匹配任何以“sky”结尾,字符长度为4的字符串,满足匹配条件,返回1;

        “[ab]”匹配任何包含字母‘a’或者‘b’的字符串,指定字符串中没有字母‘a’也没有字母‘b’,因此不满足匹配条件,返回0。

        提示:正则表达式是一个可以进行复杂查询的强大工具,相对于LIKE字符串匹配,它可以使用更多的通配符类型,查询结果更加灵活。

4,逻辑运算符

        在SQL 中,所有逻辑运算符的求值所得结果均为TRUE、FALSE 或NULL。在 MySQL中,它们体现为1(TRUE)、0(FALSE)和 NULL。其大多数都与不同的数据库SQL通用,MySQL中的逻辑运算符如表12所示。

                                        表12 MySQL中的逻辑运算符

运算符

作用

NOT 或者 !

逻辑非

AND 或者 &&

逻辑与

OR 或者 ||

逻辑或

XOR

逻辑异或

1,NOT 或者 !

        逻辑非运算符NOT 或者!表示当操作数为0时,所得值为1;当操作数为非零值时,所得值为0;当操作数为NULL时,所得的返回值为NULL。

        【例44】分别使用非运算符“NOT”和“!”进行逻辑判断,SQL语句如下:

SELECT NOT 10, NOT (1-1), NOT -5, NOT NULL, NOT 1 +13;

SELECT !10, !(1-1), !-5, !NULL, !1+1;

        由结果可以看到,前4列“NOT”和“!”的返回值都相同。但是注意最后1列,为什么会出现不同的值呢?这是因为“NOT”与“!”的优先级不同。“NOT”的优先级低于“+”,因此“NOT 1+1”相当于“NOT(1+1)”,先计算“1+1”,然后再进行NOT运算,因为操作数不为0,因此NOT 1+1 的结果是0;相反,由于“!”的优先级别要高于“+”运算,,因此“!1+1”相当于“(!1)+1”,先计算“!1”结果为0,再加1,最后结果为1。

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

2,AND或者&&

        逻辑与运算符AND或者&&表示当所有操作数均为非零值、并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0,其余情况返回值为NULL。

        【例45】分别使用与运算符“AND”和“&&”进行逻辑判断,SQL语句如下:

SELECT 1 AND -1,1 AND 0,1 AND NULL, 0 AND NULL;

SELECT 1 && -1, 1 && 0, 1 && NULL, 0 && NULL;

     

          由&结果可以看到,“AND”和“&&”的作用相同。“1 AND -1”中没有0或者NULL,因此结果为1;“1AND O”中有操作数0,因此结果为0“1AND NULL”中虽然有NULL但是没有操作数0,返回结果为NULL。

        “AND”运算符可以有多个操作数,但要注意:多个操作数运算时,AND两边一定要使用空格隔开,不然会影响结果的正确性。

3,OR或者Ⅱ

        逻辑或运算符OR或者|表示当两个操作数均为非NULL值,且任意一个操作数为非零值时,结果为1,否则结果为0:当有一个操作数为NULL,且另一个操作数为非零值时,则结果为1,否则结果为NULL;当两个操作数均为NULL时,则所得结果为NULL。

        【例46】分别使用或运算符“OR”和“II”进行逻辑判断,SQL语句如下:

SELECT 1 OR -1 OR 0, 1 OR 2,1 OR NULL, 0 OR NULL, NULL OR NULL;

SELECT  1 || -1 || 0, 1 || 2, 1 || NULL, 0 || NULL, NULL || NULL;

​​​​​​​

        由结果可以看到,“OR”和“I”的作用相同。“1 OR-1 OR 0”中有0,但同时包含有非0的值1和-1,返回结果为1;“1 OR2”中没有操作数О,返回结果为1;“1 OR NULL”中虽然有NULL,但是有操作数1,返回结果为1;“0 OR NULL”中没有非О值,并且有NULL,返回结果为NULL;“NULL OR NULL”中只有NULL,返回结果为NULL.

4,XOR

        逻辑异或运算符XOR。当任意一个操作数为NULL时,返回值为NULL;对于非 NULL的操作数,如果两个操作数都是非О值或者都是0值,则返回结果为0;如果一个为0值,另一个为非0值,返回结果为1。

        【例47】使用异或运算符“XOR”进行逻辑判断,SQL语句如下:

SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1;

执行上面的语句

       由结果可以看到,“1XOR 1”和“0 XOR 0”中运算符两边的操作数都为非零值,或者都是零值,因此返回0;“1 XOR 0”中两边的操作数,一个为0值,另一个为非О值,返回结果为1“1XOR NULL”中有一个操作数为NULL返回结果为NULL“1XOR 1 XOR 1”中有多个操作数,运算符相同,因此运算顺序从左到右依次计算,“1 XOR 1”的结果为0,再与1进行异或运算,因此结果为1。

        提示: a XOR b的计算等同于(a AND (NOT b))或者((NOT a) AND b)。

5,位运算符

        位运算符是用来对二进制字节中的位进行测试、移位或者测试处理,MySQL中提供的位运算符有按位或(()﹐按位与(&),按位异或(^),按位左移(<<),按位右移(>>) ,按位取反(~),如表13所示。

                                        表13 MySQL中的位运算符

运算符

作用

|

位或

&

位与

^

位异或

<<

位左移

>>

位右移

~

位取反,反转所有比特

1,位或运算符(|)

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

        【例48】使用位或运算符进行运算,SQL语句如下:

SELECT 10|15, 9|4|2;

        

        10的二进制数值为1010,15的二进制数值为1111,按位或运算之后,结果为1111,即整数15;9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位或运算之后,结果为1111,即也是整数15。其结果为一个64位无符号整数。

2,位与运算符(&)

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

        【例49】使用位与运算符进行运算,SQL语句如下:

SELECT 10&15, 9&4&2;

        10 的二进制数值为1010,15 的二进制数值为1111,按位与运算之后,结果为1010,即整数10;9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位与运算之后,结果为0000,即整数0。其结果为一个64位无符号整数。

3,位异或运算符(^)

        位异或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑异或运算。对应位的二进制数不同时,对应位的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。

【例50】使用位异或运算符进行运算,SQL语句如下:

SELECT 10^15, 1^0, 1^1;

        ​​​​​​​

        10的二进制数值为1010,15的二进制数值为1111,按位异或运算之后,结果为0101,即整数5;1的二进制数值为0001,0的二进制数值为0000,按位异或运算之后,结果为0001;1和1本身二进制位完全相同,因此结果为0。

4,位左移运算符(<< )

        位左移运算符<<使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用0补齐。语法格式为: expr<<n。这里n指定值 expr要移位的位数。

        【例51】使用位左移运算符进行运算,SQL语句如下:

SELECT 1<<2, 4<<2;

        1的二进制值为0000 0001,左移两位之后变成0000 0100,即十进制整数4;十进制4左移两位之后变成0001 0000,即变成十进制的16。

5,位右移运算符(>> )

        位右移运算符>>使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被移出并丢弃,左边高位空出的位置用О补齐。语法格式为: expr>>n。这里n指定值 expr要移位的位数。

        【例52】使用位右移运算符进行运算,SQL语句如下:

SELECT 1>>1, 16>>2;

        1的二进制值为0000 0001,右移1位之后变成0000 0000,即十进制整数0;16的二进制值为0001 0000右移两位之后变成0000 0100,即变成十进制的4。

6,位取反运算符(~)

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

        【例53】使用位取反运算符进行运算,SQL语句如下:

 SELECT 5&~1;

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

        提示:MySQL经过位运算之后的数值是一个64位的无符号整数,1的二进制数值表示为最右边位为1,其他位均为0,取反操作之后,除了最低位,其他位均变为1。

        可以使用 BINO函数查看1取反之后的结果,SQL语句如下:

 SELECT BIN(~1);

6,运算符的优先级

        运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,表14列出了MySQL中的各类运算符及其优先级。

                                表14运算符按优先级由低到高排列

优先级

运算符

最低

=(赋值运算),:=

||,OR

XOR

&&,AND

NOT

BETWEEN, CASE, WHEN,THEN, ELSE

=(比较运算),<=>,>=,>,<=,<,<>,!= , IS,LIKE, REGEXP,IN

|

&

<<, >>

-,十

*,/(DIV), %(MOD)

^

-(负号), ~(位反转)

最高

!

        可以看到,不同运算符的优先级是不同的。一般情况下,级别高的运算符先进行计算,如果级别相同,MySQL按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号() 来改变优先级,并且这样会使计算过程更加清晰。

3,运算符的使用

1,案例目的

        创建数据表,并对表中的数据进行运算操作,掌握各种运算符的使用方法。

        创建表 tmp15,其中包含VARCHAR类型的字段note和INT类型的字段price,使用运算符对表tmpl5中不同的字段进行运算;使用逻辑操作符对数据进行逻辑操作;使用位操作符对数据进行位操作。

使用数据表tmp15,首先创建该表,SQL语句如下:

CREATE TABLE tmp15 (note VARCHAR(100),price INT
);

向表中插入一条记录,note值为“Thisisgood”, price值为50,SQL语句如下:

INSERT INTO tmp15 VALUES ("Thisisgood",50);

2,案例操作过程

        对表tmp15中的整型数值字段price进行算术运算,执行过程如下:

SELECT price, price +10,price -10,price *2, price /2, price%3 FROM tmp15;

        对表tmp15中的整型数值字段price进行比较运算,执行过程如下:

SELECT price, price > 10, price<10, price != 10, 
price = 10, price<=>10, price <>10 
FROM tmp15;

        判断price值是否落在30~80区间;返回与70、30相比最大的值,判断price是否为IN列表(10,20,50,35)中的某个值,执行过程如下:

SELECT price, price BETWEEN 30 AND 80, 
GREATEST(price,70,30), price IN(10,20,50,35) 
FROM tmp15 ;

        对tmp15中的字符串数值字段note进行比较运算,判断表tmp15中note字段是否为空;使用LIKE判断是否以字母‘t’开头;使用REGEXP判断是否以字母‘y’结尾;判断是否包含字母‘g’或者‘m’,执行过程如下:

SELECT note, note IS NULL,note LIKE 't&',note REGEXP '$y',
note REGEXP'[gm] 'FROM tmp15 ;

        将price字段值与NULL、0进行逻辑运算,执行过程如下:

SELECT price, price && 1, price & NULL, price||0, price AND 0,
0 AND NULL, price OR NULL FROM tmp15 ;
 
SELECT price, !price,NOT NULL, price XOR 3,0 XOR NULL,price XOR 0
FROM tmp15 ;

        将price字段值与2、4进行按位与、按位或操作,并对price进行按位操作,执行过程如下:

SELECT price, price&2, price/4, -price FROM tmp15;

        将price字段值分别左移和右移两位,执行过程如下:

SELECT price, price<<2, price>>2 FROM tmp15;

4,疑问解答:

疑问1 : MySQL中如何使用特殊字符?

        诸如单引号('),双引号("),反斜线(\)等符号,这些符号在MySQL-中不能直接输入使用,否则会产生意料之外的结果。在MySQL中,这些特殊字符称为转义字符,在输入时需要以反斜线符号(’)开头,所以在使用单引号和双引号时应分别输入(V')或者(") ,输入反斜线时应该输入(I),其他特殊字符还有回车符(\r),换行符(n),制表符(ltab),退格符(lb)等。在向数据库中插入这些特殊字符时,一定要进行转义处理。

疑问2: MySQL中可以存储文件吗?

        MySQL中的BLOB和TEXT字段类型可以存储数据量较大的文件,可以使用这些数据类型存储图像、声音或者是大容量的文本内容,例如网页或者文档。虽然使用BLOB或者TEXT可以存储大容量的数据,但是对这些字段的处理会降低数据库的性能。如果并非必要,可以选择只储存文件的路径。

疑问3 :MySQL中如何执行区分大小写的字符串比较?

        在 Windows平台下,MySQL是不区分大小的,因此字符串比较函数也不区分大小写。如.果想执行区分大小写的比较,可以在字符串前面添加BINARY关键字。例如默认情况下,‘a'=‘A’返回结果为1,如果使用BNARY关键字,BINARY‘a’=‘A’结果为0,在区分大小写的情况下,‘a’与‘A’并不相同。

4,总结:

        逻辑运算符中比较运算法和逻辑运算符会用得比较多,其它的相对就很少。主要运算符的等级,在无法确定优先级的情况下,可以使用圆括号() 来改变优先级,并且这样会使计算过程更加清晰。

        上一篇: 《mysql 数据类型》

        下一篇: 《mysql 数学函数​​​​​​​》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290977.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

增强现实(AR)的开发工具

增强现实&#xff08;AR&#xff09;的开发工具涵盖了一系列的软件和平台&#xff0c;它们可以帮助开发者创造出能够将虚拟内容融入现实世界的应用程序。以下是一些在AR领域内广泛使用的开发工具。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎…

【最新版RabbitMQ3.13】Linux安装基于源码构建的RabbitMQ教程

前言 linux环境 安装方式有三种&#xff0c;我们这里使用源码安装 Linux下rpm、yum和源码三种安装方式简介 个人语雀首发教程&#xff1a;https://www.yuque.com/wzzz/java/kl2zn22b42svsc6b csdn地址: https://blog.csdn.net/u013625306/article/details/137151862 安装版本…

三菱Q系列PLC以太网TCP通讯FB块源码

三菱Q系列PLC的tcp通讯&#xff0c;客户端和服务器两个变量好用的FB块&#xff0c;调用块就可以实现通讯连接&#xff0c;不需要自己写程序&#xff0c;简单配置引脚就可以。该块还集成了断网&#xff0c;连接错误&#xff0c;发送接收数据错误报警等功能。具体功能见下面介绍.…

C语言最大公约数(辗转相除法)

输入两个整数&#xff0c;求他们的最大公约数&#xff1a; 如果我们不用辗转相除法的话&#xff0c;两个整数的最大公约数&#xff0c;我们就可以定义一个整数为两个整数中最小的那个数&#xff0c;然后两个整数一起除我们新定义的整数&#xff0c;如果都除尽了&#xff0c;这…

UE5数字孪生系列笔记(三)

C创建Pawn类玩家 创建一个GameMode蓝图用来加载我们自定义的游戏Mode新建一个Pawn的C&#xff0c;MyCharacter类作为玩家&#xff0c;新建一个相机组件与相机臂组件&#xff0c;box组件作为根组件 // Fill out your copyright notice in the Description page of Project Set…

备考ICA----Istio实验13---使用 Istio Ingress 暴露应用

备考ICA----Istio实验13—使用Istio Ingress TLS暴露应用 1. 环境部署 清理之前实验遗留,并重新部署httpbin服务进行测试 # 清理之前的环境 kubectl delete vs httpbin kubectl delete gw mygateway # 部署httpbin kubectl apply -f istio/samples/httpbin/httpbin.yaml 确认…

从vivo X Fold3看vivo“质”变

撰文 | 何玺 排版 | 叶媛 vivo的气质变了&#xff01;虽然依旧内敛、低调&#xff0c;但更自信、从容&#xff0c;气场也更强大。这是玺哥在本次vivo X Fold3系列新品发布会上的一个直观感受。 是什么改变了vivo的气质&#xff1f;产品&#xff1f;技术&#xff1f;又或是其他…

衰老抑制剂原知因起源金NMN热销,“海弗里克极限”将被打破?

美国著名生物学家列奥纳多 海弗里克 , 在 1961 年研究人类胎儿的细胞群体分裂次数时提出了著名的 " 海弗里克极限 " 理论。该理论认为 , 正常细胞分裂的周期是 2-3 年 , 分裂次数大概是 50 次 , 得出人类的极限寿命高达 150 岁。半个世纪后 , 世界上最长寿的人 , 打…

医院信管系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 系统功能…

阿里云实时计算Flink的产品化思考与实践【下】

摘要&#xff1a;本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。内容主要为以下五部分&#xff1a; 阿里云实时计算 Flink 产品化思考 产品化实践 SQL 产品化思考及实践 展望 接上篇&#xff1a;阿里云实时计算Flink的产品…

SD 修复 Midjourney 有瑕疵照片

Midjourney V6 生成的照片在质感上有了一个巨大的提升。下面4张图就是 Midjourney V6 生成的。 如果仔细观察人物和老虎的面部&#xff0c;细节真的很丰富。 但仔细观察上面四张图的手部细节&#xff0c;就会发现至少有两只手是有问题的。这也是目前所有 AI 绘图工具面临的问题…

DARTS-PT: RETHINKING ARCHITECTURE SELECTION IN DIFFERENTIABLE NAS

Rethinking Architecture Selection in Differentiable NAS 论文链接&#xff1a;https://arxiv.org/abs/2108.04392v1 项目链接&#xff1a;https://github.com/ruocwang/darts-pt ABSTRACT 可微架构搜索(Differentiable Neural Architecture Search, NAS)是目前最流行的网…

鸿蒙OS开发实例:【应用级别文件浏览器】

介绍 HarmonyOS的沙盒机制完全屏蔽了应用对手机公共存储空间的访问&#xff0c;安全性提高已不言而喻。 本篇文章的主要目的是为了能通过一个简单工具&#xff0c;可视化的让一个新手能相对轻松的学习文件&数据存储。HarmonyOS 应用开发工具DevEco Studio也没有提供读取存…

新能源汽车充电桩常见类型及充电桩站场的智能监管方案设计

随着新能源汽车市场的迅猛发展&#xff0c;充电桩作为支持其运行的基础设施&#xff0c;也呈现出多样化的类型。这些充电桩不仅在外形和功能上存在差异&#xff0c;更在充电速度、充电方式以及使用场景等方面展现出独特的优势。 一、充电桩类型及区别 1、慢充桩&#xff08;交…

GenMedicalEval:医疗大语言模型综合评测框架

推荐一个开源的医疗大语言模型综合评价框架。 项目链接 https://github.com/MediaBrain-SJTU/GenMedicalEval 项目简介 我们提出了一个医疗大语言模型的综合评测框架&#xff0c;具有以下三大特点&#xff1a; 1.大规模综合性能评测&#xff1a;GenMedicalEval构建了一个覆盖…

stm32定时器中断函数回调函数

方式一&#xff1a;stm32定时器中断可以直接在硬件中断函数TIM3_IRQHandler执行。 在HAL库中可以注册回调函数&#xff0c;在定时器中断发生时调用注册的函数&#xff0c;这样可以统一接口&#xff0c;大大提高函数可读性&#xff0c;和硬件解耦提高程序可移植性。 使用过程如…

uniapp实现的数据选择器,支持H5、微信小程序

采用uniapp-vue3实现的数据选择器&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 支持本地自定义过滤、远程接口过滤&#xff0c;为了避免弹窗面板超出边界的情况&#xff0c;自动计算弹窗面板安置的位置&#xff08;在微信…

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…

C波段卫星与5G的干扰排查及解决方案

作者介绍 一、方案背景 目前造成C波段卫星信号受5G信号干扰有以下几个原因&#xff1a; ●C波段&#xff08;3.4-4.2GHz&#xff09;和电信5G频段&#xff08;3.4-3.7GHz&#xff09;间存在频谱重叠。 ●地面终端接收到的卫星信号通常比蜂窝信号弱几个数量级&#xff0c;同频…

ATTCK学习笔记

ATT&CK 前言知识 威胁情报&#xff1a;一般为网络流量中或者操作系统上观察到的能高度表明计算机被入侵的痕迹&#xff0c;例如某病毒的Hash值、服务器的IP地址等等。简单来说&#xff0c;威胁情报就像是当计算机被入侵时所表现出来的某种特征&#xff0c;我们将这些威胁…