zoukankan      html  css  js  c++  java
  • MySQL运算符

    (1)算术运算符

    在MySQL软件中,算术运算符包含加、减、乘、除;

    (2)比较运算符

    在MySQL软件中,比较运算符包含常用运算符如大于、小于、等于、不等于、小于大于等于、小于等于;实现特殊功能的比较运算符如between and、is null、in、like、regexp;

    (3)逻辑运算符

    在MySQL软件中,逻辑运算符包含与、或、非、异或;

    (4)位运算符

    在MySQL软件中,位运算符包含按位与、按位或、按位取反、按位异或、按位左移、按位右移;

    1、算术运算符:

    加法:a+b+c

    减法:a-b-c

    乘法:a*b*c

    除法:a/b/c  a div b div c

    求余:a%b%c     a mod b mod c

    例1:

     select 6+4 as 加法,
    
        -> 6-4 as 减法,
    
        -> 6*4 as 乘法,
    
        -> 6/4 as 除法,
    
        -> 6 div 4 as 除法div,
    
        -> 6%4 求余,
    
    -> 6 mod 4 as 求余mod;

    注意:div做除时,整数划分,从除法结果中舍弃小数点右侧的小数部分;

    例2:

     select 6/0,
    
        -> 6 div 0,
    
        -> 6%0,
    
    -> 6 mod 0;

    注意:当做除或求余时,如果除数为0,将是非法运算,返回结果为null;

    例3:

    当课程名称为管理学时,设置平均绩点分为分数除以2,要求显示学号,课程号,平均绩点分;

      select studentno,courseno,score/2
    
        -> from tb_score
    
        -> where courseno=
    
    -> (select courseno from tb_course where coursename='管理学');

    2、比较运算符

    大于:a>b

    小于:a<b

    等于:a=b a<=>b

    不等于:a!=b   a<>b

    大于等于:a>=b

    小于等于:a<=b

    指定范围: str between a and b

    判断为空:str is null

    指定集合:str in(a,b,c)

    通配符匹配:str like 表达式

    正则表达式:str regexp 表达式

    例1:比较数值、字符串、表达式;

     select 1=1,
    
        -> 1<=>1,
    
        -> 'liu'='liu',
    
        -> 'liu'<=>'liu',
    
        -> 1+2=2+3,
    
        -> 1+2<=>2+3;

    注意:1)=和<=>判断是否相等,相等则返回1,不相等则返回0;

    例2:

     select null=null,
    
    -> null<=>null;

    注意:1)=不能操作null(空值),结果返回null;

    2)      <=>可以操作null,结果相等返回1;

    3)      !=和<>都不能操作null,结果返回null;

    例2:

    查询分数在80到90之间的学生的信息;

     select * from tb_score
    
        -> where score>80 and score<90;

    例3:

    查询和数据库这门课程同一学期的课程的课程号、课程名称、学分;

    select courseno,coursename,credit
    
        -> from tb_course
    
        -> where term=
    
    -> (select term from tb_course where coursename='数据库') and coursename!='数据库';

    2.1、正则表达式:

    正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式找文本中符合要求的特殊字符。在不使用数据库表的情况下,可以直接将正则表达式置于select关键字之后,进行简单的正则表达式测试,如果返回0,则表示没有匹配,返回1,则表示匹配成功; 

    <字符串>:匹配包含指定字符串的文本,如’会计’

    []:匹配[]中任何一个字符,如:’[ab]’

    [^]:匹配不在[]中的任何一个字符,如:’[^ab]’

    ^:匹配文本的开始字符,如:’^b’

    $:匹配文本的结尾字符,如’er$’

    .:匹配任意单个字符,如:’b.t’

    *:匹配0个或多个*前指定的字符,如’f*n’

    +:匹配+前面的字符1次或多次,如’ba+’

    {n}:字符串出现n次,如’b{2}’

    (m,n):字符串出现至少m次,最多n次

    例1:

    查询班级名称中带有’会计’的班级信息;

     select * from tb_class
    
    -> where classname regexp '会计';

    例2:

    查询班级名称中包含’会’’计’中任何一个字的班级信息;

    例3:

    查询课程名称中不含程序设计的课程信息;

     select * from tb_course
    
        -> where coursename regexp '[^程序设计]';

    例4:

    查询课程名称中含有’管理’’信息’或’系统’中文字符的所有课程信息;

    select * from tb_course
    
    -> where coursename regexp '管理|信息|系统';

    例5:

    查询班级名称以’会计’开头的班级信息;

    select * from tb_class
    
    -> where classname regexp '^会计';

    例6:

    查询课程名称以’系统’结尾的课程信息;

     select * from tb_course
    
    -> where coursename regexp '系统$';

    3、逻辑运算符:

    And(&&):与运算,如a and b,或a&&b

    Or(||):或运算,如a or b,a||b

    Not(!):非运算,如not a

    XOR:异或,如a xor b

    与运算:

    例1:

     select 3 and 4,
    
        -> 0 and 4,
    
        -> 0 and null,
    
        -> 3 and null,
    
        -> 3 && 4,
    
        ->  0 && 4,
    
        -> 0 && null,
    
    -> 3 && null;

    注意:

    1)   非0,没有null,结果返回1;

    2)   非0,有null,结果返回null;

    3)   任一操作数为0,结果返回0;

    例2:

    查询学分大于等于3且学时数大于32的课程名称、学分和学时数;

     select coursename,credit,coursehour
    
        -> from tb_course
    
    -> where credit>=3 and coursehour>32;

    或运算:

    例3:        

    select 3 or 4,
    
     0 or 4,  
    
     0 or 0,  
    
     0 or null,
    
     3 or null,
    
     3 || 4,  
    
     0 || 4,  
    
     0 || 0,  
    
     0 || null,
    
     3 || nullG

    注意:

    1)   包含任一非0数据,结果返回1;

    2)   包含0,null,结果返回null;

    3)   所有操作数都为0,结果返回0;

    例4:

    查询籍贯是北京或上海的学生的姓名、籍贯和名族;

    select studentname,native,nation
    
        -> from tb_student
    
    -> where native='北京' or native='上海';

    例5:

    查询籍贯是北京或湖南的少数名族男生的姓名、籍贯和名族;

     select studentname,native,nation
    
        -> from tb_student
    
    -> where (native='北京' || native='湖南') && nation!='' && sex='';

    非运算:

    例6:

    select not 3,
    
        -> not 0,
    
        -> not null,
    
        -> !3,
    
        -> ! 0,
    
    -> ! null;

    注意:

    1)   操作数是非0数字,结果返回0;

    2)   操作数为0,结果返回1;

    3)   操作数为null(空值),结果返回null;

    例7:

    查询不是北京地区的学生信息;

     select * from tb_student
    
    -> where native!='北京';

    或:

     select * from tb_student
    
    -> where not native='北京';

    异或运算:

    例8:

     select 3 xor 4,
    
        -> 0 xor 0,
    
        -> null xor null,
    
        -> 0 xor 4,
    
        -> 0 xor null,
    
    -> 3 xor null;

    注意:

    1)   操作数包含null,结果返回null;

    2)   操作数同为0或同为非0,结果返回0;

    3)   操作数一个为0,一个非0,结果返回1;

    4、位运算:

    &:按位与,a & b

    |:按位或,a | b

    ~:按位取反,~a

    ^:按位异或,a ^ b

    <<:按位左移,a << b

    >>:按位右移,a >> b

    例1://按位与

     select 5&6,bin(5&6),4&5&6,bin(4&5&6);

    注意:

    1)   按位与,首先由操作数由十进制转换成二进制数;

    2)   然后按位进行与操作,1与1为1,其他为0;

    3)最后将与后的结果转换成十进制数;

    例2://按位或

     select 5|6,bin(5|6),4|5|6,bin(4|5|6);

    注意:

    1)   按位或,1和任何数的或运算的结果是1;

    2)   按位或,0和0的或运算的结果是0;

    例3://按位取反

     select ~4,bin(~4);

    注意:

    1)   mysql中用8个字节(64位)表示,需要在100二进制数前面用0补足64位,再做取反操作;

    2)   取反,1取反,结果为0;0取反,结果为1;

    例4://按位异或

     select 4^5,bin(4^5);

    注意:

    1)   相同的数异或后的结果为0;

    2)   不同的数异或后的结果为1;

    例5://按位左移,右移

     select bin(5),
    
        -> 5<<4,bin(5<<4),
    
    -> 5>>1,bin(5>>1);

    注意:

    1)   按位左移,右边补0;

    按位右移,左边补0;

  • 相关阅读:
    dell N5010
    centos7 teamviewer
    E40笔记本无线网卡
    sqlite的bool字段
    System.data.sqlite安装
    关于AutoResetEvent 和ManualResetEvent
    实时刷新winform中的某一个控件上的文字
    C#中的静态构造函数
    apm的学习资料
    C# 版本和.NET 版本以及VS版本的对应关系
  • 原文地址:https://www.cnblogs.com/Jackbk/p/12692913.html
Copyright © 2011-2022 走看看