这段时间在写后台代码的时候一直在纠结于各种查询语句,之前学过sql server,可是真的用到项目里来就一头雾水了。
学了几天,现在会了一些基本的查询啦,记录一下。
查询id等于1的所有字段,如下
$n=M('tab');
$list=$n->where('id=1')->select()
查询id不等于1的所有字段
$n=M('tab');
$list=$n->where('id!=1')->select();
相似的语句还有很多,id>1,id<1,id>=1,id<=1等
当然查询还有一写表达式如下所示:
EQ:等于
NEQ:不等于
GT:大于
LT:小于
EGT:大于等于
ELT:小于等于
使用方法可以这样:
$n=M('tab')
$sql['id']=array('ELT','9');
$list= $n->where($sql)->select();
意思显而易见,查询id小于等于9的所有字段。
like 的使用也非常常见
例如,查询Lixiao这一字段为”否“的所有字段
$n=M('tab');
$sql = Lixiao . ' like "' . 否 . '"';
$list=$n->where($sql)->select();
用like实现模糊查询很方便,省了很多麻烦
例如查询tab表中姓张的用户的所有字段
$n=M('tab');
$sql = "Name like '张%'";
$list=$n->where($sql)->select;
再比如,查询地点中包含成都的所有字段
$n=M('tab');
$sql = "Place like '%成都%'";
$list=$n->where($sql)->select();
有时候查询需要满足多个条件,可以使用and 或者or来实现
如下:
$n=M('tab');
$sql = " Name like '张%' and Place like '%成都%'";
$list=$n->where($sql)->select();
也可以使用这种方法达到同样的效果:
$n=M('tab');
$where = " Name like '张%' ";
$sql="Place like '%成都%'";
$sql.="&&$where";
$list=$n->where($sql)->select();
如果想仅显示数据库中的n条消息,可以使用limit(n)
n表示的就是查询的数据的条数,
(这里提一下,之前我使用的是volist中的offset="m" length="n",表示的是显示数据库中的从第m条信息开始,一共显示n条,可是这种方法是死的,如果显示的信息是动态的,这种方法就不适用了。)
显示姓张的所有字段(仅显示三条数据)
$sql="Name like '张%'";
$list=M('tab')->where($sql)->limit(3)->select();
还有一个东西很实用,查询最新导入数据库中的三条数据
可以使用order(),desc是倒序,asc是顺序,当然asc是默认的
查询数据库中的倒数三条数据(即最新插入的数据):
$list=M('tab')->order('Time desc')->limit(3)->select();
一下脑袋短路了,现在只想到这些,以后想到再来补充吧,
如果有不对的地方,大神们多多提点,谢谢