20、MySQL-带条件查询(WHERE)
2015-03-06 15:03
169 查看
条件可以有:比较运算符、范围、集合
1、比较运算符(> >= <= < = <=> != <>)
mysql>-- 等号
mysql> SELECT * FROM user WHERE username='张1';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 6 | 张1 | 21 |
+----+----------+------+
mysql>-- 大于等于
mysql> SELECT * FROM user WHERE age>=22;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
mysql>-- <>等同于!=
mysql> SELECT * FROM user WHERE age<>22;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
mysql>-- <=>等同于= 但是<=>可以查找空值,=不可以
mysql> INSERT user(username,age) VALUES('WHH',NULL);
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM user WHERE age<=>NULL;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 10 | WHH | NULL |
+----+----------+------+
2、通过IS NULL或者IS NOT NULL 监测是否为空
mysql> SELECT * FROM user WHERE age IS NOT NULL;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
3、查询范围
BETWEEN ... AND 或者
NOT BETWEEN ... AND
mysql> SELECT * FROM user WHERE age BETWEEN 21 AND 50;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
+----+----------+------+
4、IN和NOT IN在集合中的形式
IN(值1,值2,...)
mysql> SELECT * FROM user WHERE age IN(22,44,88);
+----+----------+------+
| id | username | age |
+----+----------+------+
| 7 | 张2 | 22 |
| 9 | 大大 | 88 |
+----+----------+------+
5、实现模糊查询LINK
%:代表0个、1个或者多个任意字符
_:代表1个任意字符
mysql> -- 查询用户名中包含张的记录
mysql> SELECT * FROM user WHERE username LIKE '%张%';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
+----+----------+------+
4 rows in set (0.00 sec)
mysql> -- 查询用户名中不包含2的记录
mysql> SELECT * FROM user WHERE username NOT LIKE '%2%';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
| 10 | WHH | NULL |
+----+----------+------+
mysql> -- 查询用户名为2位的字符
mysql> SELECT * FROM user WHERE username LIKE '__';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
6、逻辑运算符(AND OR)
mysql> -- 查询用户名为2位的字符 并且年龄大于30的记录
mysql> SELECT * FROM user WHERE username LIKE '__' AND age > 30;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 9 | 大大 | 88 |
+----+----------+------+
1、比较运算符(> >= <= < = <=> != <>)
mysql>-- 等号
mysql> SELECT * FROM user WHERE username='张1';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 6 | 张1 | 21 |
+----+----------+------+
mysql>-- 大于等于
mysql> SELECT * FROM user WHERE age>=22;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
mysql>-- <>等同于!=
mysql> SELECT * FROM user WHERE age<>22;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
mysql>-- <=>等同于= 但是<=>可以查找空值,=不可以
mysql> INSERT user(username,age) VALUES('WHH',NULL);
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM user WHERE age<=>NULL;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 10 | WHH | NULL |
+----+----------+------+
2、通过IS NULL或者IS NOT NULL 监测是否为空
mysql> SELECT * FROM user WHERE age IS NOT NULL;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
3、查询范围
BETWEEN ... AND 或者
NOT BETWEEN ... AND
mysql> SELECT * FROM user WHERE age BETWEEN 21 AND 50;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
+----+----------+------+
4、IN和NOT IN在集合中的形式
IN(值1,值2,...)
mysql> SELECT * FROM user WHERE age IN(22,44,88);
+----+----------+------+
| id | username | age |
+----+----------+------+
| 7 | 张2 | 22 |
| 9 | 大大 | 88 |
+----+----------+------+
5、实现模糊查询LINK
%:代表0个、1个或者多个任意字符
_:代表1个任意字符
mysql> -- 查询用户名中包含张的记录
mysql> SELECT * FROM user WHERE username LIKE '%张%';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
+----+----------+------+
4 rows in set (0.00 sec)
mysql> -- 查询用户名中不包含2的记录
mysql> SELECT * FROM user WHERE username NOT LIKE '%2%';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 2 | 长一岁 | 16 |
| 6 | 张1 | 21 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
| 10 | WHH | NULL |
+----+----------+------+
mysql> -- 查询用户名为2位的字符
mysql> SELECT * FROM user WHERE username LIKE '__';
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 6 | 张1 | 21 |
| 7 | 张2 | 22 |
| 8 | 张3 | 23 |
| 9 | 大大 | 88 |
+----+----------+------+
6、逻辑运算符(AND OR)
mysql> -- 查询用户名为2位的字符 并且年龄大于30的记录
mysql> SELECT * FROM user WHERE username LIKE '__' AND age > 30;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | 张三 | 45 |
| 9 | 大大 | 88 |
+----+----------+------+
相关文章推荐
- MySQL第二天--where条件查询、视图及函数
- mysql单表查询Where 条件查询
- mysql group by内排序的实现以及having和where 条件语句查询的区别
- MySQL 查询 根据某个字段查询,且字段值为整数,放在Where 条件上
- MySQL左联多表查询where条件写法示例
- mysql的5中查询子句之一where条件查询
- 关于MYSQL查询时WHERE条件值为数字的问题
- MySQL左联多表查询where条件写法示例
- MySQL第二天--where条件查询、视图及函数
- Mysql语句:right join 和where查询条件(前一天18:00到当前时间)
- MySQL查询where条件的顺序对查询效率的影响
- mysql中left join on后面and和where条件查询的差异
- mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询
- MSSQL和MYSQL中select where in的查询结果按where条件顺序排序的方法
- 关于MYSQL查询时WHERE条件值为数字的问题
- where条件对查询的影响
- 在ASP中使用SQL语句之2:用WHERE子句设置查询条件
- 如何进行ibatis动态多条件组合查询以及模糊查询(oracle,mysql)
- where条件对mysql多列索引的使用
- 要提高SQL查询效率where语句条件的先后次序应如何写