ThinkPHP数据库操作总结

这篇笔记详细介绍了如何使用ThinkPHP6框架进行MySQL数据库操作,包括查询单个和多条数据、字段值的获取、排序、分页、多表查询、聚合函数、数据的增删改查等,内容涵盖了原生SQL语句和链式操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

使用 MySQL 语句操作

查询单个数据 不存在返回null,否则返回数组 可排序查询

多条数据查询 不存在返回空数组,否则返回二维数组 可排序查询

查询某个字段的值 value

查询某一列的值 column  可多列查询 返回数组

链式查询

table 方法主要用于指定操作的数据表

field 方法主要作用是标识要返回或者操作的字段,可以用于查询和写入操作

order 方法用于对操作的结果排序或者优先级限制(desc->倒序,asc->正序 ,默认asc)

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

多条查询

分页查询

多表查询

聚合查询

数据的添加

修改数据 update

自增 增加一个字段的值

自减 减去一个字段的值

删除数据 delete


说明:

        这些都是我再上网课的过程中做的笔记,可能有不足的地方,还请大神指出!

        这是基于ThinkPHP6的代码!


使用 MySQL 语句操作

## 原生查询
    $data = Db::query('select * from `user`');
## 原生新增和修改
    $data = Db::execute("insert into user set `uid`='123',`name`='张三'");  //注意单引号和双引号 (新增)

    $data = Db::execute("update user set `age`='23',`name`='张三' where `uid`=10");  //注意单引号和双引号 (修改)

查询单个数据 不存在返回null,否则返回数组 可排序查询

$data = Db::table('user')->find();                     //无条件查询默认第一个

$data = Db::table('user')->where('uid',12)->find();    //查询uid=12的数据

多条数据查询 不存在返回空数组,否则返回二维数组 可排序查询

$data = Db::table('user')->select();                     //查询user表内所有数据

$data = Db::table('user')->where('uid',12)->select();    //查询uid=12的数据

查询某个字段的值 value

$data = Db::table('user')->where('uid',1)->value('name'); //查询user表下uid=1的那么字段值 返回字符串 不存在返回null

查询某一列的值 column  可多列查询 返回数组

$data = Db::table('user')->column('name');                //查询整张表

$data = Db::table('user')->where('uid',1)->column('name');

$data = Db::table('user')->where('uid',1)->column('name','age');  //此处age为数组下标

链式查询

## 字符串查询
    $data = Db::table('user')->where('uid','>',5)->select();
## 表达式查询
    $data = Db::table('user')
            ->where('uid','>',5)
            ->where('age','<',18)
            ->select();
## 数组条件
    $data = Db::table('user')
            ->where([
                'uid' => '10',
                'age' => '18'
             ])
            ->select();

table 方法主要用于指定操作的数据表

## 单表查询
    $data = Db::table('user')->where('uid','>',5)->select();

## 多表查询
    $data = Db::table('user u,admin a')     //查询user和admin两个表 分别这是别名 u 、a
            ->where('u.uid = a.id')          //设置查询条件u.uid表示user表下的uid字段,a.id表示admin表下的id字段,可多条件查询
            ->select();                     //查询后的数据会拼接在一起
## 数组多表查询
    $data = Db::table([
                'user'=>'u',
                'admin'=>'a'
            ])
            ->where('uid','>',5)            //效果同上
            ->select();

field 方法主要作用是标识要返回或者操作的字段,可以用于查询和写入操作

## 返回两个字段
    $data = Db::table('user')->field('uid,name')->select();                       //查询结果只会显示uid和name两个字段的值

    $data = Db::table('user')->field('uid,name')->where('uid','>',5)->select();   //可添加where条件
## 返回字段改名
    $data = Db::table('user')->field('uid,name as n')->select();                  //查询结果同上(将name字段的下标改为n),也可条件查询 用法同上
## 数组
    $data = Db::table('user')->field(['uid,name'])->select();
## 字段排除
    $data = Db::table('user')->withoutField('uid')->select();                     //查询结果不会显示uid字段的值,也可以添加条件 用法同上
## 使用MySQL的函数
    $data = Db::table('user')->fieldRaw('MAX(age)')->select();                    //查询user表下的最大age值,fieldRaw可以使用MySQL的函数

order 方法用于对操作的结果排序或者优先级限制(desc->倒序,asc->正序 ,默认asc)

## 指定字段排序
    $data = Db::table('user')
            ->field('uid,name')             //限制查询字段
            ->where('uid','>',5)            //设置查询条件
            ->order('age','desc')           //设置按某字段的排序方式进行排序
            ->select();
## 排序数组
    $data = Db::table('user')
            ->field('uid,name')             //限制查询字段
            ->where('uid','>',5)            //设置查询条件
            ->order(['age' => 'desc'])      //设置按某字段的排序方式进行排序
            ->select();

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

## 查询任意条数据
    $data = Db::table('user')
            ->field('uid,name')        //限制查询字段
            ->where('age','>',18)      //设置查询条件
            ->limit(3)                 //设置查询数量
            ->select();

多条查询

## 查询3条数据
    $data = Db::table('user')      //选择表
            ->field('uid',phone,)  //规定显示的字段
            ->where('uid=1')       //限制条件
            ->order('age','desc')  //按年龄倒序排列
            ->limit(3)             //限制查询条数
            ->select();
## 从第几条查询到第几条
    $data = Db::table('user')       //选择表
            ->field('uid','phone')  //规定显示的字段
            ->where('uid=1')        //限制条件
            ->order('age','desc')   //按年龄倒序排列,删除desc则默认正序排列
            ->limit(1,3)            //从第二条查询到第四条。。。。从零开始
            ->select();

分页查询

## 从第0条开始查询出10条数据
    $data = Db::table('user')       //选择表
            ->field('uid','phone')  //规定显示的字段
            ->where('uid=1')        //限制条件
            ->order('age','desc')   //按年龄倒序排列,删除desc则默认正序排列
            ->page(1,10)            //分页查询,,第一页查询十条数据,,从一开始,第一个参数代表页数
                ->select();
## page 组合 limit
    $data = Db::table('user')       //选择表
            ->field('uid','phone')  //规定显示的字段
            ->where('uid=1')        //限制条件
            ->order('age','desc')   //按年龄倒序排列,删除desc则默认正序排列
            ->limit(3)              //限制每页查询出来的条数
            ->page(1)               //指定某一页,,,,0 = 1 效果相同
            ->select();             //查询结果 同上

多表查询

## 内连接 ---->只返回匹配到的
    $data = Db::table('user u')                //选择表(user) 并设置别名u
            ->join('admin a','a.id = u.uid')   //选择另一个表(admin) 并设置别名a,设置匹配条件(a.id = u.uid)
            ->select();
## 左连接 ---->左边表数据全部返回,右边表数据匹配显示,不匹配的显示空
    $data = Db::table('user u')                //选择表(user) 并设置别名u(左边表)
                ->leftJoin('admin a','a.id = u.uid')   //选择另一个表(admin) 并设置别名a(右边表),设置匹配条件(a.id = u.uid)
                ->select();
## 右连接 ---->右边表数据全部返回,左边表数据匹配显示,不匹配的显示空
    $data = Db::table('user u')                //选择表(user) 并设置别名u(左边表)
            ->rightJoin('admin a','a.id = u.uid')   //选择另一个表(admin) 并设置别名a(右边表),设置匹配条件(a.id = u.uid)
            ->select();
## union 操作用于合并两个或多个SELECT语句的结果集(大白话:查询两个表的数据返回数组 数组的下标可以自定义)
    $data = Db::field('uid')                   //设置下标
            ->table('user')                    //选择表
            ->union('SELECT `name` FROM admin')//选择另一表 并设置查询字段
            ->select();

聚合查询

## count 统计数量,参数是要统计的字段名(可选)
    $data = Db::table('user')->count();      // 无条件统计

    $data = Db::table('user')
            ->where('uid','>',5)             // 条件统计(统计uid>5的数量)
            ->count();

## max 获取最大值,参数是要统计的字段名(必须)
    $data = Db::table('user')->max('uid');   //获取user表中uid最大的 (无条件)

    $data = Db::table('user')
            ->where('uid','>',5)             //获取user表中uid>5的age最大的值
            ->max('age');

## min 获取最小值,参数是要统计的字段名(必须)(使用方法同上)
    $data = Db::table('user')->min('uid');   //获取user表中uid最小的 (无条件)

    $data = Db::table('user')
            ->where('uid','>',5)             //获取user表中uid>5的age最小的值
            ->min('age');

## avg 获取平均值,参数是要统计的字段名(必须)
    $data = Db::table('user')->avg('age');  //获取user表中所有age的平均值 (无条件)

    $data = Db::table('user')
            ->where('uid','>',5)            //获取user表中uid>5的age的平均值
            ->avg('age');

## sum 获取总分,参数是要统计的字段名(必须)
    $data = Db::table('user')->sum('age');  //获取user表中所有age的总和 (无条件)

    $data = Db::table('user')
            ->where('uid','>',5)            //获取user表中uid>5的age的总和
            ->sum('age');

数据的添加

## 添加一条数据  添加成功会返回条数 通常为1
    $data = ['name'=>'张三','age'=>18];
    $result = Db::table('user')->insert($data);
## 添加、修改一条数据 save 成功会返回条数 通常为1
    # 添加
        $data = ['name'=>'张三','age'=>18];
        $result = Db::table('user')->save($data);
    # 修改
        $data = ['name'=>'张三','age'=>18,'uid'=>1];   //必须加上主键,主键位置任意
        $result = Db::table('user')->save($data);      //若没有主键需要加上限制条件
## 添加一条数据 返回自增主键
    $data = ['name'=>'张三','age'=>18];
    $result = Db::table('user')->insertGetId($data);
## 添加多条数据 insertAll
    $data = [
        ['name'=>'张三','age'=>18],
        ['name'=>'李四','age'=>20],
        ['name'=>'Tom','age'=>58],
        ['name'=>'Bob','age'=>38]
    ];
    $result = Db::table('user')->insertAll($data);

修改数据 update

## 修改数据
    $data = ['age'=>'12','name'=>'张三'];
    $result = Db::table('user')->where('uid',9)->update($data);   // 需要限制条件

自增 增加一个字段的值

## 字段的值增加1
    $ressult = Db::table('user')->where('uid',6)->inc('age')->update(); // 自增user表下uid=6的age 的值 自增1

## 自定义自增数量
    $ressult = Db::table('user')->where('uid',6)->inc('age',5)->update(); // 自增user表下uid=6的age 的值 自增5

自减 减去一个字段的值

## 字段的值自减1
    $ressult = Db::table('user')->where('uid',6)->dec('age')->update(); // 自减user表下uid=6的age 的值 自减1

## 自定义自减数量
    $ressult = Db::table('user')->where('uid',6)->dec('age',5)->update(); // 自减user表下uid=6的age 的值 自减5

删除数据 delete

## 根据条件删除数据
    $result = Db::table('user')->where('uid',1)->delete();
## 删除主键为2的数据
    $result = Db::table('user')->delete(2);
## 删除整张表的数据
    $result = Db::table('user')->delete(true);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值