第5章高级查询.ppt
《第5章高级查询.ppt》由会员分享,可在线阅读,更多相关《第5章高级查询.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章高级查询 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望5.1 5.1 连接查询连接查询连接查询连接查询5.1.1 基本基本连接接5.1.2 JOIN关关键字字 5.1.3 内内连接接5.1.4 外外连接接5.1.5 交叉交叉连接接5.1.6 自自连接接25.1.1 5.1.1 基本连接基本连接基本连接基本连接1、基本、基本连接接基本基本连接指在接指在FROM子句中子句中使用逗号使用逗号进行两个表或行两个表或多个多个表之表之间的的连接接,该结果集是两个果集是
2、两个连接表的行数的乘接表的行数的乘积.35.1.15.1.1基本连接基本连接基本连接基本连接4结果结果buyer_namebuyer_nameAdam BarrAdam BarrAdam BarrAdam Barrqtyqty1553711 Adam Barr1003 Sean Chai15 Sean Chai5 Sean Chai37 Sean Chai11 Sean Chai1003 Eva Corets15.salesbuyer_idbuyer_id prod_idprod_idqtyqty114323151553711421003buyersbuyer_idbuyer_id1234bu
3、yer_namebuyer_nameAdam BarrSean ChaiEva CoretsErin OMeliaSELECT buyer_name,qtyFROM buyers,sales示例示例5.1.1 5.1.1 基本连接基本连接基本连接基本连接例例1:显示所有示所有产品的品的产品品编号号ProductID,产品名称品名称 ProductName,类别名称名称CateGoryName,使用的表使用的表为产品表品表Products和和类别表表CateGories.其代其代码为:SELECT ProductID,ProductName,CateGoryNameFROM Products,C
4、ateGories5注:当在注:当在注:当在注:当在SELECTSELECT后显示的列名在后显示的列名在后显示的列名在后显示的列名在两个表中都存在时,需要对列名进两个表中都存在时,需要对列名进两个表中都存在时,需要对列名进两个表中都存在时,需要对列名进行限定,否则将返回错误信息行限定,否则将返回错误信息行限定,否则将返回错误信息行限定,否则将返回错误信息5.1.1 5.1.1 基本连接基本连接基本连接基本连接2、同等、同等连接接同等同等连接指在基本接指在基本连接的基接的基础上上使用使用WHERE子句中子句中提供提供连接条件接条件.65.1.1 5.1.1 基本连接基本连接基本连接基本连接7sa
5、lesbuyer_idbuyer_id prod_idprod_id qtyqty114323151553711421003buyersbuyer_namebuyer_nameAdam BarrSean ChaiEva CoretsErin OMeliabuyer_idbuyer_id1234结果结果buyer_namebuyer_nameAdam BarrAdam BarrErin OMeliaEva Coretsbuyer_idbuyer_id qtyqty11431553711Erin OMelia41003SELECT buyer_name,sales.buyer_id,qtyFROM
6、 buyers,salesWHERE buyers.buyer_id=sales.buyer_id示例示例5.1.1 5.1.1 基本连接基本连接基本连接基本连接例例2:显示所有示所有产品的品的产品品编号号ProductID,产品名称品名称 ProductName,类别名称名称CateGoryName,使用的表使用的表为产品表品表Products和和类别表表CateGories.其代其代码为:SELECT ProductID,ProductName,CateGoryNameFROM Products,CateGoriesWHERE Products.CateGoryID=CateGories.
7、CateGoryID85.1.1 5.1.1 基本连接基本连接基本连接基本连接3、使用、使用别名名例例3:显示所有示所有产品的品的产品品编号号ProductID,产品名称品名称 ProductName,类别编号号CateGoryID,类别名称名称CateGoryName,使用的表使用的表为产品表品表Products和和类别表表CateGories,并分,并分别为其命名其命名别名名.其代其代码为:SELECT ProductID,ProductName,C.CateGoryID,CateGoryNameFROM Products as P,CateGories as CWHERE P.CateG
8、oryID=C.CateGoryID9注:如果为表指定了别名,则在语句中的所有子句注:如果为表指定了别名,则在语句中的所有子句注:如果为表指定了别名,则在语句中的所有子句注:如果为表指定了别名,则在语句中的所有子句都必须使用别名,而不允许使用实际的表名都必须使用别名,而不允许使用实际的表名都必须使用别名,而不允许使用实际的表名都必须使用别名,而不允许使用实际的表名5.1.1 5.1.1 基本连接基本连接基本连接基本连接4、多表、多表连接接例例4:显示所有示所有订单的的订单编号号OrderID、客、客户编号号CustomerID,产品名称品名称 ProductName,订购日期日期OrderDa
9、te,单价价UnitPrice,数量数量Quantity,使用的表,使用的表为产品表品表Products和和订单详情表情表OrderDetails,订购表表Orders.其代其代码为:SELECT OD.OrderID,CustomerID,ProductName,OrderDate,OD.UnitPrice,QuantityFROM OrderDetails OD,Products P,Orders OWHERE Od.OrderID=O.OrderID and OD.productid=P.productid10练习练习练习练习查询产品编号(ProductID)在20-40之间的所有产品的
10、产品编号(ProductID)、产品名称(ProductName)、类别名称(CategoryName),类别描述(Description)、供应商的公司(CompanyName)、联系人名称(ContactName)。使用的基本表为Products、Categories、Suppliers表。115.1 5.1 连接查询连接查询连接查询连接查询5.1.1 基本基本连接接5.1.2 JOIN关关键字字 5.1.3 内内连接接5.1.4 外外连接接5.1.5 交叉交叉连接接5.1.6 自自连接接125.1.2 JOIN5.1.2 JOIN关键字关键字关键字关键字使用使用使用使用JOINJOIN关
11、关关关键键字可以引字可以引字可以引字可以引导导出多种出多种出多种出多种连连接方式,如内接方式,如内接方式,如内接方式,如内连连接、接、接、接、交叉交叉交叉交叉连连接、外接、外接、外接、外连连接、自然接、自然接、自然接、自然连连接等。接等。接等。接等。其其其其连连接条件主要通接条件主要通接条件主要通接条件主要通过过以下方法定以下方法定以下方法定以下方法定义义两个表在两个表在两个表在两个表在查询查询中的关中的关中的关中的关系方式:系方式:系方式:系方式:指定每个表中要指定每个表中要指定每个表中要指定每个表中要用于用于用于用于连连接的目接的目接的目接的目标标列列列列,即在一个基表,即在一个基表,即在
12、一个基表,即在一个基表中指定外中指定外中指定外中指定外键键,在另一个基表中指定与其关,在另一个基表中指定与其关,在另一个基表中指定与其关,在另一个基表中指定与其关联联的的的的键键。指定比指定比指定比指定比较较各目各目各目各目标标列的列的列的列的值时值时要使用比要使用比要使用比要使用比较较运算符。运算符。运算符。运算符。135.1.2 JOIN5.1.2 JOIN关键字关键字关键字关键字使用使用使用使用JOINJOIN关关关关键键字字字字连连接接接接查询查询的的的的语语法格式法格式法格式法格式为为:SELECTSELECT select_list select_listFROMFROM tabl
13、e_name1 table_name1 join_typejoin_type JOINJOIN table_name2 table_name2 ONON join_condition join_condition WHEREWHERE searh_conditions searh_conditions.145.1.2 JOIN5.1.2 JOIN关键字关键字关键字关键字语语法注法注法注法注释释:n ntable_name1table_name1,table_name2table_name2为连为连接的基表接的基表接的基表接的基表n njoin_typejoin_type指指指指连连接接接接类类
14、型。型。型。型。JOINJOIN分分分分为为INNER JOININNER JOIN、LEFT OUTER JOINLEFT OUTER JOIN、RIGHT OUTER JOINRIGHT OUTER JOIN、FULL FULL OUTER JOINOUTER JOIN、CROSS JOINCROSS JOIN几种几种几种几种类类型,使用不同的型,使用不同的型,使用不同的型,使用不同的类类型可以得到不同的型可以得到不同的型可以得到不同的型可以得到不同的查询结查询结果果果果n njoin_conditionjoin_condition:两个表之:两个表之:两个表之:两个表之间间的的的的连连接
15、条件接条件接条件接条件n nsearh_conditionssearh_conditions:查询查询条件条件条件条件155.1 5.1 连接查询连接查询连接查询连接查询5.1.1 基本基本连接接5.1.2 JOIN关关键字字 5.1.3 内内连接接5.1.4 外外连接接5.1.5 交叉交叉连接接5.1.6 自自连接接165.1.3 5.1.3 内连接内连接INNER JOINONINNER JOINON内内内内连连接使用比接使用比接使用比接使用比较较运算符运算符运算符运算符进进行多个基表行多个基表行多个基表行多个基表间间数据的比数据的比数据的比数据的比较较操作,操作,操作,操作,并列出并列出
16、并列出并列出这这些基表中与些基表中与些基表中与些基表中与连连接条件相匹配的所有的数据行。接条件相匹配的所有的数据行。接条件相匹配的所有的数据行。接条件相匹配的所有的数据行。格式格式格式格式 SELECT SELECT 列名列名列名列名,列名列名列名列名 FROMFROM 表表表表1 1 别别名名名名1 1 INNERINNER JOINJOIN 表表表表2 2 别别名名名名2 2 ONON 连连接条件接条件接条件接条件 WHERE WHERE 查询查询条件条件条件条件 ORDER BYORDER BY 排序条件排序条件排序条件排序条件175.1.3 5.1.3 内连接内连接INNER JOIN
17、ONINNER JOINON1 1、等、等、等、等值连值连接接接接等等等等值连值连接就是在接就是在接就是在接就是在连连接条件中使用等号接条件中使用等号接条件中使用等号接条件中使用等号=比比比比较较运算符来比运算符来比运算符来比运算符来比较连较连接列的列接列的列接列的列接列的列值值,其,其,其,其查询结查询结果中列出被果中列出被果中列出被果中列出被连连接表中的所有接表中的所有接表中的所有接表中的所有列,并且包括重复列。列,并且包括重复列。列,并且包括重复列。列,并且包括重复列。185.1.3 5.1.3 内连接内连接INNER JOINONINNER JOINON19salesbuyer_idb
18、uyer_id prod_idprod_id qtyqty114323151553711421003buyersbuyer_namebuyer_nameAdam BarrSean ChaiEva CoretsErin OMeliabuyer_idbuyer_id1234结果结果buyer_namebuyer_nameAdam BarrAdam BarrErin OMeliaEva Coretsbuyer_idbuyer_id qtyqty11431553711Erin OMelia41003SELECT buyer_name,sales.buyer_id,qtyFROM buyers INNE
19、R JOIN salesON buyers.buyer_id=sales.buyer_id示例示例5.1.3 5.1.3 内连接内连接INNER JOINONINNER JOINON20produceprod_idprod_id prod_nameprod_name1234ApplesPearsOrangesBananas5Peachesbuyer_idbuyer_id1234buyer_namebuyer_nameAdam BarrSean ChaiEva CoretsErin OMeliabuyersbuyer_idbuyer_id1143prod_idprod_id231542qtyqt
20、y15537111003sales结果结果buyer_namebuyer_nameErin OMeliaAdam BarrErin OMeliaAdam BarrEva Coretsprod_nameprod_nameApplesPearsPearsOrangesPeachesqtyqty37151003511SELECT buyer_name,prod_name,qtyFROM buyers JOIN salesON buyers.buyer_id=sales.buyer_idJOIN produceON sales.prod_id=produce.prod_id示例示例5.1.3 5.1.
21、3 内连接内连接INNER JOINONINNER JOINON例5:显示所有示所有订单的的订单编号号OrderID、客、客户编号号CustomerID,产品名称品名称 ProductName,订购日期日期OrderDate,单价价UnitPrice,数量,数量Quantity,使用的表,使用的表为产品表品表Products和和订单详情表情表Order Details,订购表表Orders.其代其代码为:SELECT OD.OrderID,CustomerID,ProductName,OrderDate,UnitPrice,QuantityFROM Order Details OD JOIN
22、Products PON OD.productid=P.productidJOIN Orders O ON Od.OrderID=O.OrderID 215.1.3 5.1.3 内连接内连接INNER JOINONINNER JOINON2 2、不等、不等、不等、不等值连值连接接接接 即在即在即在即在连连接条件中使用除等号外的运算符接条件中使用除等号外的运算符接条件中使用除等号外的运算符接条件中使用除等号外的运算符.3 3、自然、自然、自然、自然连连接接接接与等与等与等与等值连值连接相同,即在接相同,即在接相同,即在接相同,即在连连接条件中使用等于运算符比接条件中使用等于运算符比接条件中使用等
23、于运算符比接条件中使用等于运算符比较较被被被被连连接的列接的列接的列接的列,其使用其使用其使用其使用选择选择列表指出列表指出列表指出列表指出查询结查询结果所包含的列果所包含的列果所包含的列果所包含的列,并并并并删删除除除除连连接表中的重复列。接表中的重复列。接表中的重复列。接表中的重复列。22注:由于内连接严格执行连接条件,因此在执行连接查询注:由于内连接严格执行连接条件,因此在执行连接查询注:由于内连接严格执行连接条件,因此在执行连接查询注:由于内连接严格执行连接条件,因此在执行连接查询后,要从结果集中删除在其他表中没有匹配行的所有数据后,要从结果集中删除在其他表中没有匹配行的所有数据后,要
24、从结果集中删除在其他表中没有匹配行的所有数据后,要从结果集中删除在其他表中没有匹配行的所有数据行,行,行,行,所以使用内连接可能会丢失信息所以使用内连接可能会丢失信息所以使用内连接可能会丢失信息所以使用内连接可能会丢失信息5.1.3 5.1.3 内连接内连接INNER JOINONINNER JOINON例6:显示示单价小于等于价小于等于20的的产品的品的产品名称品名称ProductName、单价价UnitPrice、供、供应商公司名称商公司名称CompanyName、联系人系人ContactName信息,使用的表信息,使用的表为产品表品表Products和供和供应商表商表Suppliers.
25、SELECT productname,unitprice,companyname,contactnameFROM products p JOIN suppliers sON p.supplierid=s.supplierid WHERE unitprice b.buyer_idGOsales bbuyer_idbuyer_id prod_idprod_id qtyqty114323151553711421003sales abuyer_idbuyer_id prod_idprod_id qtyqty114323151553711421003结果结果示例示例5.1.6 5.1.6 自连接自连接自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 查询
限制150内