查询表达式
本节课我们要学习查询中的几种查询方式:比较查询、区间查询、其它查询等
一.比较查询
1.在查询数据进行筛选时,我们采用 where()方法
public function show(){ //where 过滤函数 第二个参数默认是=,不写就是等于 $data=Db::table('user')->where('bid',3)->select(); //下面的代码等价于上面的代码 $data1=Db::table('user')->where('bid','=',3)->select(); return json($data); }
2.where(字段名,查询条件),where(字段名,表达式,查询条件);
3.其中,表达式不区分大小写,包括了比较、区间和时间三种类型的查询;
4.使用<>、>、<、>=、<=可以筛选出各种符合比较值的数据列表;
public function show(){ //查找user表中,bid大于3的 $data=Db::table('user')->where('bid','>',3)->select(); return json($data); }
二.区间查询
1.使用 like 表达式进行模糊查询;
public function show(){ //模糊查询,第二个参数如果为关键字like 则为模糊查询,查找bname 包含伟的 $data=Db::table('user')->where('bname','like','%伟')->select(); return Db::getlastsql(); return json($data); }
2.like 表达式还可以支持数组传递进行模糊查询;
public function show(){ //where 还可以传递数组,并且第四个参数 为查询条件,如果不指定为and //sql语句SELECT * FROM `user` WHERE (`bname` LIKE '%伟' OR `bname` LIKE '%玥') $data=Db::table('user')->where('bname','like',['%伟','%玥'],'or')->select(); return Db::getlastsql(); return json($data); }
3.like 表达式具有两个快捷方式 whereLike()和 whereNoLike();
public function show(){ //wherelike函数 就相当于直接在where函数中,查询的条件为like $data=Db::table('user')->whereLike('bname','%伟')->select(); return Db::getlastsql(); //SELECT * FROM `user` WHERE `bname` LIKE '%伟' return json($data); }
whereNotLike()函数就是不包含%伟的,这里就不演示了
4.between 表达式具有两个快捷方式 whereBetween()和 whereNotBetween();
public function show(){ //使用where函数 表达式between // $data=Db::table('user')->where('bid','between','1,5')->select(); $data=Db::table('user')->where('bid','between',[1,5])->select(); //使用wherebetween函数 $data=Db::table('user')->whereBetween('bid',[1,3])->select(); //使用whereNotBetween函数 $data=Db::table('user')->whereNotBetween('bid',[1,3])->select(); return Db::getlastsql(); //SELECT * FROM `user` WHERE `bname` LIKE '%伟' return json($data); }
5.in 表达式具有两个快捷方式 whereIn()和 whereNotIn();
public function show(){ //query函数原生的sql查询语句 $data=Db::table('user')->where('bid','in',"1,2,3")->select(); // return Db::getlastsql(); //SELECT * FROM `user` WHERE `bname` LIKE '%伟' return json($data); }
Db::name('user')->whereIn('id','19,21,29')->select();
Db::name('user')->whereNotIn('id','19,21,29')->select();
6.query()函数,参数为原生的查询sql语句
public function show(){ //query函数原生的sql查询语句 $data=Db::query("select * from user where bid=3 or bid=4"); // return Db::getlastsql(); //SELECT * FROM `user` WHERE `bname` LIKE '%伟' return json($data); }
execute函数用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false
,否则返回影响的记录数。
使用示例:
Db::execute("update think_user set name='thinkphp' where status=1");
7.null 表达式具有两个快捷方式 whereNull()和 whereNotNull();
Db::name('user')->where('uid','null')->select(); Db::name('user')->where('uid','not null')->select(); Db::name('user')->whereNull('uid')->select(); Db::name('user')->whereNotNull('uid')->select();
三.其它查询
1. 使用 exp 可以自定义字段后的 SQL 语句;
Db::name('user')->where('id','exp','IN (19,21,25)')->select();
Db::name('user')->whereExp('id','IN (19,21,25)')->select();