ThinkPHP6.0 链式SQL语句
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语句的更多相关文章
- Rxjava2.0 链式请求异常处理
使用Rxjava2.0的过程中,难免会遇到链式请求,而链式请求一般都是第一个抛异常,那么后面的请求都是不会走的.现在来讨论一下链式请求的一种异常处理方法.例如: 一个登录-->通过登录返回的to ...
- mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).
It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...
- orm分组,聚合查询,执行原生sql语句
from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...
- MySQL中的基本SQL语句
标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ...
- 参数化SQL语句
避免SQL注入的方法有两种:一是所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些性能,并且存储过程可以由专门的数据库管理员(DBA)编写和集中管理,不过这种做法有时候针对相 ...
- 一条SQL语句求前面记录的平均值
有算法要求如下: For (i=1,i<=10,i++) { ta[i] = (t[1] + t[2] + ... + t[i]) / i; } 用一条SQL语句实现它: 分别用表变量 @ta ...
- Entity Framework 在MySQL中执行SQL语句,关于参数问题
在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...
- 解决Mysql搭建成功后执行sql语句报错以及区分大小写问题
刚搭建完mysql 8.0以后会: 一.表区分大小写, 二.执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not i ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- 事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
事务控制语句 在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作.因此开始一个事务,必须使用BEGIN.START TRANSACTION,或者执行SE ...
随机推荐
- pandas之设置显示格式
在用 Pandas 做数据分析的过程中,总需要打印数据分析的结果,如果数据体量较大就会存在输出内容不全(部分内容省略)或者换行错误等问题.Pandas 为了解决上述问题,允许你对数据显示格式进行设置. ...
- 四月六号java基础学习
四月六号 1.今天学习了JAVA语言特点,有以下几个特点: 1)简单易学:相对于C/c++语言,java语言省去了指针(pointer).联合体(Unions)以及结构体(struct) 2)面向对象 ...
- 请求被中止: 未能创建 SSL/TLS 安全通道 解决方案
最近项目改造https,有部分请求出现"请求被中止: 未能创建 SSL/TLS 安全通道". 原因应该是,接口方变更了安全协议,而客户端并未启用该协议. 解决办法自然就是:让客户端 ...
- day30:TCP&UDP:socket
目录 1.TCP协议和UDP协议 2.什么是socket? 3.socket正文 1.TCP基本语法 2.TCP循环发消息 3.UDP基本语法 4.UDP循环发消息 4.黏包 5.解决黏包问题 1.解 ...
- 【D02】Bootstrap免费精选模板推荐,附上Django中使用模板教程
前端模板 - Anchor UI KIT 前言 今天介绍一款制作精良.开源.免费的 Bootstrap 模板 -- Anchor UI KIT 该模板使用的是Bootstrap v4版本 本文将介绍如 ...
- Arch Linux配置Java学习环境
1. JDK JDK8:主流版本 $ sudo pacman -S jdk8-openjdk JDK11:将会是下一个主流版本 $ sudo pacman -S jdk11-openjdk JDK19 ...
- 2021年蓝桥杯python真题-路径(数论+动态规划)(LCM、GCD和DP详细介绍)干货满满~
欢迎大家阅读本文章 如果大家对LCM和GCD不是很熟悉,这篇文章将对你有帮助! 本文章也会把动态规划做一定的介绍 题目: GCD和LCM的讲解: GCD的实现-辗转相除法: 在数学中,辗转相除法,又称 ...
- PYTHON数据分析——python基础
利用命令行创建python文件 C:\Users\Your Name>python myfile.py Python 变量命名规则: 变量名必须以字母或下划线字符开头 变量名称不能以数字开头 变 ...
- Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?
索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降.为此,可以采取以下几种方式来减缓这种影响: 1. 限 ...
- Qt第三方库QtAV--- ubuntu编译与运行
Qt第三方库QtAV--- ubuntu编译与运行 今天又要接触这个,把一些错误或者不足的地方重新补充下!!!由于前面一段时间,项目中需要借助QtAV接口进行视频播放,特此记录下整个配置过程.整个代码 ...