第5章高级查询演示教学

上传人:youn****329 文档编号:136944398 上传时间:2020-07-04 格式:PPT 页数:80 大小:934.50KB
返回 下载 相关 举报
第5章高级查询演示教学_第1页
第1页 / 共80页
第5章高级查询演示教学_第2页
第2页 / 共80页
第5章高级查询演示教学_第3页
第3页 / 共80页
第5章高级查询演示教学_第4页
第4页 / 共80页
第5章高级查询演示教学_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第5章高级查询演示教学》由会员分享,可在线阅读,更多相关《第5章高级查询演示教学(80页珍藏版)》请在金锄头文库上搜索。

1、第5章高级查询,1,5.1连接查询5.2集合查询5.3子查询,5.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,2,5.1.1基本连接,1、基本连接基本连接指在FROM子句中使用逗号进行两个表或多个表之间的连接,该结果集是两个连接表的行数的乘积.,3,5.1.1基本连接,4,5.1.1基本连接,2、同等连接同等连接指在基本连接的基础上使用WHERE子句中提供连接条件.,6,5.1.1基本连接,7,5.1.1基本连接,例2:显示所有产品的产品编号ProductID,产品名称ProductName,类别名称CateGory

2、Name,使用的表为产品表Products和类别表CateGories.其代码为:SELECTProductID,ProductName,CateGoryNameFROMProducts,CateGoriesWHEREProducts.CateGoryID=CateGories.CateGoryID,8,5.1.1基本连接,3、使用别名例3:显示所有产品的产品编号ProductID,产品名称ProductName,类别编号CateGoryID,类别名称CateGoryName,使用的表为产品表Products和类别表CateGories,并分别为其命名别名.其代码为:SELECTProduct

3、ID,ProductName,C.CateGoryID,CateGoryNameFROMProductsasP,CateGoriesasCWHEREP.CateGoryID=C.CateGoryID,9,注:如果为表指定了别名,则在语句中的所有子句都必须使用别名,而不允许使用实际的表名,5.1.1基本连接,4、多表连接例4:显示所有订单的订单编号OrderID、客户编号CustomerID,产品名称ProductName,订购日期OrderDate,单价UnitPrice,数量Quantity,使用的表为产品表Products和订单详情表OrderDetails,订购表Orders.其代码为:

4、SELECTOD.OrderID,CustomerID,ProductName,OrderDate,OD.UnitPrice,QuantityFROMOrderDetailsOD,ProductsP,OrdersOWHEREOd.OrderID=O.OrderIDandOD.productid=P.productid,10,练习,查询产品编号(ProductID)在20-40之间的所有产品的产品编号(ProductID)、产品名称(ProductName)、类别名称(CategoryName),类别描述(Description)、供应商的公司(CompanyName)、联系人名称(Contac

5、tName)。使用的基本表为Products、Categories、Suppliers表。,11,5.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,12,5.1.2JOIN关键字,使用JOIN关键字可以引导出多种连接方式,如内连接、交叉连接、外连接、自然连接等。其连接条件主要通过以下方法定义两个表在查询中的关系方式:指定每个表中要用于连接的目标列,即在一个基表中指定外键,在另一个基表中指定与其关联的键。指定比较各目标列的值时要使用比较运算符。,13,5.1.2JOIN关键字,使用JOIN关键字连接查询的语法格式为:SE

6、LECTselect_listFROMtable_name1join_typeJOINtable_name2ONjoin_conditionWHEREsearh_conditions.,14,5.1.2JOIN关键字,语法注释:table_name1,table_name2为连接的基表join_type指连接类型。JOIN分为INNERJOIN、LEFTOUTERJOIN、RIGHTOUTERJOIN、FULLOUTERJOIN、CROSSJOIN几种类型,使用不同的类型可以得到不同的查询结果join_condition:两个表之间的连接条件searh_conditions:查询条件,15,5

7、.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,16,5.1.3内连接INNERJOINON,内连接使用比较运算符进行多个基表间数据的比较操作,并列出这些基表中与连接条件相匹配的所有的数据行。格式SELECT列名,列名FROM表1别名1INNERJOIN表2别名2ON连接条件WHERE查询条件ORDERBY排序条件,17,5.1.3内连接INNERJOINON,1、等值连接等值连接就是在连接条件中使用等号=比较运算符来比较连接列的列值,其查询结果中列出被连接表中的所有列,并且包括重复列。,18,5.1.3内连接INNE

8、RJOINON,19,5.1.3内连接INNERJOINON,20,5.1.3内连接INNERJOINON,例5:显示所有订单的订单编号OrderID、客户编号CustomerID,产品名称ProductName,订购日期OrderDate,单价UnitPrice,数量Quantity,使用的表为产品表Products和订单详情表OrderDetails,订购表Orders.其代码为:SELECTOD.OrderID,CustomerID,ProductName,OrderDate,UnitPrice,QuantityFROMOrderDetailsODJOINProductsPONOD.pr

9、oductid=P.productidJOINOrdersOONOd.OrderID=O.OrderID,21,5.1.3内连接INNERJOINON,2、不等值连接即在连接条件中使用除等号外的运算符.3、自然连接与等值连接相同,即在连接条件中使用等于运算符比较被连接的列,其使用选择列表指出查询结果所包含的列,并删除连接表中的重复列。,22,注:由于内连接严格执行连接条件,因此在执行连接查询后,要从结果集中删除在其他表中没有匹配行的所有数据行,所以使用内连接可能会丢失信息,5.1.3内连接INNERJOINON,例6:显示单价小于等于20的产品的产品名称ProductName、单价UnitPr

10、ice、供应商公司名称CompanyName、联系人ContactName信息,使用的表为产品表Products和供应商表Suppliers.SELECTproductname,unitprice,companyname,contactnameFROMproductspJOINsupplierssONp.supplierid=s.supplieridWHEREunitprice=20,23,5.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,24,5.1.4外连接OUTERJOINON,1、外连接外连接是对内连接结果的扩

11、展,即除返回所有匹配行外,还将返回不匹配的部分或全部行.2、外连接类型左外连接LEFTOUTERJOINON显示左表未匹配行右外连接RIGHTOUTERJOINON显示右表未匹配行全外连接FULLOUTERJOINON显示全部匹配及未匹配行,25,左外连接,26,右外连接,27,全外连接,28,29,5.1.4外连接OUTERJOINON,左(右)外联接可以从两个表中返回符合联接条件的记录,同时也将返回左(右)边不符合联接条件的记录使用左(右)外联接时,请注意不满足联接条件的记录将显示空值左联接可以显示第一个表中所有记录右联接可以显示第二个表中所有记录可以把LEFTOUTERJOIN或RIGH

12、TOUTERJOIN简写为LEFTJOIN或RIGHTJOIN,5.1.4外连接OUTERJOINON,例8:1)使用T-SQL语句在PUBS数据库中的jobs表中添加一条记录:manager,10,250;2)然后使用左外连接查询所有工种的员工信息。,30,5.1.4外连接OUTERJOINON,实现的T-SQL语句:USEpubsGOINSERTjobsVALUES(manager,10,250)GOSELECTjob_desc,fname+lnameasau_nameFROMjobsLEFTOUTERJOINemployeeONjobs.job_id=employee.job_idGO,

13、31,5.1.4外连接OUTERJOINON,例9:1)向Region表中插入一条记录,值为(5,center)2)查询Territories表的TerritoryID,TerritoryDescription,Region表的RegionDescription信息3)分别用左外连接、右外连接、全外连接实现,并比较分析查询结果,32,5.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,33,5.1.5交叉连接CROSSJOIN,交叉连接在不带WHERE子句时,返回的是被连接的两个表所有数据行的笛卡尔乘积,其使用CROSS

14、JOIN关键字连接两个表格式:SELECT列名,列名FROM表1CROSSJOIN表2,34,5.1.5交叉连接CROSSJOIN,35,5.1.5交叉连接CROSSJOIN,例10:查询产品表products的产品名称productname,供应商表suppliers的供应商名称companyname及供应商所在区域region,要求供应商区域不为NULL,使用products和suppliers表(用交叉查询)。代码如下:SELECTp.productname,s.region,panynameFROMproductspCROSSJOINsupplierssWHEREs.regionISN

15、OTNULL,36,5.1连接查询,5.1.1基本连接5.1.2JOIN关键字5.1.3内连接5.1.4外连接5.1.5交叉连接5.1.6自连接,37,5.1.6自连接,38,SELECTa.buyer_idASbuyer1,a.prod_id,b.buyer_idASbuyer2FROMsalesASaJOINsalesASbONa.prod_id=b.prod_idGO,salesb,salesa,示例,5.1.6自连接,使用自联接,可以查询一个表中各记录之间的关系使用自联接时,应注意引用表的两份副本时,必须使用表的别名生成自联接时,表中每一行都和自身比较一下,并生成重复的记录,使用WHE

16、RE子句来消除这些重复记录,39,5.1.6自连接,40,SELECTa.buyer_idASbuyer1,a.prod_id,b.buyer_idASbuyer2FROMsalesASaJOINsalesASbONa.prod_id=b.prod_idWHEREa.buyer_idb.buyer_idGO,salesb,salesa,结果,示例,5.1.6自连接,例11:查询产品表中同一供应商供应的产品信息SELECTp1.ProductID,p1.supplierID,p2.ProductIDFROMProductsp1INNERJOINProductsp2ONp1.supplierID=p2.supplierIDWHEREp1.productidp2.productid,41,课堂练习,以下操作请使用PUBS数据库中的数据表进行操作:1、查询出版社编号(pub_id)是0877的书籍的名称(title)、价格(price)、出版日期(pubdate)、作者姓名(au_fname+au_lname)、作者次序(au_ord)。使用的基本表为titleaut

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号