《SQL查询-高级查询22.ppt
文本预览下载声明
SQL查询 复 习 T-SQL简单查询(单表查询) ?知识点 复 习 关系运算之连接运算 P16页 1.交叉连接 (积) 2.内连接 条件连接 自然连接 3.外连接 第7章 SQL 查询 T-SQL高级查询(多表查询) 连接查询 子查询(嵌套查询) 7.4 连接查询 在数据库的应用中,经常需要从多个相关的表中查询数据,如果多个表之间存在关联关系,则可以通过连接查询同时查看各表的数据。 连接条件可在FROM或WHERE子句中指定连接。连接条件与WHERE和HAVING搜索条件组合,用于控制FROM子句中的基表所选定的行。 在FROM子句中指定连接条件,有助于将这些连接条件与WHERE子句中可能指定的其他搜索条件分开。 连接查询句法 连接的语法有两种: SQL Server连接语法----在Where子句中连接 [表名1.]列名1 比较运算符 [表名2.] 列名2 [and …] ANSI连接语法----在From子句中连接 表名1 连接类型 表名2 ON 表名1.列名=表名2.列名 [, …] 连接类型指定所执行的连接方式,包括内连接、外连接或交叉连接。 ANSI连接语法连接查询 ----在From子句中连接与显式指定有关的连接类型连接关键字如下: (1)[INNER] JOIN 用于指定了两个表之间做内连接(等值连接、不等值连接或自然连接) (2) LEFT [OUTER] JOIN 左外部连接 (3) RIGHT [OUTER] JOIN 右外部连接 (4) FULL [OUTER] JOIN 全外部连接操作 (4) CROSS JOIN 交叉连接,或者叫笛卡尔连接,指明两个表之间做笛卡尔积操作 连接查询: 对多个表进行查询 多表连接的查询分四大类: 内连接: [不]相等连接,带有选择条件的连接,自然连接(相等连接去掉重复列) 外连接:左外连接,右外连接,全外连接 自连接:本表自己连接,使用表的别名的连接 交叉连接:笛卡尔积 7.4.1 内连接 内连接一般是我们最常使用的,也叫自然连接,是用比较运算符比较要连接列的值的连接。它是通过(INNER JOIN或者JOIN)关键字把多表进行连接。语法如下: SELECT 列名1, …,列名n FROM 表1 INNER JOIN 表2 ON 表1. 列名=表2. 列名 7.4.1 内连接 说明: 1) 其中,INNER JOIN是SQL Server的缺省连接,可简写为JOIN。 2) 公共属性要表示为:表名.列名 3) 如果多个表要做连接,那么这些表之间必然存在着主键和外键的关系。所以需要将这些键的关系列出,就可以得出表连接的结果。 内连接就是将参与的数据表中的每列与其它数据表的列相匹配,形成临时数据表,并将满足数据项相等的记录从临时数据表中选择出来。 7.4.1 内连接 使用ANSI连接语法: 【例7-19】给出以下程序的执行结果。 USE Library SELECT * FROM UserTb INNER JOIN Lending ON UserTb.UserId = Lending.UserId 对应中文列名表的比较: SELECT * FROM 读者信息表 INNER JOIN 借阅信息表 ON 读者信息表 .读者编号 =借阅信息表.读者编号 7.4.1 内连接 使用where句法: 【例7-19】给出以下程序的执行结果。 USE Library SELECT * FROM UserTb, Lending where UserTb.UserId = Lending.UserId 对应中文列名表的比较: SELECT * FROM 读者信息表 , 借阅信息表 where 读者信息表 .读者编号 =借阅信息表.读者编号 2张表要建立连接查询… 1.什么条件的表合适连接? 2.基本格式? SELECT ??? FROM ??? WHERE ??? 多张表要建立连接查询呢? 案例:内连接student 思考:查询学号、姓名、课程代码、成绩? 几张表?那几张表? 句法1: SELECT 学生信息表.学号,姓名,课程代码,成绩 FROM 学生信息表 inner join 成绩表
显示全部