博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MySQL】4、Select查询语句
阅读量:5855 次
发布时间:2019-06-19

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

4.Select查询语句

4.1、select语句

0) { //判断结果集是否有数据 // 输出数据 while($row = mysqli_fetch_array($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
"; }} 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_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York

"Orders" 表:

Id_O OrderNo Id_P
3 22456 1
4 24562 1
您可以使用下面的 select语句:
select Persons.LastName, Persons.FirstName, Orders.OrderNo from Persons left join Orders ON Persons.Id_P=Orders.Id_P order by Persons.LastName

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Bush George  

注意:在使用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_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

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

我们使用下列 SQL 语句:

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

结果集类似这样:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000
注意:在查询条件中使用聚合函数,不能使用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

你可能感兴趣的文章
c语言中p20Flag, 用单片机开发板能否把流水灯数码管动态显示结合起来,两个程序中都有while(1),不知道怎么结...
查看>>
大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口
查看>>
vs环境c++语言教学视频,基于VS Code的C++语言的构建调试环境搭建指南
查看>>
质数口袋c语言,给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正...
查看>>
c语言修改,【C语言】修改下
查看>>
单片机红外通信c语言,用51单片机实现红外通讯源码
查看>>
android 字符串转浮点,Android String类型转换为float、double和int的工具类方法
查看>>
android和flutter关系,Flutter 和 Android 互相传递数据的实现
查看>>
android mobile wifi,华为mobile wifi 2下载-HUAWEI Mobile WiFi 2 安卓版v9.0.1.323-PC6安卓网
查看>>
windows phonegap android,phonegap windows 安装
查看>>
android fragment共享监听,Android Fragment中监听事件
查看>>
android应用开发大赛,喜讯:我院首届“Android应用开发大赛”圆满落幕
查看>>
android蓝牙交互,Android蓝牙通信app
查看>>
将pyecharts的html页面,使用pyecharts生成Echarts网页的实例
查看>>
webview屏蔽加载某段html,分段中的WebView不加载HTML字符串
查看>>
html自定义datajs,HTML5的自定义属性data-*详细介绍和JS操作实例
查看>>
『摄影欣赏』15幅迷人的来自世界各地的婴儿照片【组图】
查看>>
Jquery-Ajax常用总结
查看>>
每日英语:U.S. Media Firms Stymied in China
查看>>
sql转Linq的工具
查看>>