【MySQL】4、Select查询语句

4.Select查询语句

4.1、select语句

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {die("连接失败: " . mysqli_connect_error());
}$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);   if (mysqli_num_rows($result) > 0) {    //判断结果集是否有数据// 输出数据while($row = mysqli_fetch_array($result)) {echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";}
} else {echo "0 结果";
}mysqli_close($conn);
?>

上面这个例子在 $sql 变量中存放由 mysqli_query() 函数返回的数据。接下来,我们使用 mysqli_fetch_array() 函数以数组的形式从记录集返回第一行。每个随后对 mysqli_fetch_array() 函数的调用都会返回记录集中的下一行。 while loop 语句会循环记录集中的所有记录。为了输出每行的值,我们使用了 PHP 的 $result 变量 ($result['FirstName'] 和 $result['LastName'])。

4.2、MySQL Where 条件子句

如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句。

SELECT * FROM user WHERE id = 1

下面的运算符可与 WHERE 子句一起使用:

运算符说明
=等于
!=不等于
>大于
<小于
>=大于或等于
<=小于或等于
BETWEEN介于一个包含范围内
LIKE搜索匹配的模式

注释:SQL 语句对大小写不敏感。WHERE 与 where 等效。

4.3、Order By 排序关键词

ORDER BY 关键词用于对记录集中的数据进行排序。

SELECT column_name(s) FROM table_name ORDER BY column_name

升序或降序的排序

如果您使用 order by 关键词,记录集的排序顺序默认是升序(1 在 9 之前,"a" 在 "p" 之前)。

请使用 DESC 关键词来设定降序排序(9 在 1 之前,"p" 在 "a" 之前):

SELECT column_name(s) FROM table_name ORDER BY column_name DESC

根据两列进行排序

可以根据多个列进行排序。当按照多个列进行排序时,只有第一列相同时才使用第二列:

SELECT column_name(s) FROM table_name ORDER BY column_name1, column_name2

4.4、limit 限定查询语句

limit 关键词用于对指定记录进行查询,常用于分页显示记录。

select * from guestbook limit  4 , 10 //获取从第4条后的10条信息
select * from guestbook order by id desc limit  5       //按降序获取前五条信息

这条语句表示在guestbook表里获取从第5条开始到第14条结束的记录。

4.5、like关键字的模糊查询

1、使用通配符“%”的 where 子句

通配符 % 表示 0 个或多个、任意长度和类型的字符,包括中文汉字。
示例 :查找所有包含“好”字或“高”字的文章(这时可以配合 or 运算符来使用)
select * from tb_file where content like '%好%' or content like '%高%';

2、使用通配符“_”的 where 子句

通配符“_”表示匹配任意的单个字符。
示例 :查找用户名只包含 5 个字符,其中后 4 个字符为 soft 的用户。代码如下:
select * from tb_user where regname like '_soft'; 
注意: 使用 MySQL 做模糊查询要注意编码问题。 如果编码不统一, 那么查询时就容易查不到数据,或返回的数据不匹配。所以在安装 MySQL 时,要保持和系统编码的统一。常用的编码格式有 gb2312、ISO-8859-1、utf8 和 gbk 等。

4.6、常规多表查询(两个表具有相同的公共字段)

selete * form a,b where a.c=b.c      //c为两个表中相同的字段,返回a表和b表条件匹配的所有记录
select * from a left join b where a.c=b.c        //效果同第一句,返回a表和b表条件匹配的所有记录
注意:
1、第二条语句中,如果用on代替where,则会返回a表所有的记录和b表条件匹配的记录。
2、on筛选后再用where子句筛选,和只用where筛选子句的效果相同。
3、两(多)个表查询,1(条记录)-1(条记录)的记录查询出来将显示一条。1(条记录)-N(条记录)的记录查询将显示N条,1部分重复显示。

left join左连接显示两个表的数据详解

(两个表具有相同的公共字段)
left join关键字会从左表 那里返回所有的记录,即使在右表 中没有匹配的行。同时返回右表匹配的记录。
语法:
select 左表名.字段名,右表名.字段名 from 左表名 left join 右表名  on 左表名.字段名=右表名.字段名
例如:

"Persons" 表:

Id_PLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York

"Orders" 表:

Id_OOrderNoId_P
3224561
4245621
您可以使用下面的 select语句:
select Persons.LastName, Persons.FirstName, Orders.OrderNo from Persons left join Orders ON Persons.Id_P=Orders.Id_P order by Persons.LastName

结果集:

LastNameFirstNameOrderNo
AdamsJohn22456
AdamsJohn24562
BushGeorge 

注意:在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉(....left jion...where... 查询多个表的结果 =  .... from....where... 查询多个表的结果相同)。

4.7、GROUP BY 语句

GROUP BY 语句用于结合聚合函数(sum、avg、count、max、min),根据一个或多个列对结果集进行分组统计。
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

举例:我们拥有下面这个 "Orders" 表:

O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter

现在,我们希望查找每个客户的总金额(总订单)。我们想要使用 GROUP BY 语句对客户进行组合。

我们使用下列 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer                       //根据客户名字进行统计分组,可同时并存多种分组方式。用逗号隔开

结果集类似这样:

CustomerSUM(OrderPrice)
Bush2000
Carter1700
Adams2000
注意:在查询条件中使用聚合函数,不能使用where子句连接,需要用having子句连接。
//having在group by 之后使用
SELECT * from website GROUP BY name HAVING SUM(count) > 200;

4.8、IN子句

IN 操作符指定查询的条件,允许您在 WHERE 子句中规定多个值。
//下面语句查询1、3年级的学生:
SELECT * FROM student WHERE grade IN ('1','2');

 

 
 
 
 
 

转载于:https://www.cnblogs.com/php99/p/9761839.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、环境调试确认

1、确认系统网络 2、确认yum可用 3、确认关闭iptables规则 4、确认停用selinux 两项安装 yum -y install gcc gcc-c autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim 一次初始化 cd /opt/ mkdir app backup download logs work转载于:https…

JavaScript方法

1、hasOwnProperty&#xff1a;是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是&#xff0c;此方法无法检查该对象的原型链中是否具有该属性&#xff0c;该属性必须是对象本身的一个成员。isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实…

Ajax:如何运用updatepanle进行局部刷新

1.设定ScriptManager的EnablePartialRendering"true"(一般默认为true)2.设定要进行局部刷新panel的UpdateMode"Conditional"(本panel 的id为zz) 这样就可以保在本panle内的控件操作refresh页面时&#xff0c; 不会将整个page刷新&#xff0c;而刷新本pan…

Shell语法—— while 条件语句

while 循环语句 while 循环语句语法格式为&#xff1a; while < 条件表达式 > do指令 done 有关脚本运行的相关用法 命令说明sh file.sh &把 file.sh 脚本放到后台运行&#xff08;后台运行脚本的常用方法&#xff09;ctlc停止执行当前脚本或任务ctlz暂停执行当前脚本…

C变量常量

变量是指其值可以变化的量。计算机中&#xff0c;指令代码、数据都存储于内存中。变量也需要存储在内存中。在计算机中&#xff0c;每个变量都被分配了一块内存空间&#xff0c;在这些空间里存储的就是变量的值。变量之所以可以变化&#xff0c;就是这个存储空间可以存储不同的…

slot

slot就是父组件把内容分发给子组件,插槽模板是slot&#xff0c;它是一个空壳子&#xff0c;因为它的显示与隐藏以及最后用什么样的html模板显示由父组件控制。但是插槽显示的位置确由子组件自身决定&#xff0c;slot写在组件template的什么位置&#xff0c;父组件传过来的模板将…

手把手教你可复用的SSO组件设计(设计篇)

周末陪女朋友去了&#xff0c;没写&#xff0c;告罪&#xff0c;上班后急忙补上。 这里说到了可复用得设计&#xff0c;所谓可复用就是指的&#xff0c;引入Dll&#xff0c;改改配置就能使用&#xff0c;而不是打开源代码东改改西改改再来调试调试最后OK。我们这里尽量提高抽象…

Object类和常用的API

第一章Object类 1.1 概述 1),Object 类是Java语言所有“引用类型”的父类&#xff0c;括我们自定义的类、类库中的类&#xff0c;数组&#xff0c;集合&#xff0c;字符串。 2),所有的的引用类型都从Object类继承了一些方法&#xff1a; 如&#xff0c;1).toString() 2).equal…

前端能力划分

前端学习学的是什么&#xff0c;在不同的阶段我思考这个问题。 最近的结论是&#xff1a;前端学习要学的是前端的三大能力。工程能力&#xff0c;架构能力&#xff0c;开发能力。 工程能力 工程能力的范畴我认为涵盖了项目模板的自动化生成、项目的自动化编译和构建。 当然传统…

英语学习网址

英文写作网 &#xff08; www.4ewriting.com &#xff09;提供英文写作的各种相关技巧&#xff0c;主要内容包括写作语法文法、应用写作、考试作文、写作范文、背景文化 佳作欣赏、原创发表、英文blog、英语笔友、名师指导、写作论坛等。 1. 英语学习&#xff1a;英语学习频道(…

Anaconda+vscode+pytorch环境搭建

1、安装Anaconda Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。在官网上下载https://www.anaconda.com/distribution/&#xff0c;因为服务器在国外会很慢&#xff0c;建议从清华镜像https://mirrors.tuna.tsinghua.ed…

git learn

$ git config --global user.name "Your Name" $ git config --global user.email "emailexample.com"因为Git是分布式版本控制系统&#xff0c;所以&#xff0c;每个机器都必须自报家门&#xff1a;你的名字和Email地址。你也许会担心&#xff0c;如果有人…

C#.NET 中的类型转换

C# 出来也有些日子了&#xff0c;最近由于编程的需要&#xff0c;对 C# 的类型转换做了一些研究&#xff0c;其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之间的转换、字符串和字符数组/字节数组之间的转换、各种数值…

AngularJS的学习--$on、$emit和$broadcast的使用

来源&#xff1a;http://www.cnblogs.com/CraryPrimitiveMan/p/3679552.html AngularJS中的作用域有一个非常有层次和嵌套分明的结构。其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app)&#xff0c;然后其他所有的作用域部分都是继承自这个$rootScope的&a…

17、【 商品管理模块开发】——后台商品图片的springmvc和富文本上传以及ftp文件服务器的开发...

1、FTP文件服务器的搭建&#xff1a; 软件下载&#xff1a;ftpserver&#xff1b; image.png浏览器访问&#xff1a;ftp://127.0.0.1/image.png点击任意一个文件&#xff0c;就可以看到我们图片啦&#xff0c;前提是前面指定的目录里面有图片文件~ image.png2、接口编写&#x…

我们常说……

从过完元旦到现在&#xff0c;乖乖在公司办公的时间很少&#xff0c;好多时候都是在外地&#xff0c;或者是在路上、车上。有n多次&#xff0c;乖乖一天至少坐6个小时的车&#xff0c;回到家里都是带着一身的疲惫&#xff0c;虽然他并不表现出来&#xff0c;但是因为长时间坐车…

那些油管上高质量的学习编程的频道 之一

国内确实有很多不错的学习编程的网站或者个人博客&#xff0c;但是对于初学者&#xff0c;往往更希望获得那种引导性的教学&#xff1a;即一步一步的教你跟着操作的教学。这种教学最好的方式当然就是视频了。毕竟在Apple Podcast上超火爆的斯坦福教授iOS开发的课程也是这种形式…

SQL Server 2005 Express附加(Attach)的数据库为“只读”的解决方法

我的操作系统为Windows 2003 Server , 文件系统NTFS, 在SQL Server 2005 Express 上附加(Attach)从另外一台电脑Copy过来的数据库后&#xff0c;数据库为“只读”。如下图&#xff1a; 解决办法&#xff1a; 打开 SQL Server Configuration Manager, 打开SQL Server SQLEXPRESS…

[导入]blog年终小结

1. 2006-11-30 注册了本域名thws.cn&#xff0c;喜欢的thw.com被注册了&#xff0c;只好退而就其次了&#xff1b;2. 12-20在alexa上登陆站点&#xff0c;综合排名从起初490多万上升到现在的590327,下期566,880&#xff1b;3. 2007-1-11适逢google PR更新&#xff0c;PR值从0变…

Maven学习笔记(2) --mvn archetype:create 说明

前面一篇相对比较简单。 看完前面的内容我们会来到实战部分&#xff0c;也就是创建一个简单的项目 1 mvn archetype:create -DgroupIdorg.sonatype.mavenbook.ch03 \ 2 -DartifactIdsimple \ 3 -DpackageNameorg.sonatype.mavenbook 于是我们得到了步入Maven领域的第一份打击 真…