mysql的高级语句,接着前面的内容,mysql高级语句的用法(二)

一.mysql高级语句分类

1.1 运算符

简介:MySQL 的运算符用于对记录中的字段值进行运算。MySQL 的运算符共有四种,
分别是:算术运算符、比较运算符、逻辑运算符和位运算符。

1.1.1 算术运算符

运算符 描述

  • 加法
  • 减法
  • 乘法
  • / 除法
  • % 取余数

语句演示:select 1+2 as addition, 2-1 as subtraction, 2*3 as multiplication, 4/2 as division, 7%2 as remainder;

在这里插入图片描述

  • 注意事项:

在除法运算和求余数运算中,除数不能为 0,若除数是 0,返回的结果则为 NULL。需要注意的是,
如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算 符没有先后顺序。
在 MySQL 的字段值内还有一种情况:某些字符串类型的字段存储的数字型字符串,这些字段在进行算术运算时将会被自动转换为数字的值。
如果字符串的开始部分是数字,在转 换时将被转换为这个数字。如果是既包含字符又包含数字得的混合字符串,
无法转换为数字时,将被转换为 0。

1.1.2 比较运算符

简介:比较运算符是查询数据记录时经常使用的一类运算符。通过使用比较运算符可以判断出
表中有哪些记录是符合条件的,如果比较的结果为真则返回 1,如果为假则返回 0,
比较的结果如果不确定则返回 NULL。其中字符串在进行比较的时候默认是不区分大小写的,
如果要区分大小写可以通过 binary 关键字来实现

  • 常用的比较运算符

在这里插入图片描述

1.1.2.1等于运算符

含义:等号(=)是用来判断数字、字符串和表达式是否相等的,如果相等则返回1,如果不相等则返回0。
如果比较的两者有一个值是 NULL,则比较的结果就是 NULL。其中字符的比较是根据 ASCII 码来判断的,
如果 ASCII 码相等,则表示两个字符相同;如果ASCII码不相等,则表示两个字符不相同。

语句演示:select 2=4,2=‘2’,‘e’=‘e’,(2+2)=(3+1),‘r’=NULL;在这里插入图片描述
从以上查询可以看出来:
如果两者都是整数,则按照整数值进行比较。
如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。
如果两者都是字符串,则按照字符串进行比较。
如果两者中至少有一个值是 NULL,则比较的结果是 NULL。

1.1.2.2 不等于运算符

含义:不等于号有两种写法,分别是<>或者!=,用于针对数字、字符串和表达式不相等的比较。
如果不相等则返回 1,如果相等则返回 0,这点正好跟等于的返回值相反。需要注意的是不等于运算符不能用于判断 NULL。

语句演示:SELECT ‘kgc’<>‘bdqn’, 1<>2, 3!=3, 2.5!=2, NULL<>NULL ;

在这里插入图片描述

1.1.2.3 大于、大于等于、小于、小于等于运算符

  • 大于(>)运算符用来判断左侧的操作数是否大于右侧的操作数,若大于返回 1,否则返回 0,同样不能用于判断 NULL。
  • 小于(<)运算符用来判断左侧的操作数是否小于右侧的操作数,若小于返回 1,否则返回 0,同样不能用于判断 NULL。
  • 大于等于(>=)判断左侧的操作数是否大于等于右侧的操作数,若大于等于返回 1,否则返回 0,不能用于判断 NULL。
  • 小于等于(<=)判断左侧的操作数是否小于等于右侧的操作数,若小于等于返回 1,否则返回 0,不能用于判断 NULL。

语句演示:select 5>4,‘a’>‘b’,2>=3,(2+3)>=(1+2),4.4<3,1<2,‘x’<=‘y’,5<=5.5,‘u’>=NULL;
在这里插入图片描述

1.1.2.4 IS NULL、IS NOT NULL

含义:IS NULL 判断一个值是否为 NULL,如果为 NULL 返回 1,否则返回 0。
IS NOT NULL 判断一个值是否不为 NULL,如果不为 NULL 返回 1,否则返回 0。

语句演示:select 2 IS NULL,‘f’ IS NOT NULL,NULL IS NULL;

在这里插入图片描述注意:
IS NULL 和 IS NOT NULL 一个判断为空,另一个判断不为空,只是有无 NOT 这个关键字的区别,同时返回值不同。

1.1.2.5 BETWEEN AND

含义:BETWEEN AND 比较运算通常用于判断一个值是否落在某两个值之间。

语句演示:select 4 BETWEEN 2 AND 6,5 BETWEEN 6 AND 8,‘c’ BETWEEN ‘a’ AND ‘f’;

在这里插入图片描述

1.1.2.6 LEAST、GREATEST

含义:LEAST:当有两个或者多个参数时,返回其中的最小值。如果其中一个值为 NULL,则返回结果就为 NULL。
GREATEST:当有两个或者多个参数时,返回其中的最大值。如果其中一个值为 NULL, 则返回结果就为 NULL。

语句演示:SELECT least(1,2,3),least(‘a’,‘b’,‘c’),greatest(1,2,3),greatest(‘a’,‘b’,‘c’);

在这里插入图片描述
从以上结果可以看出,LEAST 比较的参数为数字时,返回的是其中最小的值;当比较的参数为字符串时,
返回字母表中顺序最靠前的字符。GREATEST 比较的参数为数字时, 返回的是其中最大的值;
当比较的参数为字符串时,返回字母表中顺序最靠后的字符。

1.1.2.7 IN、NOT IN

  • IN 判断一个值是否在对应的列表中,如果是返回 1,否则返回 0。
  • NOT IN 判断一个值是否不在对应的列表中,如果不是返回 1,否则返回 0。

语句演示: SELECT 2 in (1,2,3,4,5),‘c’ not in (‘a’,‘b’,‘c’);

在这里插入图片描述
从以上结果可以看出,IN 和 NOT IN 的返回值正好相反。

1.1.2.8 LIKE、NOT LIKE

含义:LIKE 用来匹配字符串,如果匹配成功则返回 1,反之返回 0。LIKE 支持两种通配符:’%’ 用于匹配任意数目的字符,
而’_’只能匹配一个字符。NOT LIKE 正好跟 LIKE 相反,如果没有匹配成功则返回 1,反之返回 0。

语句演示:SELECT ‘bdqn’ LIKE ‘bdq_’,‘kgc’ LIKE ‘%c’,‘etc’ NOT LIKE ‘%th’;

在这里插入图片描述

1.1.3 逻辑运算符

简介:逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回 1,否则返回 0,
真和假也可以用 TRUE 和 FALSE 表示。MySQL 中支持使用的逻辑运算符有四种,

运算符 描述
NOT 或 ! 逻辑非
AND 或 && 逻辑与
OR 或 || 逻辑或
XOR 逻辑异或

1.1.3.1 逻辑非

含义:逻辑非使用 NOT 或!表示。逻辑非将跟在它后面的逻辑测试取反,
把真变为假,把假变为真。如果 NOT 后面的操作数为 0 时,所得值为 1;如果操作数为非 0 时,所得值为 0;
如果操作数为 NULL 时,所得值为 NULL。

语句演示:SELECT not 2,!3,not 0,!(4-4);

在这里插入图片描述

1.1.3.2 逻辑与

含义:逻辑与通常用于判断两个值或多个值的有效性,如果所有值都是真返回 1,否则返回 0
逻辑与使用 AND 或者&&表示。

语句演示:SELECT 2 AND 3,4 && 0,0 && NULL,1 AND NULL;

在这里插入图片描述

1.1.3.3 逻辑或

含义:逻辑或表示包含的操作数,任意一个为非零值并且不是 NULL 值时,返回 1,否则返回0。
逻辑或通常使用 OR 或者||来表示。

语句演示:SELECT 2 OR 3,4 || 0,0 OR NULL,1 || NULL;

在这里插入图片描述

1.1.3.4 逻辑异或

含义:两个非 NULL 值的操作数,如果两者都是 0 或者都是非 0,则返回 0;如果一个为 0, 另一个为非 0,则返回结果为 1;
当任意一个值为 NULL 时,返回值为 NULL。

语句演示:SELECT 2 XOR 3,0 XOR 0,0 XOR 5,1 XOR NULL,NULL XOR NULL;

在这里插入图片描述

1.1.4 位运算符

简介:位运算符实际上是对二进制数进行计算的运算符。MySQL 内位运算会先将操作数变成二进制格式,然后进行位运算,
最后在将计算结果从二进制变回到十进制格式,方便用户查看。MySQL 支持 6 种位运算符

运算符 描述
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移 >> 按右左移

语句演示:SELECT 10 & 15, 10 | 15, 10 ^ 15, 5 &~1;

在这里插入图片描述

那么上图这个结果是怎么得出来的呢?
我们一一分析一下:

10 转换为二进制数是 1010, 15 转换为二进制数是 1111。

  • 按位与运算(&),是对应的二进制位都是 1 的,它们的运算结果为 1,否则为 0,所以 10 & 15 的结果为 10。
  • 按位或运算(|),是对应的二进制位有一个或两个为 1 的,运算结果为 1,否则为 0, 所以 10 | 15 的结果为 15。
  • 按位取反(~),是对应的二进制数逐位反转,即 1 取反后变为 0, 0 取反后变为 1。数字 1 的二进制是 0001,取反后变为
    1110, 数字 5 的二进制是 0101,将 1110 和 0101进行求与操作,其结果是二进制的 0100,转换为十进制就是 4。

再举一个按位左移和按位右移的例子:
语句演示:SELECT 1<<2, 2<<2,10>>2,15>>2;

在这里插入图片描述

分析一下:

左移或右移运算符,都是将数转换为二进制后,然后在左移或右移指定的位数,超出的位数将被移除并丢弃,空出来的位置用 0 补齐。

  • 例如,“2<<2”将数字 2 的二进制数 0010, 向左移动两位后变成 10,右侧用 00 补齐,最终变为二进制的
    1000,转换为十进制是 8。
  • “15>>2”将数字 15 转换为二进制是 1111,向右移动两位,右侧的两位 11 被丢弃,变为 11, 左侧用 00
    补齐,最终变为二进制的 0011,转换为十进制就是 3。

1.1.4.1 运算符的优先级

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/aaa1414124211/article/details/109095898