MySQL运算符操作
// 以下均已此表为示例 sanguo
/*
+------+-----------+--------+--------+------+---------+
| id | name | gongji | fangyu | sex | country |
+------+-----------+--------+--------+------+---------+
| 1 | 诸葛亮 | 120 | 20 | 男 | 蜀国 |
| 2 | 司马懿 | 119 | 25 | 男 | 魏国 |
| 3 | 关羽 | 188 | 60 | 男 | 蜀国 |
| 4 | 赵云 | 200 | 55 | 男 | 魏国 |
| 5 | 孙权 | 110 | 20 | 男 | 吴国 |
| 6 | 貂蝉 | 666 | 10 | 女 | 魏国 |
| 7 | NULL | 1000 | 99 | 男 | 蜀国 |
| 8 | | 1005 | 88 | 女 | 蜀国 |
+------+-----------+--------+--------+------+---------+
*/
数值比较/字符比较
- 数值比较:
=,!=,>,>=,<,<=
- 字符比较:
=,!=
# 查找攻击力高于150的英雄的名字和攻击值
select name,gongji from sanguo where gongji > 150;
# 将赵云的攻击力设置为360,防御力设置为68
update sanguo set gongji = 360,fangyu = 68 where name = "赵云";
逻辑比较
-
and
(两个或多个条件同时成立)
-
or
(任意一个条件成立即可)
# 找出攻击值高于200的蜀国英雄的名字、攻击力
select name,gongji from sanguo where gongji > 200 and country = "蜀国";
# 将吴国英雄中攻击值为110的英雄的攻击值改为100,防御力改为60
update sanguo set gongji = 10,fangyu = 60 where gongji = 110 and country = "吴国";
# 查找蜀国和魏国的英雄信息
select * from sanguo where country = "蜀国" or country = "魏国";
范围内比较
between 值1 and 值2
where 字段名 in(值1,值2,...)
where 字段名 not in(值1,值2,...)
# 查找攻击值100-200的蜀国英雄信息
select * from sanguo where country = "蜀国" and gongji between 100 and 200;
# 找到蜀国和吴国以外的国家的女英雄信息
select * from sanguo where country not in("蜀国","吴国") and sex = "女";
# 找到id为1、3或5的蜀国英雄 和 貂蝉的信息
select * from sanguo where name = "貂蝉" or (id in(1,3,5) and country = "蜀国");
空、非空
- 空:
where 字段名 is null
- 非空:
where 字段名 is not null
- 空值,只能用
is
或者 is not
去匹配
- 空字符串,用
=
或者 !=
去匹配
# 姓名为NULL值的蜀国女英雄信息
select * from sanguo where name is null and country = "蜀国" and sex = "女";
# 姓名为 "" 的英雄信息
select * from sanguo where name = "";
模糊比较
where 字段名 like 表达式
-
_
: 匹配单个字符
-
%
: 匹配0到多个字符
# 查询名字为三个字的
select * from sanguo where name like "___";
# 查询所有姓赵的英雄
select * from sanguo where name like "赵%";
# NULL不会被统计,只能用is、is not去匹配
# 空字符串可以被匹配
网友评论