纵有疾风起
人生不言弃

MySQL操作符

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

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

二、比较操作符
  ---利用比较操作符在DQL语句中实现按条件的检索
MySQL操作符插图
示例用表:球员信息表player、比赛信息表matchesMySQL操作符插图1
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)MySQL操作符插图2说明:使用不同运算符的成对比较在转换为标量表达式比较时,都有各自的转换规则。 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功能更加强大---正则MySQL操作符插图3
例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]';


三、逻辑操作符
  ---逻辑运算符又称为布尔运算符,用来确认表达式的真和假MySQL操作符插图4
  如果在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操作符插图5
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了解使用,用得不多,但是要有个印象,要用的时候查看帮助

文章转载于:https://www.cnblogs.com/geaozhang/p/6733737.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » MySQL操作符
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录