tp5常用的sql写法

简介: tp5常用的sql写法

原生写法

引入 use/think/Db;        

query 用于查询 其他的用execute
插入记录

$result = Db::execute('insert into sb_ad (ad_name, ad_content ,status) values (1, "456",1)');
dump($result);  
更新记录
$result = Db::execute('update sb_ad set ad_name = "framework" where ad_id = 1 ');
dump($result);        
查询数据
$result = Db::query('select * from sb_ad where ad_id = 1');
print_r($result);
删除数据
$result = Db::execute('delete from sb_ad where ad_id = 2 ');
dump($result);    
其它操作
显示数据库列表
$result = Db::query('show tables from tpshop1');
print_r($result);
清空数据表
$result = Db::execute('TRUNCATE table sb_ad');
dump($result);

 

$data = Db::name('user')->select();

$data = Db::name('user')->where('id',1)->find();

$data = Db::name('user')->where('id',1)->order('paixu','DESC')->limit(4)->select();

 

 查询: 这里的where、order和limit方法就被称之为链式操作方法

 Db::table('think_user')->where('status',1)->order('create_time')->limit(10)->select();

 查询

 Db::table('think_user') ->where('id',1)  ->field('id,name,email')->find();

 //删除

 Db::table('think_user') ->where('status',1)  ->where('id',1)   ->delete();

 

 Db::table('think_user')->where('name','like','%thinkphp')->whereOr('title','like','%thinkphp')->find();

 

 

 子查询李找

 1.

 //打印SQL语句  当select方法的参数为false的时候,表示不进行查询只是返回构建SQL

$subQuery2= Db::table('ssc_admin_user')

->field('id,name')

->where('id','>',10)

->select(false);

SELECT `id`,`name` FROM `ssc_admin_user` WHERE  `id` > 10

 

 2、使用fetchSql方法 打印SQL语句  fetchSql方法表示不进行查询而只是返回构建的SQL语句,并且不仅仅支持select,而是支持所有的CURD查询。



 $subQuery = Db::table('think_user') ->field('id,name') ->where('id','>',10)  ->fetchSql(true) ->select();

输出 SELECT `id`,`name` FROM `think_user` WHERE  `id` > 10



$subQuery = Db::table('think_user')->field('id,name')->where('id','>',10)->buildSql();

输出 SELECT `id`,`name` FROM `think_user` WHERE  `id` > 10

4、使用闭包构造子查询

IN/NOT IN和EXISTS/NOT EXISTS之类的查询可以直接使用闭包作为子查询,例如:

Db::table('think_user')

->where('id','IN',function($query){

$query->table('think_profile')->where('status',1)->field('id');

})

->select();

生成的SQL语句是

SELECT * FROM `think_user` WHERE `id` IN ( SELECT `id` FROM `think_profile` WHERE `status` = 1 )

Db::table('think_user')

->where(function($query){

$query->table('think_profile')->where('status',1);

},'exists')

->find();

生成的SQL语句为



SELECT * FROM `think_user` WHERE EXISTS ( SELECT * FROM `think_profile` WHERE `status` = 1 )

json用法



 Db::table('think_artist')

->alias('a')

->join('think_work w','a.id = w.artist_id')

->join('think_card c','a.card_id = c.id')

->select();

 表名也可以是一个子查询

$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql();

Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();

 因buildSql返回的语句带有(),所以这里不需要在两端再加上()。

 

 

 获取某个字段或者某个列的值

// 获取某个用户的积分

User::where('id',10)->value('score');

// 获取某个列的所有值

User::where('status',1)->column('name');

// 以id为索引

User::where('status',1)->column('name','id');

User::where('status',1)->column('id,name'); // 同tp3的getField

 

目录
相关文章
|
SQL 存储 前端开发
【Mysql】在tp5里边使用原生sql根据格式化时间获取数据
【Mysql】在tp5里边使用原生sql根据格式化时间获取数据
310 0
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
528 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
347 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
247 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1162 3
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1158 1
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
SQL 存储 测试技术