文章地址:

(转) shopnc数据库操作

系统模型提供了一系列快捷操作的方法,可以大幅提高开发效率。目前已提供的方法主要有select、find、limit、table、order、where、field、on、join、count、page、attr、showpage、insert、insertAll、delete、update、group、having、distinct、clear、query、execute、sum、avg、max、min、setInc、setDec、和动态方法getby_、getfby_。
1.    Select 方法:取得查询信息,返回结果为数组,如果未找到数据返回null,select一般在where,order,tabale等方法的后面,作为最后一个方法来使用。如:
$model = Model('member');
// 查询会员表全部信息
$model->select();
//取得性别为1的会员列表信息, 注意:select方法需要在连贯操作中的最后一步出现
$model->where(array('member_sex'=>1))->select();
Select 方法可以传入主键ID,系统会自动查找对应信息,如:
// 查询主键ID为5的会员信息
$model = Model('member');
$model->select(5);
2.    Find 方法:取得一条记录信息,find同select一样,一般作为最后一个方法来使用,如:
$model = Model('member');
// 查询ID为5的会员信息
$model->where(array('member_id'=>5))->find();
Find方法可以传入主键ID,系统会自动查找对应信息,如:
$model = Model('member');
// 查询主键ID为5的会员信息
$model->find(5);
3.    Limit 方法:指定返回多少条记录数,
$model = Model('member');
$model->limit(4)->select();          // 等同于SELECT * FROM member LIMIT 4;
$model->limit('4,10')->select();     // 等同于SELECT * FROM member LIMIT 4,10;
4.    Table方法:指定要操作的数据表名称,返回模型实例本身,如:
$model = Model();
// 查询主键ID为5的会员信息
$model->table('member')->find(5);
多表联合查询时,可以传入多个表名称,如:
// 内链接查询member和store表,并返回前两条记录
$on = 'store.member_id=member.member_id';
$model->table('member,store')->join('inner')->on($on)->limit(2)->select();
如果实例化时指定了表名,则可以不使用table方法指定表名,如:
$model = Model('member');
$model ->limit(4)->select();   // 查询前条4会员记录
5.    Order 方法:指定排序的参数,返回模型实例本身,如:
$model->table('member')->order('member_id desc')->limit(4)->select();
也可指定多个字段进行排序,如:
$model->table('member')->order('member_id desc,member_sex asc')->select();
6.    Where 方法:指定sql执行的条件,返回模型实例本身,入可传入数组或字段串,如:
//传入数组条件
$model->where(array('member_id'=>5))->find();
//传入字符串条件
$model->where(array('member_id=5'))->find();
//传入多表关联条件
$model->table('member,store');
$model->where('store.store_id=member.store_id and store.store_id=2')->find();
7.    Field 方法:指定要查询的字段,不使用field方法时,默认查询所有字段,如:
$model->field('member_id,member_name')->select();
8.    On 方法:指定多表联查时的字段关系。
9.    Join 方法:指定多表联查时的链接类型, 支持内链接、左链接(默认)、右链接。On与join方法需要一起使用,如:
$model = Model();
//内链接查询member和store表,返回会员ID为6的记录信息
$field = 'member.member_name,store.store_name';
$on = 'store.member_id=member.member_id';
$model->table('member,store')->field($field);
$model->join('inner')->on($on)->where(array('member.member_id'=>6))->find();   
三表关联查询如下:
$model = Model();
//内链接查询member和store,然后左链接store_class,查询会员ID为6的记录信息
$field = 'member.member_name,store.store_name,store_class.sc_name';
$on = 'store.member_id=member.member_id,store.sc_id=store_class.sc_id';
$model->table('member,store,store_class')->field($field);
$model->join('inner,left')->on($on)->where('member.member_id=6')->find();
10. Count 方法:返回记录总数量,如:
$model = Model('member');
//返回会员表总行数
$model->count();
//返回会员ID大于15的记录数
$model->where('member_id>15')->count();
11. Page 方法:实现记录分页,格式为page(每页显示数,总记录数),总记录数可以人为指定,也可以为空让系统自动去计算,如:
//每页显示10条数据
$model = Model('member');
//系统会跟据每页显示数和已知属性自动计算总记录数
$model->page(10)->order('member_id desc')->select();
//每页显示10条数据,指定总记录为1000条,系统将不再计算总记录数
$model->page(10, 1000)->order('member_id desc')->select();
注意:如果同时使用where和page方法时,where方法要在page方法前面使用,如:
$model->where('id=1')->page(10)->select();    //正确
$model->page(10)->where('id=1')->select();    //错误
12. Showpage 方法:返回分页超链接,结合page方法完成分页,如:
//显示上一页下一下链接
$model->showpage(1);    //样式1
$model->showpage(2);    //样式2(默认)
13. Insert 方法:插入单行数据,并返回最新插入的主键ID,如果插入失败返回false,完整格式如下:
insert($data='', $replace=false, $options=array())
//向link表插入数据,并返回最新主键ID
$model = Model('table');
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'http://www.shopnc.net',
'link_sort'=>32,
);
$model->insert($data);
Insert方法支持延迟插入,加入$options参数即可,如:
$model->insert($data,false,array('priority'=>'DELAYED'));
Insert方法同样支持replace操作,将第二个参数设置为true即可,如:
$model = Model();
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'http://www.shopnc.net',
'link_sort'=>32,
'link_id'=>30
);
$model->table('link')->insert($data,true);
14. InsertAll 方法:实现批量插入数据,如:
$model = Model('link');
$data = array(
array(
'link_title'=>'新浪',
'link_url'=>'http://www.sina.com',
'link_sort'=>32,
),
array(
'link_title'=>'百度',
'link_url'=>'http://www.baidu.com',
'link_sort'=>30,
)
);
$model->insertAll($data);
15. Delete 方法:删除记录,如:
$model = Model('link');
//删除主键为5的记录
$model->delete(5);
//或者
$model->where(array('link_id'=>5))->delete();
16. Update 方法:数据更新,如果更新内容含有主键下标,自动以该主键为更新条件,如:
$model = Model();
//更新主键(link_id)为37的记录信息
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'http://www.shponc.net',
'link_sort'=>32,
'link_id'=>37
);
$model->table('link')->update($data);
//指定更新条件
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'http://www.shponc.net',
'link_sort'=>32
);
$model->table('link')->where(array('link_id'=>37))->update($data);
17. Group 方法:实现分组功能,如:
//查询每个店铺发布商品的数量
$model = Model('goods');
$model->field('store_id,count(*) as count')->group('store_id')->select();
18. Having 方法:结合group方法,进行条件过滤,传入参数为字符串形式,如:
//查找发布商品超过500的店铺ID
$model = Model('goods');
$model->field('store_id,count(*) as nc_count')->group('store_id')->having('nc_count>500')->select();
19. Distinct 方法:可以去除列中相同的值,distinct只接受一个参数值true,如果不需要重复值筛选,不使用该方法即可。
//查找拥有商品的店铺主键
$model = Model();
$model->table('goods')->field('store_id')->distinct(true)->select();
20. Clear 方法:清空单个表中的内容,返回true/false,如:
//清空link表
$model = Model();
$model->table('link')->clear();
21. Query/execute 方法,两个方法均用于直接执行SQL语句,query方法用于查询,execute方法用于更新、写入和删除操作,如:
Model()->query('SELECT * FROM `shopnc_member` LIMIT 10');
Model()->execute('UPDATE `shopnc_goods` SET goods_click=1000 WHERE goods_id=2');
22. Sum/Avg/Max/Min 方法:求和、求平均值、取最大值、取最小值,如:
$model = Model();
//返回所有商品总价格之和
$model->table('goods')->sum('price');
//上面等同于SQL:SELECT SUM(price) AS nc_sum FROM `goods`
//取商品表中所有商品的平均价格
$model->table('goods')->avg('price');
//以上等同于SQL:SELECT AVG(price) AS nc_avg FROM `goods` LIMIT 1
//取商品的最高价
$model->table('goods')->max('price');
//以上等同于SQL:SELECT MAX(price) AS nc_max FROM `goods` LIMIT 1
//取商品的最低价
$model->table('goods')->min('price');
//以上等同于SQL:SELECT MIN(price) AS nc_min FROM `goods` LIMIT 1
23. 自增/自减:系统使用setInc和setDec完成自增和自减,示例如下:
$model = Model();
//使主键值为2的商品点击量加1000
$model->table('goods')->where(array('goods_id'=>2))->setInc('goods_click',1000);
//等同于:UPDATE `goods` SET goods_click=goods_click+3 WHERE ( goods_id = '2' )
//结合exp参数,使用该商品点击量减1000
$model = Model('goods');
$data = array(
'goods_id' => 2,
'goods_click' =>array('exp','goods_click-1000'));
$model->update($data);
//等同于:UPDATE `goods` SET goods_click=goods_click-1000 WHERE ( goods_id = '2' )
24. 动态方法:系统内置getby_和getfby_两个动态方法,格式如下:
getby_ + 字段名(字段值)
getfby_ + 条件字段名(条件字段值,返回字段名)
结合示例来说明动态方法的使用
$model = Model('member');
//使用getby_动态方法,取得member_name为kevin的会员信息
$model->getby_member_name('kevin');
//等同于SQL:SELECT * FROM `member` WHERE ( member_name = 'kevin' ) LIMIT 1
//使用getfby_方法,取得member_id为6的会员名
$a = $model->getfby_member_id(6,'member_name');    //返回 kevin
//等同于SQL:SELECT member_name FROM `shopnc_member` WHERE ( member_id = '6' ) LIMIT 1
25. 设置SQL执行优先级:系统支持使用SQL关键字LOW_PRIORITY、DELAYED、HIGH_PRIORITY,格式如下:
attr(关键字)
结合示例来说明动态方法的使用
$model = Model('goods');
$model->where(array('goods_id' => 100))->attr('LOW_PRIORITY');
$model->update(array('goods_click' =>array('exp','goods_click+1')));
//等同于
//UPDATE LOW_PRIORITY `shopnc_goods` SET goods_click=goods_click+1 WHERE ( goods_id = '100' )
<div id="blog_post_info">
好文要顶 关注我 收藏该文

以为是帅哥
关注 - 3
粉丝 - 5

+加关注
0
0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/afei-happy/p/7323726.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/afei-happy/p/7323726.html" title="发布于 2017-08-09 10:08">Mysql开发规范</a>
<br>
<a href="https://www.cnblogs.com/afei-happy/p/7839981.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/afei-happy/p/7839981.html" title="发布于 2017-11-15 17:21">ShopNC学习笔记(转)</a>
posted on 2017-11-15 16:31  以为是帅哥  阅读(2196)  评论(0)  编辑  收藏

shopnc数据库操作相关推荐

  1. Python的数据库操作(Sqlalchemy)

    ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...

  2. 便捷,轻巧的Groovy数据库操作

    本文主要介绍Groovy对数据的CRUD操作,熟悉groovy.sql包,测试使用的数据库是H2. 1.数据库连接配置 //数据库连接配置 def db = [url:'jdbc:h2:mem:gro ...

  3. Django模型之数据库操作-查询

    六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...

  4. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  5. .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...

    ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...

  6. oracle可以面向对象吗,Jbdc助手-数据库操作面向对象的实现(oracle)

    前言: 如果你对hibernate不是那样的推崇,但感觉jdbc的sqlr操作又不是那么OO的话,那么这篇文章可能给能带来或多或少的期望- 在很长的一段时间里,中总感觉应该对sql的操作来实现一种集成 ...

  7. yii mysql数据库操作_Yii2数据库操作常用方法小结

    本文实例讲述了Yii2数据库操作常用方法.分享给大家供大家参考,具体如下: 查询: // find the customers whose primary key value is 10 $custo ...

  8. mfc 访问局域网mysql_数据库操作:MFC连接与MYSQL

    数据库操作:MFC连接与MYSQL mysql 与MFC通常情况下都是用ODBC或者是是ADO相连接,但有点伤 我直接找网上的教程,仿照着进行连接,试了n边还是只能连接上,但无法进行如图读取,写入的操 ...

  9. 数据库操作(使用FMDB)

    iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...

  10. apache2.4.9 开启path_info访问_【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)...

    新建项目 打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框: 注意我们的选择项: 运行平台:.NET FrameWork 4.5 项目模板:ASP.NET Web Ap ...

最新文章

  1. 大数据引擎启动时常见错误汇总
  2. scipy.spatial.distance 与 sklearn cosine_similarity
  3. 关于小程序云开发的一些经典问题处理
  4. 安装sql时挂起的解决方法
  5. 一个戏精程序员的内心独白...
  6. Linux虚拟机添加磁盘
  7. JS 中的== 与 ===
  8. 32. JavaScript 调试
  9. glEnable(GL_DEPTH_TEST)作用
  10. 管理感悟:代码缺的不是注释,而是自解释
  11. pgpool-II 手册
  12. 哪个邮箱域名好?域名是永久的吗?
  13. Python(二)之流程控制(顺序控制、条件控制、循环控制)
  14. appuim框架二次封装-UI自动化-自整理亲自实践
  15. 赵小楼《天道》《遥远的救世主》深度解析(117)分离已有的各种相,得你想要的结果
  16. Linova and Kingdom
  17. HDU - 6555 The Fool(思维)
  18. RecyclerView最后一条显示不全
  19. 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉
  20. linux查看是什么系统

热门文章

  1. 模拟电路学习之稳压管PROTUES
  2. 软考中级-软件设计师 复习指南(2021年11月已通过)
  3. 编译原理(龙书第二版)--怎么求FOLLOW集
  4. Elasticsearch汉字补全和拼写纠错
  5. Flutter与RN
  6. 信息安全技术 代码安全审计规范
  7. 特种浓缩分离:中药提取液的澄清过滤技术
  8. c#字符串的格式化输出
  9. 红帽linux5.4安装教程,红帽企业Linux5.4下ORACLE安装步骤(推荐).pdf
  10. 10个免费的游戏开发引擎