ThinkPHP学习笔记(五):数据库操作二
2017-01-21 16:26
417 查看
文章使用的数据库:SQL文件
加上 true 的话,就是作为 UNION ALL 进行查询了,会把重复的数据也给查询出来
1)连贯操作之order排序
order(字符串)多个条件的话用英文逗号隔开$data = M('User')->order("score desc, id asc")->select(); dump($data); //得到的查询条件是:SELECT * FROM `mk_user` ORDER BY score desc, id asc
2)连贯操作之field方法
field(string) string 传入多个字段名用英文逗号隔开$data = M('User')->field('id, user_name')->order("score desc, id asc")->select(); dump($data); //得到的查询条件是: SELECT `id`,`user_name` FROM `mk_user` ORDER BY score desc, id asc // 在filed里,进行反字段查找时,两个字段之间不可以加上空格("id, user_name"),一定得去掉空格才能够查找相反的字段 $data = M('User')->field('id,user_name', true)->order("score desc, id asc")->select(); dump($data); //得到的查询条件是:SELECT `user_name`,`nick_name`,`password`,`create_date`,`update_date`,`score` FROM `mk_user` ORDER BY score desc, id asc
3)连贯操作之limit和page方法
limit(start, length)$data = M('User') ->field('id,user_name',true) ->order("score desc, id asc") ->limit(1,5) ->select(); //得到的查询条件是:SELECT `nick_name`,`password`,`create_date`,`update_date`,`score` FROM `mk_user` ORDER BY score desc, id asc LIMIT 1,5 //page(页码, 每页的页数(默认20)) $data = M('User') ->field('id,user_name',true) ->order("id asc") ->page(1,5) ->select(); //得到的查询条件是:SELECT `nick_name`,`password`,`create_date`,`update_date`,`score` FROM `mk_user` ORDER BY id asc LIMIT 0,5
4)连贯操作之group和having方法
$data = M('User')->field('score,count(*) as total')->having('score >= 90')->group('score')->select(); //得到的查询条件是:SELECT `score`,count(*) as total FROM `mk_user` GROUP BY score HAVING score >= 90
5)多表查询之table方法
//table(array('表名'=>'别名')) 表名需要加前缀 $data = M()->table(array('mk_user'=>'user', 'mk_userinfo'=>'info'))->where('user.id=info.user_id')->select(); //得到的查询条件是:SELECT * FROM `mk_user` `user`,`mk_userinfo` `info` WHERE ( user.id=info.user_id )
6)多表查询之join方法
join()方法 支持字符串和数组// 1)默认为左关联 $data = M('user')->join('mk_userinfo On mk_userinfo.user_id=mk_user.id')->select(); //得到的查询条件是:SELECT * FROM `mk_user` LEFT JOIN mk_userinfo On mk_userinfo.user_id=mk_user.id // 2)右关联 $data = M('user')->join('Right join mk_userinfo On mk_userinfo.user_id=mk_user.id')->select(); //得到的查询条件是:SELECT * FROM `mk_user` Right join mk_userinfo On mk_userinfo.user_id=mk_user.id // 3)内关联 $data = M('user')->join('inner join mk_userinfo On mk_userinfo.user_id=mk_user.id')->select(); //得到的查询条件是:SELECT * FROM `mk_user` inner join mk_userinfo On mk_userinfo.user_id=mk_user.id // 4)数组 $data = M('user') ->join(array('mk_userinfo On mk_userinfo.user_id=mk_user.id')) ->select(); //得到的查询条件是:SELECT * FROM `mk_user` LEFT JOIN mk_userinfo On mk_userinfo.user_id=mk_user.id
7)多表查询之union方法
union(‘string array’, true/false) 支持字符串和数组加上 true 的话,就是作为 UNION ALL 进行查询了,会把重复的数据也给查询出来
$data = M('User') ->field('user_name,id') ->union('select user_name,id from mk_user2') ->select(); //得到的查询条件是:SELECT `user_name`,`id` FROM `mk_user` UNION select user_name,id from mk_user2 $data = M('User') ->field('user_name,id') ->union(array('field'=>'user_name, id', 'table'=>'mk_user2'), true) // ->union(array('field'=>'user_name, id', 'table'=>'mk_user3'), true) ->select(); //得到的查询条件是:SELECT `user_name`,`id` FROM `mk_user` UNION ALL SELECT `user_name`,`id` FROM `mk_user2`
8)过滤查询之distinct方法
过滤查询只要加上 distinct 即可过滤重复的数据$data = M('User')->distinct(true)->field('score')->order('score asc')->select(); //得到的查询条件是:SELECT DISTINCT `score` FROM `mk_user` ORDER BY score asc
相关文章推荐
- ThinkPHP学习笔记(十八)数据库表的关联操作
- ThinkPHP学习笔记(五)使用模型操作数据库之CURD
- 学习thinkPHP 笔记(1)————————数据库操作 自写函数getbaseWhere() 和 where等操作
- PHP学习笔记之三:数据库基本操作
- 学习笔记:jdbc连接、操作数据库SQL Server 2008 ——MyEclipse web示例
- QT sqlite3数据库读取、容器操作、文件读写——学习笔记。
- MySQL学习笔记2:数据库的基本操作
- PHP学习笔记之三 数据库基本操作
- 【学习笔记】C#学习笔记(操作数据库中的数据)
- php学习笔记(十七)简单的数据库操作链接
- SQLITE学习笔记二(数据库管理,命令行操作)
- ThinkPHP学习笔记(八)CURD的的相关操作以及表的关联查询等
- MySQL入门很简单-学习笔记 - 第 5 章 操作数据库
- Asp.net数据库SQL数据库操作学习笔记
- ASP.NET学习笔记:数据库操作 (2009.11.10)
- 【VC++ 中使用ADO操作数据库学习笔记】_ConnectionPtr指针的基本用法
- [perl学习笔记]perl数据库操作(很简单的,没有任何)
- C#操作数据库 学习笔记
- MySQL学习笔记2:数据库的基本操作(创建删除查看)
- Asp.net数据库SQL数据库操作学习笔记