ThinkPHP5数据库实例详解

浏览21089
更新时间2022-01-20

表达式查询

  1. where('字段名','表达式','查询条件');
  2. whereOr('字段名','表达式','查询条件');

后面全部以 where方法来举例

因表达式条件各不相同,有的结果是一个集合,我们只给出生成的SQL语句,不再给出运行结果,请上机测试!相信大家对运行结果都有预测能力

1、相等 (' eq ' 或 ' = ')

  • 实例:查询think_user表中,id等于3的记录,由于id为主键,所以只有一条返回记录
//1、字符串:eq
$result = Db::table('tp5_staff') -> where('id','eq',1010) -> select();

//2、操作符号:=
$result = Db::table('tp5_staff') -> where('id','=',1010) -> select();

//3、默认为相等,所以中间操作符可省略
$result = Db::table('tp5_staff') -> where('id',1010) -> select();

//输出查询结果
dump($result);
  • 以上三种方式,查询结果完全相同

  • 对应SQL语句:

SELECT * FROM  tp5_staff WHERE id = 1010 ;

2、不相等 ('neq' 或 ' <> ')

  • 实例:查询tp5_staff表中,id 不等 1020 的所有记录(除id=1020之外)
//1、字符串:neq
$result = Db::table('tp5_staff') -> where('id','neq',1020) -> select();

//2、操作符号:<>
$result = Db::table('tp5_staff') -> where('id','<>',1020) -> select();

//输出查询结果
dump($result);
  • 对应SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` <> 1020 ;

3、大于 (' gt ', ' > ')

  • 实例:查询tp5_staff表中,id 大于1020的记录,返回一个数组
//1、字符串:gt
$result = Db::table('tp5_staff') -> where('id','gt',1020) -> select();

//2、操作符号:>
$result = Db::table('tp5_staff') -> where('id','>',1020) -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` > 1020 ;

4、大于等于 (' egt ',' >= ')

//1、字符串:egt
$result = Db::table('tp5_staff') -> where('id','egt',1020) -> select();

//2、操作符号:>=
$result = Db::table('tp5_staff') -> where('id','>=',1020) -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` >= 1020 ;

5、小于 (' lt ',' < ')

  • 实例:查询tp5_staff表中,id 小于1020的记录,返回一个数组
//1、字符串:lt
$result = Db::table('tp5_staff') -> where('id','lt',1020) -> select();

//2、操作符号:<
$result = Db::table('tp5_staff') -> where('id','<',1020) -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` < 1020 ;

6、小于等于 (' elt ',' <= ')

//1、字符串:elt
$result = Db::table('tp5_staff') -> where('id','elt',1020) -> select();

//2、操作符号:<=
$result = Db::table('tp5_staff') -> where('id','<=',1020) -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` <= 1020 ;

7、模糊查询 (' like ')

  • 实例:查询name字段包括”张”字符的记录
//模糊查询:like
$result = Db::table('tp5_staff') -> where('name','like','%张%') -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `name` LIKE '%合肥%' ;

8、区间查询 (between)

  • 语法:where(字段,’between’,’区间’); 区间字符串,第一个是最小值,第二个是最大值

  • 例如:where(‘id’,’betweet’,’5,20’);表示id取值范围从5到20,很直观。

  • 注:区间字符串,也可以用数组替代,推荐用数组,显示更专业,规范。

where(‘id’,’between’,[5,20]);
  • 实例:查询id在1010到1020之间的记录信息
//区间用字符串表示
$result = Db::table('tp5_staff') -> where('id','between','1010,1020') -> select();

//区间用数组表示
$result = Db::table('tp5_staff') -> where('id','between',[1010,1020]) -> select();

//输出查询结果
dump($result);
  • 生成的SQL语句:
SELECT * FROM `tp5_staff` WHERE `id` BETWEEN 1010 AND 1020 ;

9、集合查询 (' in ' , ' not in ')

  • 说明:查询字段的值,必须在或者不在某一个集合内,集合是一个个离散的枚举字面量

  • 例如:where(‘id’,’in’,’9,11,21’); 或者 where(‘id’,’not in’,’9,10,20’);同上,第三个字符串可用数组代替

  • 实例:查询id 等于 1003,1005,1020 的数据,返回一个数组

//集合用字符串表示
$result = Db::table('tp5_staff') -> where('id','in','1003,1005,1020') -> select();
// 取反,即不在某个集合内  not in 
$result = Db::table('tp5_staff') -> where('id','not in','1003,1005,1020') -> select();

//集合用数组表示
$result = Db::table('tp5_staff') -> where('id','in',[1003,1005,1020]) -> select();
// 取反,即不在某个集合内  not in 
$result = Db::table('tp5_staff') -> where('id','not in',[1003,1005,1020]) -> select();
  • 返回是三个元素的数组,即id=1003、id=1005和id = 1020的三条记录

  • 生成SQL语句:

SELECT  *  FROM `tp5_staff` WHERE `id` IN (1003,1005,1020) ;

10、是否为空 (null, not null)

  • 如果判断某字段是否存在值,只需要二个参数,要注意
//判断sex字段是否存在值 null
$result = Db::table('tp5_staff') -> where('sex','null')-> select();

//条件取反:不为空 not null
$result = Db::table('tp5_staff') -> where('sex','not null')-> select();

//如果要判断一个字段值是否为空,要三个参数,中间为'='
$result = Db::table('tp5_staff') -> where('sex','=','null')-> select();
//条件取反:不为空 not null
$result = Db::table('tp5_staff') -> where('sex','=','not null')-> select();
  • 生成的SQL语句(仅以字段是否不为空举例)
SELECT  *  FROM `tp5_staff` WHERE `sex` IS NOT NULL

总结:

本节课以理论为主,具体实例也很简单,请同学们亲自上机做一下,举一反三

相关视频

更多

免费

php8,我来也
初级php8,我来也

34万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.6万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

31万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.7万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.1万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.4万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.2万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.2万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载