《SQL-Server-2012数据库技术及应用2.5.ppt》由会员分享,可在线阅读,更多相关《SQL-Server-2012数据库技术及应用2.5.ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、周慧周慧教学单元教学单元2.5第第7章章 SELECT数据查询数据查询(ANSI和子查询)和子查询)SQL Server 2012数据库技术及应用数据库技术及应用案例案例2-7-1 2-7-1 图书管理图书管理ANSIANSI连接查询连接查询案例案例2-7-2 2-7-2 图书管理图书管理SELECTSELECT子查询子查询MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *SELECT数据查询数据查询 学习导航学习导航2 2MicrosoftMicro
2、softSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *SELECT数据查询数据查询 知识框架知识框架3 3MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *单元单元2.5 SELECT数据查询(数据查询(ANSI和子查询)和子查询)vv能力目标能力目标能力目标能力目标n能够能够根据数据库应用系统的功能需求对表进行根据数据库应用系统的功能需求对
3、表进行ANSI连接连接查询查询n能够能够根据数据库应用系统的功能需求对表进行子根据数据库应用系统的功能需求对表进行子查询查询n能够能够根据数据库应用系统的功能需求对表进行联根据数据库应用系统的功能需求对表进行联合合查询查询n能够能够阅读并熟练书写阅读并熟练书写SELECT查询语句和有关参查询语句和有关参数(英文数(英文)4 4MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *vv知识目标知识目标知识目标知识目标nANSI连接查询连接查询的的语法语法n子
4、子查询查询的基本的基本应用应用n联合联合查询的基本查询的基本应用应用vv素质目标素质目标素质目标素质目标n培养培养与用户的沟通能力,以便很好地满足用户与用户的沟通能力,以便很好地满足用户的应用的应用需求需求n培养应用所学知识解决实际问题的培养应用所学知识解决实际问题的能力能力5 5单元单元2.5 SELECT数据查询(数据查询(ANSI和子查询)和子查询)MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *案例案例案例案例2 2 2 2 图书管理系统图书
5、管理系统图书管理系统图书管理系统案例案例2-7-1 图书管理图书管理ANSI连接查询连接查询案例案例2-7-2 图书管理图书管理SELECT子查询子查询工作任务工作任务6 6单元单元2.5 SELECT数据查询(数据查询(ANSI和子查询)和子查询)MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *7 7ANSI连接查询连接查询一一子查询子查询二二联合查询联合查询三三单元单元2.5 SELECT数据查询(数据查询(ANSI和子查询)和子查询)Micro
6、softMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例案例案例案例2-7-1 2-7-1 2-7-1 2-7-1 图书管理图书管理图书管理图书管理ANSIANSIANSIANSI连接查询连接查询连接查询连接查询根据图书管理系统的功能需求,应用根据图书管理系统的功能需求,应用T-SQL的的SELECT查查询语句对数据库询语句对数据库“Library”中所创建的表进行中所创建的表进行ANSI连接连接查询。查询。工作任务工作任务8 8M
7、icrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *回顾:回顾:SELECT查询语句基本结构查询语句基本结构SELECT ALL|DISTINCT TOP n 表达式列表表达式列表INTO新表名新表名FROM 基表基表|视图视图,.n -回顾表的连接,视图见后续回顾表的连接,视图见后续WHERE 查询条件查询条件GROUP BY 分组列名表分组列名表HAVING逻辑表达式逻辑表达式ORDER BY 排序列名表排序列名表ASC|DESCSELECTFROM9
8、 9MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询说明:说明:在在SQL Server中,可以使用两种语法形式中,可以使用两种语法形式FROM子句(已介绍),连接条件写在子句(已介绍),连接条件写在WHERE子句的逻子句的逻辑表达式中,从而实现表的连接(早期)。辑表达式中,从而实现表的连接(早期)。ANSI(American National Standards Institute美国美国国家标准学会)连接语法形式,
9、在国家标准学会)连接语法形式,在FROM子句中使用子句中使用JOINON关键字,连接条件写在关键字,连接条件写在ON之后,从而实现表的之后,从而实现表的连接。连接。SQL Server 2012推荐使用推荐使用ANSI形式的连接。形式的连接。SELECTFROMJOINON1010MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 连接类型连接类型 JOIN 表名表名2 ON 连接条件连接
10、条件说明:说明:实实现现表表与与表表的的两两两两连连接接,表表1和和表表2连连接接之之后后还还可可以以继继续续与与表表3,表表n连接,最多可以连接连接,最多可以连接256个表。个表。连接条件放在连接条件放在ON关键字后。关键字后。特别注意的是此语句也可以连接视图,下一章介绍。特别注意的是此语句也可以连接视图,下一章介绍。连接类型连接类型:INNER JOIN:内连接。:内连接。LEFT OUTER JOIN:左外连接。:左外连接。RIGHT OUTER JOIN:右外连接。:右外连接。CROSS JOIN:交叉连接。:交叉连接。1.SELECTFROMJOINON1111MicrosoftMi
11、crosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 INNER JOIN 表名表名2 ON 连接表达式连接表达式说明:说明:从从两两个个或或两两个个以以上上的的表表的的笛笛卡卡儿儿积积中中,选选出出符符合合连连接接条条件件的的数数据据行行。如如果果数数据据行行无无法法满满足足连连接接条条件件,则则将将其其丢丢弃弃。内连接消除了与另一个表中不匹配的数据行。内连接消除了与另一个表中不匹配的数据行。2.内连接内连接1
12、212MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:从图书管理数据库从图书管理数据库“Library”中查询每位读者的详细中查询每位读者的详细信息(读者及读者类型),允许有重复列。信息(读者及读者类型),允许有重复列。代码:代码:USE LibraryGOSELECT Reader.*,ReaderType.*FROM Reader INNER JOIN ReaderType ON Reader.Type
13、ID=ReaderType.TypeID -内连接内连接(1)等值连接)等值连接1313MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询代码:代码:SELECT Reader.*,ReaderType.*FROM Reader INNER JOIN ReaderType ON Reader.TypeID=ReaderType.TypeID -内连接内连接查询结果:查询结果:(1)等值连接)等值连接1414Microso
14、ftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:查询每个读者的详细信息(读者及借阅图书的信息),查询每个读者的详细信息(读者及借阅图书的信息),不允许有重复列。不允许有重复列。代码:代码:SELECT Reader.*,Borrow.LendDate,Borrow.ReturnDate,Book.BID,Book.Bname,Book.Author,Book.Price -投影消除重复列投影消除重复列FROM Reade
15、r INNER JOIN Borrow ON Reader.RID=Borrow.RID -表表1内连接表内连接表2INNER JOIN Book ON Borrow.BID=Book.BID -再内连接表再内连接表3(2)自然连接)自然连接1515MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询查询结果:查询结果:(2)自然连接)自然连接1616MicrosoftMicrosoftSQL Server 2012SQL
16、 Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询外外连连接接返返回回FROM子子句句中中指指定定的的至至少少一一个个表表或或视视图图中中的的所所有有行行,只只要要这这些些行行符符合合任任何何WHERE选选择择(不不包包含含ON之之后后的连接条件)或的连接条件)或HAVING限定条件。限定条件。外连接又分为左外连接、右外连接和全外连接。外连接又分为左外连接、右外连接和全外连接。左左外外连连接接对对连连接接中中左左边边的的表表不不加加限限制制;右右外外连连接接对对连连接接中中右右边边的的表表不
17、不加加限限制制;全全外外连连接接对对两两个个表表都都不不加加限限制制,两两个个表中的所有行都会包括在结果集中。表中的所有行都会包括在结果集中。3.外连接外连接1717MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 LEFT OUTER JOIN 表名表名2 ON 连接表达式连接表达式说明:说明:连连接接结结果果保保留留表表1没没形形成成连连接接的的行行,表表2相相应应的的各各列列为为N
18、ULL值。值。(1)左外连接)左外连接1818MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:从表从表“Reader”和表和表“Borrow”中查询出读者的借阅情中查询出读者的借阅情况,包括没有借过书的读者情况。况,包括没有借过书的读者情况。代码:代码:SELECT Reader.*,Borrow.RID,BIDFROM Reader LEFT OUTER JOIN Borrow -左外连接左外连接ON R
19、eader.RID=Borrow.RID查询结果:查询结果:(1)左外连接)左外连接1919MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询说明:说明:连接结果保留了表连接结果保留了表“Reader”中不满足等值条件的第中不满足等值条件的第3行和第行和第4行,表行,表“Borrow”中相应的各列为中相应的各列为NULL值,说明读者值,说明读者张英和李亚茜没有借过书。张英和李亚茜没有借过书。(1)左外连接)左外连接202
20、0MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 RIGHT OUTER JOIN 表名表名2 ON 连接表达式连接表达式说明:说明:连接结果连接结果保留表保留表2没形成连接的行,表没形成连接的行,表1相应的列为相应的列为NULL值。值。案例:案例:从表从表“Borrow”和表和表“Book”中查询出图书被借阅中查询出图书被借阅的情况,包括没有被借的图书情况。的情况,包括没有被借的图书
21、情况。(2)右外连接)右外连接2121MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:从表从表“Borrow”和表和表“Book”中查询出图书被借阅中查询出图书被借阅的情况,包括没有被借的图书情况。的情况,包括没有被借的图书情况。代码:代码:SELECT Borrow.RID,Borrow.BID,Book.BID,Bname,AuthorFROM Borrow RIGHT OUTER JOIN Book
22、-右外连接右外连接ON Borrow.BID=Book.BID(2)右外连接)右外连接2222MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询查询结果:查询结果:说明:说明:连接结果加入了表连接结果加入了表“Book”中不满足等值条件的第中不满足等值条件的第1、4、8、10行,表行,表“Borrow”中相应的列为中相应的列为NULL,说明图书,说明图书ERP从内部集成开始从内部集成开始、ERP系统的集成应用系统的集成应
23、用、SQL Server 2008数据库设计与实现数据库设计与实现和和数据库系统概数据库系统概论论四本书没有被借出过,四本书没有被借出过,SAP基础教程基础教程被借出过两次。被借出过两次。(2)右外连接)右外连接2323IMicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询说明:说明:连接结果加入了表连接结果加入了表“Book”中不满足等值条件的第中不满足等值条件的第1、4、8、10行,表行,表“Borrow”中相应的列为
24、中相应的列为NULL,说明图书,说明图书ERP从内部集成开始从内部集成开始、ERP系统的集成应用系统的集成应用、SQL Server 2008数据库设计与实现数据库设计与实现和和数据库系统概数据库系统概论论四本书没有被借出过,四本书没有被借出过,SAP基础教程基础教程被借出过两次。被借出过两次。(2)右外连接)右外连接2424MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 FULL O
25、UTER JOIN 表名表名2 ON 连接表达式连接表达式说明:说明:连接结果保留表连接结果保留表1没形成连接的元组,表没形成连接的元组,表2相应的列为相应的列为NULL值;连接结果也保留表值;连接结果也保留表2没形成连接的元组,表没形成连接的元组,表1相应的列为相应的列为NULL值。值。案例:案例:借阅和读者全外连接。借阅和读者全外连接。(3)全外连接)全外连接2525MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询
26、案例:案例:借阅和读者全外连接。借阅和读者全外连接。代码:代码:SELECT Reader.*,Borrow.RID,Borrow.BIDFROM Borrow FULL OUTER JOIN Reader -全外连接全外连接ON Borrow.RID=Reader.RID查询结果:查询结果:查询结果与查询结果与左左外连接相同,因为借阅表中读者的编号均在读外连接相同,因为借阅表中读者的编号均在读者表中存在,都能形成连接。者表中存在,都能形成连接。(3)全外连接)全外连接2626MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server
27、 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 别名别名1 JOIN 表名表名1 别名别名2 ON 连接表达式连接表达式说明:说明:表可以通过自连接实现自身的连接运算。自连接可以看作是表可以通过自连接实现自身的连接运算。自连接可以看作是一张表的两个副本之间进行的连接,在自连接中,必须为表一张表的两个副本之间进行的连接,在自连接中,必须为表指定两个不同的别名,使之在逻辑上成为两张表。指定两个不同的别名,使之在逻辑上成为两张表。4.自连接自连接2727MicrosoftMicrosoftSQL Serve
28、r 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:从图书管理数据库从图书管理数据库“Library”中查询出借了两本以中查询出借了两本以上图书的读者的借书信息。上图书的读者的借书信息。步骤步骤1:表表“Borrow”与表与表“Borrow”自连接自连接代码:代码:SELECT x.RID,x.BID,x.ReturnDate,y.RID,y.BIDFROM Borrow x JOIN Borrow y ON x.RID=y.RID -读者编号等值条件自连接读者编
29、号等值条件自连接WHERE x.ReturnDate IS NULL AND y.ReturnDate IS NULL -还期为空,即尚未归还还期为空,即尚未归还4.自连接自连接2828MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询查询结果:查询结果:4.自连接自连接2929MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用
30、数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询说明:说明:仔细观察,可以发现连接查询结果的第仔细观察,可以发现连接查询结果的第5行和第行和第6行数据中读者编号行数据中读者编号“RID”相相同,但书号同,但书号“BID”不同,说明该读者至少借阅了两本书。在以上查询的不同,说明该读者至少借阅了两本书。在以上查询的WHERE子句子句中加上中加上“x.BIDy.BID”查询条件,就可以查询出借阅了两本以上的读者编号了。这查询条件,就可以查询出借阅了两本以上的读者编号了。这里里“x.ReturnDate IS NULL”描述了读者借阅图书尚未归还的条件。描述了读者借阅
31、图书尚未归还的条件。4.自连接自连接3030MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询步骤步骤2:对表对表“Borrow”与表与表“Borrow”自连接加选择条件自连接加选择条件和投影操作。和投影操作。代码:代码:SELECT x.RID,x.BID,x.ReturnDate -投影去重复列名投影去重复列名FROM Borrow x JOIN Borrow y ON x.RID=y.RID -读者编号等值条件自连
32、接读者编号等值条件自连接 WHERE x.ReturnDate IS NULL AND y.ReturnDate IS NULL -还期为空,即尚未归还还期为空,即尚未归还AND x.BIDy.BID -图书编号不同,即两本不同的书图书编号不同,即两本不同的书4.自连接自连接3131MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询查询结果:查询结果:说明:说明:仔细观察,可以发现连接查询结果的第仔细观察,可以发现连接查
33、询结果的第5行和第行和第6行数行数据中读者编号据中读者编号“RID”相同,但书号相同,但书号“BID”不同,说明该读者不同,说明该读者至少借阅了两本书。在以上查询的至少借阅了两本书。在以上查询的WHERE子句中加上子句中加上“x.BIDy.BID”查询条件,就可以查询出借阅了两本以上的查询条件,就可以查询出借阅了两本以上的读者编号了。这里读者编号了。这里“x.ReturnDate IS NULL”描述了读者借阅描述了读者借阅图书尚未归还的条件。图书尚未归还的条件。4.自连接自连接3232MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL S
34、erver 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 CROSS JOIN 表名表名2说明:说明:两两个个表表进进行行笛笛卡卡儿儿积积计计算算,等等价价于于FROM表表名名1,表表名名2之之后不加后不加WHERE连接条件逻辑表达式。连接条件逻辑表达式。一般没有意义一般没有意义5.交叉连接交叉连接3333MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询语法:语法:FROM 表名表名1 JOIN 表名表名2 ON 连接表达式连接表达式 JOIN 表名表名3 ON 连接表达式连接表达式.说明:说明:最多可以连接最多可以连接256个表,通常为个表,通常为810个。个。6.多表连接多表连接3434MicrosoftMicrosoftSQL Server 2012SQL Server 2012 SQL Server 2012数据库技术及应用数据库技术及应用 人民邮电出版社人民邮电出版社 *一、一、ANSI连接查询连接查询案例:案例:对读者