十八、WHERE条件
实例表结构:
---------- ------------- ------ ----- ----------------------- ----------------
| Field | Type | Null | Key | Default | Extra
| ---------- ------------- ------ ----- ----------------------- ----------------
| id | int(11) | NO | PRI | NULL | auto_increment || sex | tinyint(4) | NO | | 1 | || username | varchar(20) | YES | | NULL | || age | tinyint(4) | NO | | 18 | || userinfo | varchar(50) | NO | | 我是帅气的lucky老师啊 |
| ---------- ------------- ------ ----- ----------------------- ----------------
(1) 比较运算符
>
将id大于5 的性别 更改为0 年龄改为20岁 update user set sex=0,age=20 where id>5;<
将id小于3 的性别 更改为0 年龄改为23岁 查看id小于4的 性别和用户名的字段数据 select sex,username from user where id<4; update user set sex=0,age=23 where id<3;>=
删除 id大于等于6的数据 delete from user where id>=6;<=
查询年龄小于等于23的数据 select * from user where age<=23;- = 查询性别为0的数据 select * from user where sex=0;
!=/<>
查询 用户名不等于lucky的所有数据 select * from user where username!='lucky'; select * from user where username<>'lucky';
(2) 逻辑运算符
- and 逻辑与 俩侧为真结果为真 修改年龄为30 id大于1 小于等于2 update user set age=30 where id>1 and id<=2; 查询年龄在18到23之间 不包括本身 select * from user where age>18 and age<23;
- or 逻辑或运算 俩侧条件满足一侧就可以 select * from user where age=10 or age=30; select * from user where age>=10 or age<=30;
- between and 在...范围之内 包括本身 查询年龄在18~20之间的所有数据
select * from user where age between 18 and 20;
4.等同于
代码语言:javascript复制
select * from user where age>=18 and age<=20;
5.not between and 不在...之间
查询年龄不在18~20之间的所有数据
代码语言:javascript复制select * from user where age not between 18 and 20;
6.等同于
代码语言:javascript复制select * from user where age<18 or age>20;
7.in 在...里
查询 年龄在18,20的数据
代码语言:javascript复制select * from user where age in(18,20);
8.等同于
代码语言:javascript复制select * from user where age=18 or age=20;
9.not in 不在...里
查询 年龄在18,20的数据
代码语言:javascript复制select * from user where age not in(18,20);
等同于
代码语言:javascript复制select * from user where age!=18 and age!=20;
(三) order by 排序 升序/降序
升序
查询数据 按照年龄升序(默认)
代码语言:javascript复制 select * from user order by age;
select * from user order by age asc;
查询数据 按照年龄降序
代码语言:javascript复制 select * from user order by age desc;
(4) limit 取值
结构:
代码语言:javascript复制limit x 取出x条数据
limit x,y 从x的位置取出y条数据
取出3条数据
代码语言:javascript复制 select * from user limit 3;
取出年龄最大/最小的一条数据
代码语言:javascript复制select * from user order by age desc limit 1;
select * from user order by age limit 1;
从0开始取出3条数据
代码语言:javascript复制select * from user limit 3; 等同于 select * from user limit 0,3;
分页实例:
数据一共100条
每页10条数据
第一页 limit 0,10
第二页 limit 10,10
第三页 limit 20,10
公式:
代码语言:javascript复制(nowpage-1)*10
(5) is is not 查询为null的数据
查询username为null的数据
代码语言:javascript复制select * from user where username is null;
查询username不为null的数据
代码语言:javascript复制select * from user where username is not null;
注意:
因为null是特殊的值 所有不能使用 = 或者 !=进行查询
(6) like 模糊查询
- ’%字符‘ 查询以字符结尾的数据 查询以三字为结束的username的数据 select * from user where username like '%三';
- '字符%' 查询以字符开头的数据 select * from user where username like '赵%';
- '%字符%' 查询包含字符的数据 查询 userinfo中包含lucky的数据 select * from user where userinfo like '%lucky%';
- '_' 通配符_ 代表匹配任意一个字符 查询 用户名一个字符的数据 select * from user where username like '_' 查询_lucky的数据 第一位为任意字符 select * from user where username like '_ucky'
- not like 查询 用户名除了俩个字符以外的任意数据 select * from user where username not like '__';
- [charlist] 原子表 原子表内的任意一个字 从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人: SELECT * FROM Persons WHERE City LIKE '[ALN]%'
(7) DISTINCT 去除重复的数据
代码语言:javascript复制 select distinct userinfo from user;
select distinct 字段名 from 表名;
(8) 子查询 (查询的条件还是一条SQL语句)
代码语言:javascript复制select * from 表名 where 字段名 in(SQL语句)
实例:
代码语言:javascript复制select * from user where age in(select age from user where sex=0);