zoukankan      html  css  js  c++  java
  • 七:MYSQL之常用操作符

    前言:

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

      常见的运算有数学计算、比较运算、位运算及逻辑运算

    一:算数运算符

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

    二:比较运算符

       2.1概述

        用于比较运算。包括大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)、以及IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP等

        

      2.2各种比较运算符介绍  

    1)等号”=”用来判断数字、字符串和表达式是否相等。如果相等,返回值为1,否则返回值为0。
    
          select 1=0,'2'=2,2=2,NULL=NULL;  返回值=0,1,1null
    
        2)安全等于号。这个操作符合=操作符执行相同的比较操作,不过<=>可以用来判断NULL值,在两个操作数均为NULL时,其返回值为1而不为NULL,而当一个操作数为NULL时,其返回值为0而不为NULL。
    
          select 1<=>0,'2'<=>2,NULL<=>NULL;   返回值=0,1,1
    
        3)‘<>’或者’!=’用于判断数字、字符串、表达式不相等的判断。如果不相等,返回值为1;否则返回值为0。这两个运算符不能用于判断空值NULL。
    
          select 'good'<>'good',1<>2,4!=5,5.5!=5,(1+3)!=(2+1),NULL<>NULL;  返回值=0,1,1,1,0null
    
        4IS NULL和ISNULL检验一个值是否为NULL,如果为NULL,返回值为1。否则返回值为0;IS NOT NULL检验一个值是否为非NULL,如果非NULL,返回值为1;否则返回值为0。
    
           select NULL IS NULL,ISNULL(NULL),ISNULL(10),10 IS NOT NULL;  返回值=11,0,1
    
        5BETWEEN AND运算符。语法格式为:expr BETWEEN min AND max。假如expr大于或等于min且小于或等于max,则BETWEEN的返回值为1,否则返回值为0。
    
          select 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;   返回值=1,0
    
        6)LEAST运算符。语法格式为:LEAST(值1,值2,…值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。假如任意一个自变量为NULL,则LEAST()的返回值为NULL。
    
          select least(2,0),least(20.0,3.0,100.5),least(10,NULL);  返回值=0,3.0null
    
        7)GREATEST(value1,value2,…)。语法格式为:GREATEST(值1,值2,…值n),其中n表示参数列表中有n个值。当有2个或多个参数时,返回值为最大值,假如任意一个自然变量为NULL,则GREATEST()的返回值为NULL。
    
          select greatest(2,0),greatest(20.0,3.0,100.5),greatest(10,NULL); 返回值=2,100.5null
    
        8INNOT IN运算符。IN运算符用来判断操作数是否为IN列表中的其中一个值,如果是,返回值为1;否则返回值为0。
    
          select 2 IN(1,3,5,'thks'),'thks' IN(1,3,5,'thks');  返回值=0,1
    
        9)LIKE运算符用来匹配字符串,语法格式为:expr LIKE 匹配条件,如果expr满足匹配条件,则返回值为1(TRUE);如果不匹配,则返回值为0(FALSE)。若expr或匹配条件中任何一个为NULL,则结果为NULL。 
          LIKE运算符在进行匹配时,可以使用下面两种通配符: 
          9.1) ‘%’,匹配任何数目的字符,甚至包括0字符。 
          9.2.)‘_’,只能匹配一个字符。
    
           select 'stud' LIKE 'stud','stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE't___','s' LIKE NULL;  返回值=1,1,1,1,0
    
        10)REGEXP运算符用来匹配字符串,语法格式为:expr REGEXP 匹配条件,如果expr满足匹配条件,返回1;如果不满足,则返回0;若expr或匹配条件任意一个为NULL,则结果为NULL。 
          REGEXP运算符在进行匹配时,常用的有下面几种通配符: 
          (1) ‘^’匹配以该字符后面的字符开头的字符串。 
          (2) ‘$’匹配以该字符后面的字符结尾的字符串。 
          (3) ‘.’匹配任何一个单字符。 
          (4) ‘[]’匹配在方括号内的任何字符。例如,”[abc]”匹配”a”、”b”或”c”。为了命名字符串的范围,使用一个’-‘。”[a-z]”匹配任何字母,而”[0-9]”匹配任何数字。 
          (5) ‘*’匹配0个或多个在它前面的字符。  
    
            select 'ssky' REGEXP '^s','ssky' REGEXP 'y$','ssky' REGEXP '.sky','ssky' REGEXP '[ab]';
    介绍为转载内容

    数据库建表脚本 

      2.3数据库表数据

     1 mysql> SELECT * FROM student;
     2 +------+----------+-------+----------+-----------------+
     3 | s_id | s_name   | s_age | s_gender | s_major         |
     4 +------+----------+-------+----------+-----------------+
     5 |    1 | 马化腾   |    54 || 腾讯集团CEO     |
     6 |    2 | 雷军     |    48 || 小米集团CEO     |
     7 |    3 | 丁磊     |    46 || 网易集团CEO     |
     8 |    4 | 马云     |    51 || 阿里巴巴集团CEO |
     9 |    5 | 刘强东   |    45 || 京东集团CEO     |
    10 |    6 | 王健林   |    65 || 万达集团CEO     |
    11 |    7 | 周鸿祎   |    46 || 360集团CEO      |
    12 |    8 | 章泽天   |    25 || NULL            |
    13 |    9 | 章子怡   |    39 || NULL            |
    14 |   10 | 张一山   |    27 || 演员            |
    15 |   11 | 冯小刚   |    66 || 导演            |
    16 |   12 | 张艺谋   |    68 || 导演            |
    17 |   13 | 刘亦菲   |    32 || 演员            |
    18 |   14 | 莫言     |    70 || 作家            |
    19 |   15 | 科比     |    35 || 篮球运动员      |
    20 |   16 | 梅西     |    31 || 足球运动员      |
    21 |   17 | 约翰塞纳 |    42 || 摔跤运动员      |
    22 |   18 | 凤姐     |    36 || NULL            |
    23 |   19 | 詹姆斯   |    31 || 篮球运动员      |
    24 |   20 | 内马尔   |    25 || 足球运动员      |
    25 |   21 | 胡歌     |    35 || 演员            |
    26 |   22 | 许家印   |    67 || 恒大CEO         |
    27 |   23 | 周杰伦   |    35 || 流行歌手        |
    28 |   24 | 鹿晗     |    27 || 偶像明星        |
    29 |   25 | P-Gone   |    20 || 说唱歌手        |
    30 |   26 | 李安     |    55 || 导演            |
    31 |   27 | 斯图尔特 |    28 || 演员            |
    32 |   28 | 王大明   |    25 || NULL            |
    33 |   29 | 犀利哥   |    45 || 乞丐            |
    34 |   31 | 冯提莫   |    26 || 娱乐主播        |
    35 |   32 | 卢本伟   |    25 || 网络主播        |
    36 |   33 | 小狗     |    21 || LOL职业选手     |
    37 |   34 | Gogoing  |    26 || LOL职业选手     |
    38 |   35 | 仙凡     |    27 || LOL主播         |
    39 |   36 | 黑人毅   |    29 || 户外主播        |
    40 |   37 | 旭旭宝宝 |    28 || DNF主播         |
    41 |   38 | 大龙猫   |    27 || DNF主播         |
    42 |   39 | 奥巴马   |    57 || 前美国总统      |
    43 |   40 | 克林顿   |    20 || 前美国总统      |
    44 |   42 | 林俊杰   |    37 || 流行歌手        |
    45 |   43 | 张韶涵   |    35 || 流行歌手        |
    46 |   44 | 杨紫     |    27 || 演员            |
    47 +------+----------+-------+----------+-----------------+
    48 42 ROWS IN SET (0.00 sec)
    数据库表数据

      2.4参考以下代码

    --比较运算符,多个值进行比较,既可以作为结果输出,也可以作为判断条件
    
    --<=>,安全等于号,可以用来判断某个数据是否为NULL,0表示buwei NULL,1表示NULL
    SELECT s_major FROM student WHERE s_name='章泽天';--NULL
    SELECT s_major <=> NULL FROM student s WHERE s.s_name='章泽天';---1
    SELECT s_major <=> NULL FROM student WHERE s_name='马化腾';--0
    
    --ISNULL() 、IS NULL 、IS NOT NULL 可以用来判断某个数据是否为NULL
    SELECT ISNULL(s_major) FROM student WHERE s_name ='章泽天';--1
    SELECT s_major IS NULL FROM student WHERE s_name='章泽天';--1
    SELECT s_major IS NOT NULL FROM student WHERE s_name='章泽天';--0
    
    --<>  、  !=  这两个运算符不能用于判断空值NULL
    --用于判断数字、字符串、表达式不相等的判断,不相等返回1否则为0,不能安段NULL
    SELECT s_major != '演员' FROM student WHERE s_name='章泽天';--NULL
    SELECT s_major !='演员' FROM student WHERE s_name='马化腾';--1
    SELECT s_major <> '演员' FROM student WHERE s_name='胡歌';--0
    SELECT * FROM student WHERE s_major<>'演员';
    
    
    --BETWEEN AND
    --查询年龄在23-40之间的同学包含两端[23 40]
    SELECT * FROM student WHERE s_age BETWEEN 23 AND 40;
    SELECT s_age BETWEEN 25 AND 40 FROM student WHERE s_name='马化腾';--0
    SELECT s_age BETWEEN 50 AND 60 FROM student WHERE s_name='马化腾';--1
    
    --LEAST运算符,不好作为WHERE后的判断条件
    SELECT LEAST(0,5,2),LEAST(10,25,8),LEAST(10,NULL,15);--0/8/NULL
    --GREATEST运算符
    SELECT GREATEST(0,5,2),GREATEST(10,25,8),GREATEST(10,NULL,15)--5/25/NULL
    
    --IN   NOT IN查找符合给定值的记录,也可以作为判断某个值是否在给定值中
    SELECT * FROM student WHERE s_age IN(25,35,45);
    SELECT s_age IN(25,35,45) FROM student WHERE s_name='章泽天';--1
    SELECT s_age IN(15,35,45) FROM student WHERE s_name='章泽天';--0
    
    --LIKE运算符
    SELECT * FROM student WHERE s_major LIKE '运动员';
    SELECT * FROM student WHERE s_major LIKE '%运动员';
    SELECT * FROM student WHERE s_major LIKE '%运动员%';
    SELECT * FROM student WHERE s_major LIKE '_运动员';
    
    --REGEXP ,(regular expression)匹配正则表达式
    SELECT 'ssky' REGEXP '^s','ssky' REGEXP 'y$','ssky' REGEXP '.sky','sska' REGEXP '[fb]';
    --结果 1,1,1,0
    --如果expr满足匹配条件,返回1;如果不满足,则返回0;若expr或匹配条件任意一个为NULL,则结果为NULL。
    --REGEXP运算符在进行匹配时,常用的有下面几种通配符:
    --1‘^’匹配以该字符后面的字符开头的字符串。
    --2‘$’匹配以该字符后面的字符结尾的字符串。
    --3‘.’匹配任何一个单字符。
    --4‘[…]’匹配在方括号内的任何字符。例如,”[abc]”匹配”a”、”b”或”c”。为了命名字符串的范围,使用一个’-‘。”[a-z]”匹配任何字母,而”[0-9]”匹配任何数字
    --5‘*’匹配0个或多个在它前面的字符
    比较运算符练习

     三:逻辑运算符

      3.1概述

        在SQL中,所有逻辑运算符的求值结果均为TRUE、FALSE、或NULL,在M有SQL中,他们体现为1/0、NULL

        

      3.2实例  

     1  1)NOT或!
     2 
     3       逻辑非运算符NOT或者!表示当操作数为0时,所得值为1;当操作数为非零值时,所得值为0,当操作数为NULL时,所得的返回值为NULL。
     4 
     5       select NOT 10,NOT(1-1),NOT -5,NOT NULL,NOT 1+1; 返回值= 01,0,0
     6 
     7     2)AND或&&
     8 
     9       逻辑与运算符AND或者&&表示当所有操作数均为非零值、并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0,其余情况返回值为NULL。
    10 
    11       select 1 AND -1,1 AND 0,1 AND NULL,0 AND NULL;
    12 
    13     3)OR或||
    14 
    15       逻辑与运算符OR或者||表示当两个操作数均为非NULL值,且任意一个操作数为非零值时,结果为1,否则结果为0;
    16 
    17       当有一个操作数为NULL,且另一个操作数为非零值时,则结果为1,否则结果为NULL;当两个操作数均为NULL时,则所得结果为NULL。    
    18 
    19       select 1 OR-1,1 OR 0,1 OR NULL,0 OR NULL;      
    20 
    21     4)XOR
    22 
    23       逻辑异或运算符XOR。当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;如果一个为0值,另一个为非0值,返回结果为1。
    24 
    25         select 1 XOR 1,0 XOR 0,1 XOR 0,0 XOR 0,1 XOR NULL,1 XOR 1;
    实例介绍为转载

      3.3:数据库表数据

    数据库表数据

       3.4:练习代码

    四:位运算符

      4.1:概述

        位运算符用来 对二进制字节中的位进行测试,位移或者测试处理,M有SQL中提供的位运算符有按位或(|),按位与(&),按位异或(^),按位右移(>>)按位左移(<<),按位取反(~)

      4.2:实例

     1 1)位或运算符 |
     2 
     3       位或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑或运算。对应的二进制有一个或两个为1则该位的运算结果为1,否则为0。
     4 
     5       select 10|15,9|4|2;     返回值=15,15
     6 
     7       分析:10的二进制数值为1010,15的二进制数值为1111,按位或运算之后,结果为1111,即整数15;9的二进制位1001,4的二进制为0010,按位或运算之后,结果为1111,即整数15。其结果为一个64位无符号整数
     8 
     9     2)位与运算符 &
    10 
    11       位与运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑与运算。对应的二进制都为1,则该位的运算结果为1,否则为0。
    12 
    13       select 10&15,9&4&2;  返回值=10,9
    14 
    15       分析:10的二进制位1010,15的二进制位1111,按位与运算结果为1010,即整数10;9的二进制为1001,4的二进制位0100,2的二进制为0010,按位与运算之后,结果为0000,即整数0,。其结果为一个64位无符号整数。
    16 
    17     3)位异或运算 ^
    18 
    19       位异或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑异或运算。对应的二进制数不同时,对应的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。
    20 
    21       select 10^15,1^0,1^1;  返回值=510
    22 
    23     4)位左移运算符 <<
    24 
    25       位左移运算符<<使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。语法格式为:expr<
    26 
    27       select 1<<2,4<<2;  返回值=416
    28 
    29       分析:1的二进制位0000 0001,左移两位之后0000 0100,即十进制整数4;十进制4左移两位之后变成0001 0000,即变成十进制的16。
    30 
    31     5)位右移运算符 >>
    32 
    33       位右移运算符>>使指定的二进制的所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被丢弃移除,左边高位空出的位置用0补齐。语法格式为:expr>>n。这里n指定值expr要移除的位数。
    34 
    35       select 1>>1,16>>2;  返回值=016
    36 
    37       分析:1的二进制位0000 0001右移1位之后变成0000 0000,即十进制整数0,16的二进制数值为0001 0000右移两位之后变成十进制的4.
    38 
    39     6)位取反运算 ~
    40 
    41       位取反运算的实质是将参与运算的数据,按对应的二进制数逐位反转,即1取反后变成0,0取反变成1。
    42 
    43       select 5&~1;  返回值=4
    位运算符介绍,转载

    五:运算符优先级

      

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/wdmlsx/p/9266214.html
Copyright © 2011-2022 走看看