连接查询和子查询
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
——连接查询和子查询
学习目标
认知目标:
了解数据库的连接运算 了解子查询的基本含义
能力目标:
掌握连接查询的方法(重点、难点) 理解子查询的方法(难点)
第5章 数据查询—连接查询和子查询
4
第17讲 一、连接查询(多表查询)
✓ 连接查询的含义:
从多个相关的表中查询数据(用from子句实现)。
✓ 连接运算:
请思考:xsqk、kc、xs_kc三张表应如何连接?
第5章 数据查询—连接查询和子查询
9
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 含义:
在内连接中,只把两个表中满足条件的行显示 出来。
而在外连接中,可以将不满足条件的行也显示 出来。
✓ 外连接的类型
左外连接:保留左边表中不匹配的行。
右外连接:保留右边表中不匹配的行。
把多个表中的行按给定的条件进行连接从而形成新表。
✓ 连接运算的类型:
内连接(掌握) 外连接(左外连接、右外连接、全外连接) (理解) 自连接(理解) 无限制连接(了解,略)
第5章 数据查询—连接查询和子查询
5
第17讲 一、连接查询(多表查询)
1. 内连接
✓ 含义:
将多个表中的共享列值进行比较,把表中满足连接条 件的行组合起来,作为查询结果。
分析:
确定要查询内容的来源。
确定连接条件(要查询的表通过什么列名相关联)。
检查有没有多张表的共有字 段,需要加表名前缀?
select 学号,姓名,课程号, 成绩
from xsqk, xs_kc
where xsqk.学号=xs_kc.学号 and 成绩<60
第5章 数据查询—连接查询和子查询
8
第17讲 一、连接查询(多表查询)
全外连接:保留两表中不匹配的行。
第5章 数据查询—连接查询和子查询
10
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 左外连接的查询结果: ✓ 右外连接的查询结果:
左外连接查询结果
右外连接查询结果
第5章 数据查询—连接查询和子查询
11
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 全外连接的查询结果:
where 查询条件 SQL Server语法形式:
select 列名表
连接条件:当两个表中 的列名相同时,需加上 表名修饰;否则,可省 去表名。
from 表1, 表2
where 查询条件 连接条件
连接条件
第5章 数据查询—连接查询和子查询
7
第17讲 一、连接查询(多表查询)
1. 内连接
实例1:查询不及格学生的学号、姓名、课程号、成 绩信息。
实例:阅读教材例5-37。
第5章 数据查询—连接查询和子查询
13
第17讲 一、连接查询(多表查询)
2. 外连接—(2)右外连接
1. ANSI语法格式: select 列名表 from 表1 right [outer] join 表2 on 连接条件 where 查询条件
2. SQL Server语法格式: select 列名表 from 表1 , 表2 where 查询条件 连接条件
第17讲
第5章 数据查询
——连接查询和子查询
SQL Server 2008
复习: 第17讲
1. 数据库的投影运算(选择列)用什么子句实现?
select子句
2. 数据库的选择运算(选择行)用什么子句实现?
where子句
3. 分类汇总用什么子句实现?group by子句 4. 对分类汇总生成的组进行条件m 表名[,……n] [ where 条件 ] [ group by 列名 ] [ having 逻辑表达式 ]
连接运算 选择运算 分类汇总
[ order by 列名 ] 排序 [ compute 聚集函数 [ by 列名] ]
明细汇总
第5章 数据查询—连接查询和子查询
3
第17讲 第5章 数据查询
全外连接查询结果
第5章 数据查询—连接查询和子查询
12
第17讲 一、连接查询(多表查询)
2. 外连接—(1)左外连接
1. ANSI语法格式 select 列名表 from 表1 left [outer] join 表2 on 连接条件 where 查询条件
2. SQL Server语法格式 select 列名表 from 表1 , 表2 where 查询条件 连接条件
实例:阅读教材例5-39。
第5章 数据查询—连接查询和子查询
15
第17讲 一、连接查询(多表查询)
3. 自连接 ✓ 含义:
将同一个表的不同行连接起来。
自连接可以看作一张表的两个副本之间进行的 连接。
✓ 要求:
在自连接中,必须为表指定两个别名,使之在 逻辑上成为两张表。
✓ 例如:请将xsqk和xs_kc表进行连接。
思考:
• 这两张表为什么 可以进行连接?
• 连接的条件应该 是什么?
内连接查询结果
第5章 数据查询—连接查询和子查询
6
第17讲 一、连接查询(多表查询)
1. 内连接
✓ 语法格式有两种:
ANSI语法形式: select 列名表
表示内连接(可省略)
from 表1 [inner] join 表2 on 连接条件
1. 内连接
课堂练习1:查询不及格学生的学号、课程名、授课 教师、开课学期的信息。
select 学号,xs_kc.课程号, 授课教师,开课学期,成绩
from kc join xs_kc on xs_kc.课程号=kc.课程号
where 成绩<60
select 学号,xs_kc.课程号, 授课教师,开课学期,成绩 from kc, xs_kc where xs_kc.课程号=kc.课程号 and 成绩<60
having子句
5. 明细汇总用什么子句实现?compute by子句 6. compute…by子句必须与什么子句连用?
order by 子句
第5章 数据查询—连接查询和子查询
2
复习: 第17讲
✓ 数据汇总查询的语法格式
用聚合函数、group by子句、compute…by子句
select 列名表
实例:阅读教材例5-38。
第5章 数据查询—连接查询和子查询
14
第17讲 一、连接查询(多表查询)
2. 外连接—(3)全外连接 ✓ 语法格式(只有一种):
select 列名表 from 表1 full [outer] join 表2 on 连接条件 where 查询条件
✓ 说明:
只有ANSI语法格式 SQL Server无全外连接语句。
学习目标
认知目标:
了解数据库的连接运算 了解子查询的基本含义
能力目标:
掌握连接查询的方法(重点、难点) 理解子查询的方法(难点)
第5章 数据查询—连接查询和子查询
4
第17讲 一、连接查询(多表查询)
✓ 连接查询的含义:
从多个相关的表中查询数据(用from子句实现)。
✓ 连接运算:
请思考:xsqk、kc、xs_kc三张表应如何连接?
第5章 数据查询—连接查询和子查询
9
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 含义:
在内连接中,只把两个表中满足条件的行显示 出来。
而在外连接中,可以将不满足条件的行也显示 出来。
✓ 外连接的类型
左外连接:保留左边表中不匹配的行。
右外连接:保留右边表中不匹配的行。
把多个表中的行按给定的条件进行连接从而形成新表。
✓ 连接运算的类型:
内连接(掌握) 外连接(左外连接、右外连接、全外连接) (理解) 自连接(理解) 无限制连接(了解,略)
第5章 数据查询—连接查询和子查询
5
第17讲 一、连接查询(多表查询)
1. 内连接
✓ 含义:
将多个表中的共享列值进行比较,把表中满足连接条 件的行组合起来,作为查询结果。
分析:
确定要查询内容的来源。
确定连接条件(要查询的表通过什么列名相关联)。
检查有没有多张表的共有字 段,需要加表名前缀?
select 学号,姓名,课程号, 成绩
from xsqk, xs_kc
where xsqk.学号=xs_kc.学号 and 成绩<60
第5章 数据查询—连接查询和子查询
8
第17讲 一、连接查询(多表查询)
全外连接:保留两表中不匹配的行。
第5章 数据查询—连接查询和子查询
10
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 左外连接的查询结果: ✓ 右外连接的查询结果:
左外连接查询结果
右外连接查询结果
第5章 数据查询—连接查询和子查询
11
第17讲 一、连接查询(多表查询)
2. 外连接
✓ 全外连接的查询结果:
where 查询条件 SQL Server语法形式:
select 列名表
连接条件:当两个表中 的列名相同时,需加上 表名修饰;否则,可省 去表名。
from 表1, 表2
where 查询条件 连接条件
连接条件
第5章 数据查询—连接查询和子查询
7
第17讲 一、连接查询(多表查询)
1. 内连接
实例1:查询不及格学生的学号、姓名、课程号、成 绩信息。
实例:阅读教材例5-37。
第5章 数据查询—连接查询和子查询
13
第17讲 一、连接查询(多表查询)
2. 外连接—(2)右外连接
1. ANSI语法格式: select 列名表 from 表1 right [outer] join 表2 on 连接条件 where 查询条件
2. SQL Server语法格式: select 列名表 from 表1 , 表2 where 查询条件 连接条件
第17讲
第5章 数据查询
——连接查询和子查询
SQL Server 2008
复习: 第17讲
1. 数据库的投影运算(选择列)用什么子句实现?
select子句
2. 数据库的选择运算(选择行)用什么子句实现?
where子句
3. 分类汇总用什么子句实现?group by子句 4. 对分类汇总生成的组进行条件m 表名[,……n] [ where 条件 ] [ group by 列名 ] [ having 逻辑表达式 ]
连接运算 选择运算 分类汇总
[ order by 列名 ] 排序 [ compute 聚集函数 [ by 列名] ]
明细汇总
第5章 数据查询—连接查询和子查询
3
第17讲 第5章 数据查询
全外连接查询结果
第5章 数据查询—连接查询和子查询
12
第17讲 一、连接查询(多表查询)
2. 外连接—(1)左外连接
1. ANSI语法格式 select 列名表 from 表1 left [outer] join 表2 on 连接条件 where 查询条件
2. SQL Server语法格式 select 列名表 from 表1 , 表2 where 查询条件 连接条件
实例:阅读教材例5-39。
第5章 数据查询—连接查询和子查询
15
第17讲 一、连接查询(多表查询)
3. 自连接 ✓ 含义:
将同一个表的不同行连接起来。
自连接可以看作一张表的两个副本之间进行的 连接。
✓ 要求:
在自连接中,必须为表指定两个别名,使之在 逻辑上成为两张表。
✓ 例如:请将xsqk和xs_kc表进行连接。
思考:
• 这两张表为什么 可以进行连接?
• 连接的条件应该 是什么?
内连接查询结果
第5章 数据查询—连接查询和子查询
6
第17讲 一、连接查询(多表查询)
1. 内连接
✓ 语法格式有两种:
ANSI语法形式: select 列名表
表示内连接(可省略)
from 表1 [inner] join 表2 on 连接条件
1. 内连接
课堂练习1:查询不及格学生的学号、课程名、授课 教师、开课学期的信息。
select 学号,xs_kc.课程号, 授课教师,开课学期,成绩
from kc join xs_kc on xs_kc.课程号=kc.课程号
where 成绩<60
select 学号,xs_kc.课程号, 授课教师,开课学期,成绩 from kc, xs_kc where xs_kc.课程号=kc.课程号 and 成绩<60
having子句
5. 明细汇总用什么子句实现?compute by子句 6. compute…by子句必须与什么子句连用?
order by 子句
第5章 数据查询—连接查询和子查询
2
复习: 第17讲
✓ 数据汇总查询的语法格式
用聚合函数、group by子句、compute…by子句
select 列名表
实例:阅读教材例5-38。
第5章 数据查询—连接查询和子查询
14
第17讲 一、连接查询(多表查询)
2. 外连接—(3)全外连接 ✓ 语法格式(只有一种):
select 列名表 from 表1 full [outer] join 表2 on 连接条件 where 查询条件
✓ 说明:
只有ANSI语法格式 SQL Server无全外连接语句。