zoukankan      html  css  js  c++  java
  • MySQL操作符

    简要介绍MySQL操作符
      常用:
        算术运算符、比较操作符、逻辑操作符、位运算符……

    一、算术运算符
      +:加
      -:减
      *:乘
      /:除,返回商
      %,mod():除,返回余数
    mysql> select  3%2,mod(3,2);
    +------+----------+
    | 3%2  | mod(3,2) |
    +------+----------+
    |    1 |        1 |
    +------+----------+
    注意:除法运算中,若除数为0(无意义),是非法除数,返回结果为null。

    二、比较操作符
      ---利用比较操作符在DQL语句中实现按条件的检索

    示例用表:球员信息表player、比赛信息表matches
    1、获得联盟会员号码为7060的球员信息
    mysql> select * from player where leagueno=’7060’;
     
    2、获得没有联盟会员号码的球员信息
    mysql> select * from player where leagueno=null;
    error……报错
    mysql> select * from player where leagueno <=> null;
    或
    mysql> select * from player where leagueno is null;
    <=>”安全的等于运算符:和“=”类似,在操作数相等时值为 1,不同之处在于即使
    操作的值为 NULL 也可以正确比较。
     
    3、找出获胜局数等于2且输掉局数等于3的比赛信息
    条件中可以进行列值的成对比较
    mysql> select * from matches where (won,lost)=(2,3);
    注意:条件(2,4)>(1,3)并不等于(2>1) and (4>3),而是等于(2>1) or (2=1 and 4>3)
    
    说明:使用不同运算符的成对比较在转换为标量表达式比较时,都有各自的转换规则。
     
    4、between的范围比较:使用BETWEEN …AND… 操作符可以测试列值是否在一个取值范围之内 
    例:找出1962—1964年之间出生的球员的编号、出生日期
    mysql> select playerno,birth_date from players where birth_date between '1962-01-01' and '1964-01-01';
     
    5、in操作符:测试一个列值是否在一个值列表中(值列表中可以是字面量、列或标量子查询) 
    例1:得到那些出生在1962、1963或1970的球员的编号、出生年份
    mysql> select playerno,year(birth_date) from players where year(birth_date) in (1962,1963,1970);
    例2:两局获胜或者两局输掉的所有比赛
    mysql> select * from matches where 2 in (won,lost);
    例3:比分为3比1和3比2的所有比赛(in的成对比较)
    mysql> select * from matches where (won,lost) in ((3,1),(3,2));
    说明:在MySQL内部,in转换成or操作,not in转换成and操作
     
    6、 like操作符:实现模式匹配查询或者模糊查询
    like “匹配模式字符串”测试一个列值是否匹配给出的模式
    特殊含义的通配字符:
      %:表示0个或者任意多个字符
      _:只表示一个任意字符
    例1:找出名字以大写字母B开头的球员
    mysql> select * from players where name like ‘B%’;
    例2:得到名字以小写字母r结尾的球员
    mysql> select * from players where name like ‘%r’;
    例3:得到名字的第二个字母为e的球员的名字和编号
    mysql> select name,playerno from players where name like ‘_e%’;
    例4:找出名字中包含一个下划线的球员
    mysql> select playerno,name from players where name like ‘%/_%’ escape ‘/’;
    注意:如果转义字符指定反斜杠,必须是escape ‘\’(反斜杠在进行模式匹配时,会被剥离一次)
    例如:
    mysql> select * from table_name where col_name like ‘%\\%’ escape ‘\’;
    ##反斜杠会被语法分析程序剥离一次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜杠接受匹配.
    7、regexp操作符(regular expression)
      --比like功能更加强大---正则
    例1:得到名字以ba开头的球员信息
    mysql> select * from players where name regexp '^ba';
    
    例2:得到名字包含了字母a、b或c的球员信息 mysql
    > select * from players where name regexp '[abc]';
    例3:对于名字中有字母m、e、n中的一个,并且连续出现2次的球员信息 mysql
    > select * from players where name regexp '[men][men]';
    
    

    三、逻辑操作符
      ---逻辑运算符又称为布尔运算符,用来确认表达式的真和假
      如果在where中同时用到了and 和or运算符,先算and后算or,因为and优先级高;
      可以使用小圆括号来改变运算的顺序。
    例1: 得到那些住在Stratford或者出生于1963年的球员的编号、姓名、出生日期,但是不包括那些住在Stratford并且出生于1963年的球员
    mysql> select playerno,name,birth_date from players where (town='Stratford' or year(birth_date)='1963') and not (town='Stratford' or year(birth_date)='1963');
     
    例2:得到那些住在Stratford或者出生于1963年的球员的编号、姓名、出生日期,但是不包括那些住在Stratford并且出生于1963年的球员
    mysql> select playerno,name,birth_date from players where (town='Stratford') xor (year(birth_date)='1963');


    四、位运算符
        ---位运算是将给定的操作数转化为二进制后, 对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果
    
    mysql> SELECT 29 & 15;
    +---------+
    | 29 & 15 |
    +---------+
    |      13 |
    +---------+
    1 row in set (0.01 sec)
    
    mysql> SELECT 1 << 2;
    +--------+
    | 1 << 2 |
    +--------+
    |      4 |
    +--------+
    1 row in set (0.00 sec)
    位运算符其实也就是位函数,通过mysql> ? Bit Functions了解使用,用得不多,但是要有个印象,要用的时候查看帮助
  • 相关阅读:
    leetcode-442-数组中重复的数据
    leetcode-83-删除排序链表中的重复元素
    leetcode-80-删除排序数组中的重复项 II
    leetcode-26-删除排序数组中的重复项
    leetcode-889-105-106-根据前-中-后遍历构造二叉树
    leetcode-88-合并两个有序数组
    凉了!张三同学没答好「进程间通信」,被面试官挂了....
    多线程为了同个资源打起架来了,该如何让他们安定?
    Xlua中LuaBehaviour的实现
    Elasticsearch实战一
  • 原文地址:https://www.cnblogs.com/geaozhang/p/6733737.html
Copyright © 2011-2022 走看看