zoukankan      html  css  js  c++  java
  • SQL 连贯操作 [1]

    一. 连贯入门

    查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两位。

    在 Home/controller/UserController.class.php 下插入

          1、连贯操作入门

    $user = M('User');
    var_dump($user->where('id in (1,2,3,4)')->order('date DESC')->limit(2)->select());

    得到的SQL查询语句为

    PS:这里的 where、order 和 limit 方法都是连贯操作方法,所以它们都能返回$user本身,
    可以互换位置。而 select 方法不是连贯方法,需要放在最后,用以显示数据集。

        2、数组操作

    $user = M('User');
    var_dump($user->select( array('where'=>'id in (1,2,3,4)', 'limit'=>'2','order'=>'date DESC')));

    或者是

    $user = M('User');
    var_dump($user->select(array('where'=>array('id'=>array('neq','1')),'order'=>'date DESC','limit'=>'2')));    

    二. 连贯方法

    1.where
    where 方法支持字符串条件、数组条件(推荐用法)和多次调用

    //字符串方式
    $user = M('User');
    var_dump($user->where('id=1')->select());

    //索引数组方式
    $user = M('User');
    $map['id'] = 1; 
    var_dump($user->where($map)->select());

    $user = M('User');
    $map['id'] =  array('eq', 1);
    var_dump($user->where($map)->where('user="蜡笔小新"')->select());

    2.order
    order 用于对结果集排序。

    //倒序
    $user = M('User');
    $map['id'] =  array('eq', 1);
    var_dump($user->order('id desc')->select()); //正序默认或 ASC

    //第二排序
    var_dump($user->order('id desc,email desc')->select());
    PS:先按 id 倒序,再按 email 倒序

    这个用法在这个数据库里是没有什么意义的,但是如果是在比较成绩的时候就可以使用了,比如将id换成语文成绩,email换成数学成绩,

    当语文成绩是一样的时候,那这时候就比较数学成绩了,这时候才用到两个排序的功能。

    //数组形式防止字段和mysql关键字冲突
    $user = M('User');
    $map['id'] =  array('eq', 1);
    var_dump($user->order( array('id'=>'DESC'))->select());

    使用数组的形式就是能够在SQL查询的时候在user等字段上加上``符号,更安全。

    3.feild
    feild 方法可以返回或操作字段,可以用于查询和写入操作。

    只显示id和user两个字段
    $user = M('User');
    var_dump($user->field('id, user')->select());

    使用SQL函数和别名

    $user = M('User');
    var_dump($user->field('SUM(id) as nihao, user')->select());

    其中 'SUM(id) as nihao 中的nihao为设置的别名,在浏览器中显示为

    使用数组参数结合SQL函数

    $user = M('User');
    var_dump($user->field( array('id','LEFT(user,3)'=>'left_user'))->select());

    这时只显示user中数据的前三个字

    并且其中的 left_user 也是设置的别名,在SQL查询语句中为:

    获取所有字段

    $user = M('User');
    var_dump($user->field()->select()); 

    4.limit
    limit 方法主要用于指定查询和操作的数量。

    限制结果集数量

    $user = M('User');
    var_dump($user->limit(2)->select());

    分页查询

    $user = M('User');
    var_dump($user->limit(0,2)->select()); 

    5.page
    page 方法完全用于分页查询。

    $user = M('User');
    var_dump($user->page(1,2)->select()); //第一个1是页码数,第二个2是条数

    6.table
    table 方法用于数据表操作,主要是切换数据表或多表操作。

    切换数据表

    $user = M('User');
    var_dump($user->table('think_info')->select());

    获取简化表名

    $user = M('User');
    var_dump($user->table('__USER__')->select()); 

    注意的是,因为数据表名为think_user,所以这里是__USER__,即USER两边都是两个下划线,且必须大写,这里的USER是数据表的后缀名

    多表查询

    $user = M('User');
    var_dump($user->field('a.id,b.id')->table('__USER__ a,__INFO__ b')->select());

    也就是获得两个数据表中的id,在浏览器中为

    在SQL查询语句中为

    多表查询,使用数组形式避免关键字冲突

    $user = M('User');
    var_dump($user->field('a.id,b.id')->table( array('think_user'=>'a',
    'think_info'=>'b'))->select());

    这时,即为查询的数据表加上``符号。

    alias 用于设置数据表别名

    $user = M('User');
    var_dump($user->alias('a')->select());

    不使用别名的时候:

    使用别名的时候

    都没有了``符号,也不知道是用来干嘛的

  • 相关阅读:
    centOS 6.5下升级mysql,从5.1升级到5.6
    利用PHP脚本辅助MySQL数据库管理5-检查异常数据
    利用PHP脚本辅助MySQL数据库管理4-两个库表结构差异比较
    利用PHP脚本辅助MySQL数据库管理3-删除重复表索引
    利用PHP脚本辅助MySQL数据库管理2-表主键表索引
    利用PHP脚本辅助MySQL数据库管理1-表结构
    Linux驱动设计——内存与IO访问
    Linux驱动设计—— 驱动调试技术
    Linux系统编程@终端IO
    Linux驱动设计—— 内外存访问
  • 原文地址:https://www.cnblogs.com/jacson/p/4476818.html
Copyright © 2011-2022 走看看