MySQL数据库开发与应用04-检索表记录课件.ppt
《MySQL数据库开发与应用04-检索表记录课件.ppt》由会员分享,可在线阅读,更多相关《MySQL数据库开发与应用04-检索表记录课件.ppt(92页珍藏版)》请在三一办公上搜索。
1、MySQL数据库基础与实践,MySQL数据库基础与实践,4,检索表记录,第,章,4检索表记录第章,本章内容,4.1 SELECT基本查询,4.2 条件查询,4.3 分组查询,4.4 表的连接,4.5 子查询,4.6 联合查询,4.7 案例:网上书店系统综合查询,本章内容4.1 SELECT基本查询4.2 条件查询4.3,4.1 SELECT基本查询,4.1.1 SELECTFROM查询语句4.1.2 查询指定字段信息4.1.3 关键字DISTINCT的使用4.1.4 ORDER BY子句的使用4.1.5 LIMIT子句的使用,4.1 SELECT基本查询4.1.1 SELECTFRO,4.1
2、SELECT基本查询,查询数据是使用数据库的最基本也是最重要的方式。基本查询也称为简单查询,是指在查询的过程中只涉及到一个表的查询。,4.1 SELECT基本查询查询数据是使用数据库的最基本也是,4.1.1 SELECTFROM查询语句,SELECT语句的一般格式为:SELECT ALL | DISTINCT ,FROM ,WHERE GROUP BY HAVING ORDER BY ASC | DESCLIMIT start, count,4.1.1 SELECTFROM查询语句SELECT语句的,4.1.1 SELECTFROM查询语句,在SELECT语句的结构中,除了SELECT子句是必
3、不可少的之外,其他子句都是可选的。【例4-1】计算25的平方根并输出MySQL的版本号。SELECT SQRT(25),VERSION();,4.1.1 SELECTFROM查询语句在SELECT语句,4.1.2 查询指定字段信息,在SELECT子句后面直接列出要显示的字段的列名,列名之间必须以逗号分隔。【例4-2】检索Users表,查询所有会员的名称、性别和电话号码。SELECT U_Name,U_Sex,U_Phone FROM Users;,4.1.2 查询指定字段信息在SELECT子句后面直接列出要,4.1.2 查询指定字段信息,如果在查询的过程中,要检索表或视图中的所有字段信息,可以
4、在SELECT子句中使用通配符“*”。【例4-3】检索Users表,查询所有会员的基本资料。SELECT * FROM Users;,4.1.2 查询指定字段信息如果在查询的过程中,要检索表或视,4.1.2 查询指定字段信息,定义别名可用以下方法:通过“列名 列标题”形式;通过“列名 AS 列标题”形式。例4-1的语句可修改如下:SELECT SQRT(25) 平方根,VERSION() as 版本号;,4.1.2 查询指定字段信息定义别名可用以下方法:,4.1.3 关键字DISTINCT的使用,ALL关键字表示将会显示所有检索的数据行,包括重复的数据行;(默认)DISTINCT关键字表示仅仅
5、显示不重复的数据行,对于重复的数据行,则只显示一次。【例4-4】检索Orders表,查询订购了书籍的会员号。SELECT U_ID FROM Orders;,4.1.3 关键字DISTINCT的使用ALL关键字表示将会,4.1.3 关键字DISTINCT的使用,如果希望在显示结果的时候去掉重复行,可以使用DISTINCT关键字。SELECT DISTINCT U_ID FROM Orders;,4.1.3 关键字DISTINCT的使用如果希望在显示结果的,4.1.4 ORDER BY子句的使用,ORDER BY子句是根据查询结果中的一个字段或多个字段对查询结果进行排序。默认的情况下按升序排列。
6、【例4-5】检索BookInfo表,按图书出版的日期进行排序。SELECT B_ID,B_Name, B_Date FROM BookInfo ORDER BY B_Date DESC;,4.1.4 ORDER BY子句的使用ORDER BY子句是,4.1.4 ORDER BY子句的使用,【例4-6】检索BookInfo表,按图书类别的升序及图书出版日期的降序进行排序。SELECT BT_ID,B_Name, B_Date FROM BookInfo ORDER BY BT_ID,B_Date DESC;,4.1.4 ORDER BY子句的使用【例4-6】检索Boo,4.1.5 LIMIT子句
7、的使用,LIMIT子句的用途是从结果集中进一步选取指定数量的数据行,其基本语法格式如下:LIMIT start, count例如,LIMIT 5表示返回结果集中的前5行记录,LIMIT 10,20表示从结果集的第11行记录开始返回20行记录。注意:在结果集中,第一行记录的start值为0,而不是1。,4.1.5 LIMIT子句的使用LIMIT子句的用途是从结果,4.1.4 ORDER BY子句的使用,【例4-7】检索BookInfo表,按图书编号查询前5本图书的信息。SELECT B_ID,B_Name FROM BookInfo ORDER BY B_ID LIMIT 5;,4.1.4 OR
8、DER BY子句的使用【例4-7】检索Boo,4.1.4 ORDER BY子句的使用,【例4-8】检索BookInfo表,按图书编号检索从第3条记录开始的2条记录的信息。SELECT B_ID,B_Name FROM BookInfo ORDER BY B_ID LIMIT 2,2;,4.1.4 ORDER BY子句的使用【例4-8】检索Boo,4.2 条件查询,4.2.1 使用关系表达式查询4.2.2 使用逻辑表达式查询4.2.3 设置取值范围的查询4.2.4 空值查询4.2.5 模糊查询,4.2 条件查询4.2.1 使用关系表达式查询,4.2.1 使用关系表达式查询,关系表达式是指在表达式
9、中含有关系运算符。常见的关系运算符有:=(等于)、(大于)、=(大于等于)、(不等于)。如果在WHERE子句中含有关系表达式,则只有满足关系表达式的数据行才会被显示到结果集中。,4.2.1 使用关系表达式查询关系表达式是指在表达式中含有关,4.2.1 使用关系表达式查询,【例4-9】检索BookInfo表,查询会员价大于40元的图书信息。SELECT B_ID,B_Name, B_SalePrice FROM BookInfoWHERE B_SalePrice40;,4.2.1 使用关系表达式查询【例4-9】检索BookInf,4.2.2 使用逻辑表达式查询,常用的逻辑运算符有AND、OR和N
10、OT。当一个WHERE子句同时包括若干个逻辑运算符时,其优先级从高到低依次为NOT、AND、OR。如果想改变优先级,可以使用括号。,4.2.2 使用逻辑表达式查询常用的逻辑运算符有AND、OR,4.2.2 使用逻辑表达式查询,【例4-10】检索BookInfo表,查询“清华大学出版社”出版的书名为“ASP.NET网站开发项目化教程”的图书的基本信息。SELECT B_Name,B_Author,B_PublisherFROM BookInfoWHERE B_Name=ASP.NET网站开发项目化教程 AND B_Publisher=清华大学出版社;,4.2.2 使用逻辑表达式查询【例4-10】
11、检索BookIn,4.2.2 使用逻辑表达式查询,【例4-11】检索BookInfo表,查询图书的会员价格在20元到40元之间的图书信息。SELECT B_ID,B_Name, B_SalePriceFROM BookInfoWHERE B_SalePrice=20 AND B_SalePrice=40;,4.2.2 使用逻辑表达式查询【例4-11】检索BookIn,4.2.3 设置取值范围的查询,谓词BETWEENAND和NOT BETWEENAND可以用来设置查询条件。其中,BETWEEN后面是范围的下限,AND后是范围的上限。例4-11使用BETWEENAND语句来完成。SELECT B
12、_ID,B_Name, B_SalePriceFROM BookInfoWHERE B_SalePrice BETWEEN 20 AND 40;,4.2.3 设置取值范围的查询谓词BETWEENAND和N,4.2.4 空值查询,NULL是特殊的值,代表“无值”,与0、空字符串或仅仅包含空格都不相同。在涉及空值的查询中,可以使用IS NULL或者IS NOT NULL来设置这种查询条件。,4.2.4 空值查询NULL是特殊的值,代表“无值”,与0、,4.2.4 空值查询,【例4-12】在Users表中新增一条记录,只输入会员名baip和密码654321,然后检索Users表,查询电话号码为空的会
13、员编号和会员名称。SELECT U_ID,U_NameFROM UsersWHERE U_Phone IS NULL;,4.2.4 空值查询【例4-12】在Users表中新增一条记,4.2.5 模糊查询,通常在查询字符数据时,提供的查询条件并不是十分的精确。查询条件仅仅是包含或类似某种样式的字符,这种查询称为模糊查询。,4.2.5 模糊查询通常在查询字符数据时,提供的查询条件并不,4.2.5 模糊查询,要实现模糊查询,必须使用通配符,利用通配符可以创建和特定字符串进行比较的搜索模式。SQL支持如下通配符:%:代表任意多个字符。_(下划线):代表任意的一个字符。,4.2.5 模糊查询要实现模糊查
14、询,必须使用通配符,利用通配,4.2.5 模糊查询,如果查询条件中使用了通配符,则操作符必须使用LIKE关键字。LIKE关键字用于搜索与特定字符串相匹配的字符数据,其基本的语法形式为:NOT LIKE ,4.2.5 模糊查询如果查询条件中使用了通配符,则操作符必须,4.2.5 模糊查询,【例4-13】检索BookInfo表,查询所有MySQL相关书籍的名称、出版社和会员价格。SELECT B_Name,B_Publisher,B_SalePrice FROM BookInfoWHERE B_Name LIKE %MySQL%;,4.2.5 模糊查询【例4-13】检索BookInfo表,查,4.
15、2.5 模糊查询,【例4-14】检索BookInfo表,查询所有的第2个字为“国”的作者所写图书的书名、作者和出版社信息。SELECT B_Name,B_Author,B_Publisher FROM BookInfoWHERE B_Author LIKE _国%;,4.2.5 模糊查询【例4-14】检索BookInfo表,查,4.2.5 模糊查询,如果要查询的字符串本身就含有通配符,此时就需要用ESCAPE关键字,对通配符进行转义。例如,在Users表中添加一条记录:会员名为yiyi_2016,密码为123456。现要查询会员名中含有“_”的会员信息,可以使用如下的语句:SELECT * F
16、ROM Users WHERE U_Name LIKE %/_% ESCAPE /;,4.2.5 模糊查询如果要查询的字符串本身就含有通配符,此时,4.2.5 模糊查询,如果要查询的字符串本身就含有通配符,此时就需要用ESCAPE关键字,对通配符进行转义。例如,在Users表中添加一条记录:会员名为yiyi_2016,密码为123456。现要查询会员名中含有“_”的会员信息,可以使用如下的语句:SELECT * FROM Users WHERE U_Name LIKE %/_% ESCAPE /;,4.2.5 模糊查询如果要查询的字符串本身就含有通配符,此时,4.3 分组查询,4.3.1 GR
17、OUP BY子句4.3.2 HAVING子句,4.3 分组查询4.3.1 GROUP BY子句,4.3 分组查询,如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要在SELECT语句中与GROUP BY子句一起使用聚合函数。,4.3 分组查询如果要在数据检索时对表中数据按照一定条件进,4.3 分组查询,常用的聚合函数,4.3 分组查询常用的聚合函数,4.3 分组查询,例如,要统计Users表中会员的数量,可以使用COUNT(*),计算出来的结果就是查询所选取到的行数,相关语句如下:SELECT COUNT(*) FROM Users;只统计填写电话号码的会员个数:SELECT
18、 COUNT(U_Phone) FROM Users;注意:聚合函数忽略列值为NULL的行。,4.3 分组查询例如,要统计Users表中会员的数量,可以,4.3.1 GROUP BY子句,分组是通过GROUP BY子句来实现的,其基本语法格式如下:GROUP BY ,4.3.1 GROUP BY子句分组是通过GROUP BY子,4.3.1 GROUP BY子句,【例4-15】检索BookInfo表,查询每个出版社出版的图书的数量。SELECT B_Publisher ,COUNT(*) AS 总数 FROM BookInfo GROUP BY B_Publisher;,4.3.1 GROUP
19、BY子句【例4-15】检索BookI,4.3.1 GROUP BY子句,【例4-16】检索BookInfo表,查询每个出版社图书的最高价格和最低价格。SELECT B_Publisher,MAX(B_MarketPrice) AS 最高价格,MIN(B_MarketPrice) AS 最低价格FROM BookInfoGROUP BY B_Publisher;,4.3.1 GROUP BY子句【例4-16】检索BookI,4.3.2 HAVING子句,如果分组以后要求按一定条件对这些组进行筛选,则需要使用HAVING子句指定筛选条件。HAVING子句必须和GROUP BY子句同时使用。,4.3
20、.2 HAVING子句如果分组以后要求按一定条件对这些,4.3.2 HAVING子句,【例4-17】检索BookInfo表,查询出版图书在2本及2本以上的出版社信息。SELECT B_Publisher ,COUNT(*) AS 总数 FROM BookInfo GROUP BY B_PublisherHAVING COUNT(*)=2;,4.3.2 HAVING子句【例4-17】检索BookInf,4.3.2 HAVING子句,【例4-18】检索BookInfo表,查询出版了2本及2本以上并且价格大于等于50元的图书信息。SELECT B_Publisher ,COUNT(*) AS 总数
21、FROM BookInfo WHERE B_MarketPrice=50GROUP BY B_PublisherHAVING COUNT(*)=2;,4.3.2 HAVING子句【例4-18】检索BookInf,4.3.2 HAVING子句,HAVING子句和WHERE子句都是设置查询条件,但两个子句的作用对象不同。WHERE子句作用的对象是基本表或视图,从中选出满足条件的记录;而HAVING子句的作用对象是组,从中选出满足条件的分组。WHERE在数据分组之前进行过滤,而HAVING在数据分组之后进行过滤。,4.3.2 HAVING子句HAVING子句和WHERE子句,4.4表的连接,4.4.
22、1 内连接4.4.2 外连接4.4.3 自连接4.4.4 交叉连接,4.4表的连接4.4.1 内连接,4.4表的连接,多表连接的语法格式如下:SELECT FROM 连接类型 JOIN ON WHERE 其中,连接类型有3种:内连接(INNER JOIN)、外连接(OUTER JOIN)和交叉连接(CROSS JOIN)。,4.4表的连接多表连接的语法格式如下:,4.4表的连接,用来连接两个表的条件称为连接条件,通常是通过匹配多个表中的公共字段来实现的。,4.4表的连接用来连接两个表的条件称为连接条件,通常是通过,4.4.1 内连接,内连接是从两个或两个以上的表的组合中,挑选出符合连接条件的数
23、据。内连接是最常用的连接类型,也是默认的连接类型。在FROM子句中使用INNER JOIN(INNER关键字可以省略)来实现内连接。,4.4.1 内连接内连接是从两个或两个以上的表的组合中,挑选,4.4.1 内连接,【例4-19】检索BookInfo和BookType表,查询每本图书所属的图书类别。SELECT B_Name, BookInfo.BT_ID, BT_NameFROM BookInfo INNER JOIN BookType ON BookInfo.BT_ID= BookType.BT_IDORDER BY BT_ID;,4.4.1 内连接【例4-19】检索BookInfo和Bo
24、o,4.4.1 内连接,【例4-20】检索Users和Orders表,查询订单总价超过100元的会员名、下单时间及订单总价。SELECT U.U_Name,O.O_ID, O.O_Time, O.O_TotalPriceFROM Users U INNER JOIN Orders OON U.U_ID = O.U_IDWHERE O_TotalPrice100;,4.4.1 内连接【例4-20】检索Users和Orders,4.4.1 内连接,【例4-21】检索OrderDetails、Orders和BookInfo表,查询订单的下单时间及所购图书名。SELECT OD.OD_ID,O.O_T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 开发 应用 04 检索 表记 课件
链接地址:https://www.31ppt.com/p-1286611.html