ThinkPHP6.0 链式SQL语句

查询单个数据

$user = Db::query('select * from `user`');
$user=Db::table('user')->where('UserID',1001)->find();//查询结果为空 返回 null
$user=Db::table('user')->where('UserID',1001)->findOrEmpty();//查询结果为空 返回 空数组

查询结果集(查询结果返回多条数据的意思)

$user=Db::table('user')->where('UserID',1001)->select();
$user=Db::table('user')->where('UserID', 1001)->select()->toArray();

查询一个字段

$user=Db::table('user')->where('UserID',1002)->value('UserName');//只能返回一条数据

查询一列

        $user=Db::table('user')->where('Password',123456)->column('UserName');//可以返回多条数据

添加数据

        $data=['UserID'=>'1005','UserName'=>'Season','Password'=>'123456'];
Db::name('user')->insert($data);

修改数据

        DB::table('user')->where('UserID',1005)->update(['Password'=>123]);

删除数据

根据主键删除

Db::table('user')->delete([1002,1003]);
条件删除

    Db::table('user')->where('Password',123)->delete();

查询数据

格式 where('字段名','查询表达式','查询条件');
            $user=Db::table('user')->where("UserID","=",1001)->select();

模糊查询

        $user=Db::table('user')->where('UserName','like','s%')->select();

区间查询

        $user=Db::table('user')->where('UserID','between','1001,1003')->select();

IN查询

        $user=Db::table('user')->where('UserID','in',[1001,1003])->select();

Not Null

        $user=Db::table('user')->where('Password','not null')->select();

Null

        $user=Db::table('user')->where('Password',null)->select();

链式操作示例

        $user=Db::table('user')->where('Password',123456)->order('UserName')->select();

field操作(输出选择的字段名的数据)

        $user=Db::table('user')->field('UserID,UserName')->select();

链式alias操作,设置表的名称(为了方便后面内容的书写)

        $user=Db::table('user')->alias('a')->where('a.UserID',1001)->select();

limit 操作

        $user=Db::table('user')->limit(2)->select();

page操作

        $user=Db::table('user')->page(2,5)->select();

order操作,默认asc

        $user=Db::table('user')->order('UserID')->select();
$user=Db::table('user')->order('UserID','desc')->select();

group 操作

        $user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->select();

having操作

$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->having('u.Status>0')->select();

join操作

​ INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行

​ LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

				     RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

				       FULL JOIN: 只要其中一个表中存在匹配,就返回行

Transaction(自动):当函数内的sql语句出现错误了,则函数内的sql语句都不执行

Db::Transaction(function (){
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
});

startTrans(手动):当sql语句出现错误了,则sql语句都不执行

Db::startTrans();
try {
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]); Db::commit();//提交事务
}catch (\Exception $e){
echo '执行SQL失败,开始回滚数据';
Db::rollback();
}

获取器:$value 所有字段名是“UserName”的数据 $data所有数据

$user=Db::name('user')->withAttr('UserName',function ($value,$data){
var_dump($value);
var_dump($data);
})->select();;

ThinkPHP6.0 链式SQL语句的更多相关文章

  1. Rxjava2.0 链式请求异常处理

    使用Rxjava2.0的过程中,难免会遇到链式请求,而链式请求一般都是第一个抛异常,那么后面的请求都是不会走的.现在来讨论一下链式请求的一种异常处理方法.例如: 一个登录-->通过登录返回的to ...

  2. mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).

    It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...

  3. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

  4. MySQL中的基本SQL语句

    标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ...

  5. 参数化SQL语句

    避免SQL注入的方法有两种:一是所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些性能,并且存储过程可以由专门的数据库管理员(DBA)编写和集中管理,不过这种做法有时候针对相 ...

  6. 一条SQL语句求前面记录的平均值

    有算法要求如下: For (i=1,i<=10,i++) { ta[i] = (t[1] + t[2] + ... + t[i]) / i; } 用一条SQL语句实现它: 分别用表变量 @ta ...

  7. Entity Framework 在MySQL中执行SQL语句,关于参数问题

    在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...

  8. 解决Mysql搭建成功后执行sql语句报错以及区分大小写问题

    刚搭建完mysql 8.0以后会: 一.表区分大小写, 二.执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not i ...

  9. sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)

    sql的行转列(PIVOT)与列转行(UNPIVOT)   在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...

  10. 事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句

    事务控制语句 在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作.因此开始一个事务,必须使用BEGIN.START TRANSACTION,或者执行SE ...

随机推荐

  1. Java 开源项目整合

    在JAVA学习过程中,学习到的简单项目,在这里记录下. SSM框架的整合 使用到的框架:SpringMVC + Spring + MyBatis 地址:https://github.com/liyif ...

  2. Java设计模式 —— 代理模式

    15 代理模式 15.1 代理模式概述 Proxy Pattern: 给某一个对象提供一个代理或占位符,由代理对象来控制对原对象的访问. 代理对象是客户端和目标对象的之前的桥梁,它接收来自客户端的请求 ...

  3. devops工具链基建建设评价标准

    之所以写这篇是因为有朋友私下让我完善下基建建设的标准和四个阶梯划分,然后让我一定要把腾讯和百度加到基建建设的排名中(看热闹不嫌事大). 基建infra建设四个考察维度 1)工具链完整性:该有的工具是否 ...

  4. MySQL 主从延迟的常见原因及解决方法

    承蒙大家的支持,刚上市的<MySQL实战>已经跃居京东自营数据库图书热卖榜第 1 名,收到的反馈也普遍不错.对该书感兴趣的童鞋可通过右边的链接购买.目前,京东自营有活动,只需 5 折. 主 ...

  5. [C++核心编程] 1、内存分区模型

    文章目录 1 内存分区模型 1.1 程序运行前 1.2 程序运行后 1.3 new操作符 1 内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进 ...

  6. JUC并发常用工具学习

    今天主要来和大家分享一下JUC相关的一些简单知识,线程池文章就不介绍了,前面的文章有介绍,本文主要介绍Lock和认识synchronized和并发的一些工具类的使用. Lock 传统的锁有synchr ...

  7. 2022-08-15:k8s安装pgadmin,yaml如何写?

    2022-08-15:k8s安装pgadmin,yaml如何写? 答案2022-08-15: yaml如下: # 依赖postgres.yaml apiVersion: apps/v1 kind: D ...

  8. 2022-07-25:xiu是用rust语言编写的流媒体服务器软件项目。k8s安装xiu,drone文件如何写?

    2022-07-25:xiu是用rust语言编写的流媒体服务器软件项目.k8s安装xiu,drone文件如何写? 答案2022-07-25: 云原生环境不可能完全一样,只能做参考. 我采用的是dron ...

  9. 2022-04-27:Alice 有一个下标从 0 开始的数组 arr ,由 n 个正整数组成。她会选择一个任意的 正整数 k 并按下述方式创建两个下标从 0 开始的新整数数组 lower 和 hig

    2022-04-27:Alice 有一个下标从 0 开始的数组 arr ,由 n 个正整数组成.她会选择一个任意的 正整数 k 并按下述方式创建两个下标从 0 开始的新整数数组 lower 和 hig ...

  10. 2021-04-08:给定一个单链表的头节点head,请判断该链表是否为回文结构。

    2021-04-08:给定一个单链表的头节点head,请判断该链表是否为回文结构. 福大大 答案2021-04-08: 1.找中点. 2.按中点切分成两个链表. 3.反转右边链表. 4.相等判断. 5 ...