博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
掌握Thinkphp3.2.0----SQL查询
阅读量:7212 次
发布时间:2019-06-29

本文共 3029 字,大约阅读时间需要 10 分钟。

首先,先谈一下对查询的理解:查询的对象是数据库中的数据表,一个或多个;查询的限制就是各种条件或要求;查询的结果=表对象+限制(条件)。

对数据表的操作(CRUD)查询是最复杂也是最关键的一步!'SELECT * FROM  WHERE [condition]',WHERE是对基本的限制条件。

对象即数据库中数据表是不用变化的,需要变化的是查询的条件。

条件的形式

  1.基本形式----字符串形式。万能形式,查询不安全(不会自动添加安全符号``),就相当于在前边的sql语句上连缀后边的条件。

1 $user = M('User');2 //字符串的查询条件3 $where_str = '`this is a string`';4 //显示测试结果5 $result = $user -> where($where_str) -> select();6 var_dump($result);

 结果:

  可见就是在WHERE之后的条件中写入该字符串,也就该形式可以实现所有的WHERE关键字的SQL查询。

例如:

  

1         $user = M('User');2         //字符串的查询条件3         $where_str = 'id=1';4         //显示测试结果5         $result = $user -> where($where_str) -> select();6         var_dump($result);

 

结果:

  

  2.数组形式条件。还是针对WHERE查询,就是把WHERE查询的条件分开,例如id=1条件,分成 id 和 1两部分,写入数组id做键,1做值,另外写入控制符。

数组是比较推荐的形式,这里是数组形式,值是字符串或整型或浮点

例子:

1  $user = M('User');2 //数组形式的条件3 $condition['id'] = array(1);4 //显示测试结果5 $result = $user -> where($condition) -> select();6 var_dump($result);

 

结果:

示例

 

 3.对象形式的条件。和数组很像,只是更换了数据的载体为对象(stdClass空对象,PHP程序提供)

  4.表达式查询。实际就是来更改条件中运算符的。根据运算符的不同可能有不同的结构,这种形式相对灵活,可以写出很复杂的SQL查询语句,不行不是还有一个自定义吗。

基本结构:      查询表达式格式:$map['字段名'] = array('表达式','查询条件');---数组形式,值是数组.查询条件可以是数组,只是对有的表达式没有作用,比如EQ

LIKE/NOTLIKE

 

BETWEEN/NOT BETWEEN

1 $user = M('User');2 //表达式形式3 // $map['id'] = array('BETWEEN','1,10');这两种形式一样4 $map['id'] = array('BETWEEN',array(1,10));5 6 $result = $user -> where($map) -> select();7 var_dump($result);

 

IN/NOTIN-----IN是IN,BETWEEN是BETWEEN!

$user = M('User');//表达式形式$map['id'] = array('BETWEEN','1,10');// $map['id'] = array('IN',array(1,6));这两种形式一样$result = $user -> where($map) -> select();var_dump($result);

 

 自定义形式:有点像连缀

还有几种其他的形式,多写,找到合适简便就可以了

快捷方式  | &  

  

等价效果:

1 $user = M('User'); 2         //快捷方式 3         $map['id&user'] = 1; 4         // 等价于 5         // $map['id'] = 1; 6         // $map['user'] = 1; 7         // $map['_logic'] = 'AND'; 8         // 或等价于 9         // $condition = 'id=1 AND user=1';10         $result = $user -> where($map) -> select();11         var_dump($result);

 

和表达式结合:

1 $user = M('User');2         //快捷方式3         $map['id&user'] = array(array('NEQ',1),array('EQ',1),'_multi'=>true);4         $result = $user -> where($map) -> select();5         var_dump($result);

 

结果:

SELECT * FROM `think_user` WHERE ( (`id` <> 1) AND (`user` = 1) ) [ RunTime:0.001000s ]感觉这是最好的

 还有,不一定是连个字段,可以是3个或多个字段

 再:

$map['_string'] = '';连缀字符串,可以连接到其他条件上

$map['query'] = '';URL模式,比较方便

$map['_complex'] = '';被覆盖的时候使用

1 $user = M('User'); 2         //组合查询 3         /*     $map['id'] = 1; 4             $map['_string'] = 'user=1 AND email like 3';继续连接字符串形式的条件 5         */ 6         /*     $map['id'] = 1; 7             $map['_query'] = 'user=1&email=2';//貌似运算符只能是= 8         */ 9         /*     $where['id'] = 1;10             $map['id'] = 1;11             $map['_complex'] = $where;12             $map['_logic'] = 'OR';13         */        14         $result = $user -> where($map) -> select();15         var_dump($result);

 

统计查询:$user->count();

动态查询: getById()  getFieldByUser();

SQL原生

query();读

excute();写

 

转载于:https://www.cnblogs.com/zhengfengyun/p/6107790.html

你可能感兴趣的文章
C++程序设计:原理与实践(进阶篇)15.4 链表
查看>>
《C++面向对象高效编程(第2版)》——3.16 从函数中返回引用
查看>>
《JavaScript精粹(修订版)》——1.6 使用括号和分号结束符(一致的编码方式)...
查看>>
2.4 表单数据的验证
查看>>
《Android游戏开发详解》——第2章,第2.10节使用对象
查看>>
《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
查看>>
MongoDB介绍与安装
查看>>
《C语言接口与实现:创建可重用软件的技术》一1.5 习题
查看>>
《网页设计与前端开发 Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript 从入门到精通》—— 第1章 网页设计基础知识...
查看>>
Maven实战. 3.7NetBeans Maven插件简单使用
查看>>
Android开发技术周报 Issue#17
查看>>
《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性
查看>>
this is incompatible with sql_mode=only_full_group_by
查看>>
TableView编辑状态下跳转页面的崩溃处理
查看>>
java操作阿里云的对象存储OSS
查看>>
linux 如何判断当前用户
查看>>
ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)
查看>>
魔兽世界客户端数据研究(四):M2文件头分析
查看>>
jQuery中getJSON跨域原理详解
查看>>
【MySql】MySql存储,游标,循环的简单使用
查看>>