收藏 分享(赏)

(2.3.1)--2.2数据查询数据管理.pdf

上传人:职教中国 文档编号:13773976 上传时间:2022-10-21 格式:PDF 页数:80 大小:2.56MB
下载 相关 举报
(2.3.1)--2.2数据查询数据管理.pdf_第1页
第1页 / 共80页
(2.3.1)--2.2数据查询数据管理.pdf_第2页
第2页 / 共80页
(2.3.1)--2.2数据查询数据管理.pdf_第3页
第3页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、数据查询SQL查询语句的一般格式SQ L 查 询语句的一 般格式SELECT ALL|DISTINCT 数据库名. 模式名.表名.FROM 数据库名. 模式名.AS 表别名WHERE GROUP BY HAVING ORDER BY ASC|DESC ;Student.DBO.SSno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MA示 例数 据库 学生数据库中有三个基本表 学生S (Sno ,Sname ,Sgend ,Sage, Sdept )

2、课程C (Cno ,Cname, Cpno,Ccredit ) 选课SC(Sno ,Cno ,Grade)S C SCSno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 20 PHCno Cname Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 数据处理 2C007

3、PASCLA语言 C006 2Sno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98数据查询单表查询单表查询 选择表中的列 选择表中的行 分组与组函数 排序SSno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 2

4、0 PH 投影运算 从关系中选择若干属性列组成新的关系。单表查询选 择表 中的列Sno Sname Sdept SageS1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22S Sname SdeptA CSB CSC MAD CIE MAF CS 语句格式SELECT ALL|DISTINCT 数据库名. 模式名.表名.FROM 数据库名. 模式名.AS 表别名单表查询选 择表 中的列例 求学生所在系及姓名SELECT Sdept, SnameFROM S;例 求学生的全部信息SELECT Sno,Sname,Sgend,Sa

5、ge,SdeptFROM S;或SELECT * FROM S;SSno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 20 PH中各个列的先后顺序可以与表中的顺序不一致。单表查 询 选 择表中 的列 例 查全体学生的姓名、Year of Birth: 、出生年份和所在系,要求用小写字母表示所有系名。SELECT Sname , Year of Birth:, 2022-Sage , LOWER(S

6、dept)FROM S;Sname 无列名 无列名 无列名王林 Year of Birth:2004cs赵阳 Year of Birth:2003cs谢刚 Year of Birth:2003is谭龙 Year of Birth:2000ma崔轶 Year of Birth:2004ma张梅 Year of Birth:2003is李红 Year of Birth:2002phS Sno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22 MAS006 崔轶 男 18 MAS048 张梅

7、 女 19 ISS156 李红 女 20 PH查询结果单表查 询 选 择表中 的列 例 查全体学生的姓名、Year of Birth: 、出生年份和所在系,要求用小写字母表示所有系名。SELECT Sname NAME, Year of Birth: BIRTH, 2022-Sage BIRTHDAY , LOWER(Sdept)DEPARTMENTFROM S;NAME BIRTH BIRTHDAY DEPARTMENT王林 Year of Birth: 2004 cs赵阳 Year of Birth: 2003 cs谢刚 Year of Birth: 2003 is谭龙 Year of B

8、irth: 2000 ma崔轶 Year of Birth: 2004 ma张梅 Year of Birth: 2003 is李红 Year of Birth: 2002 phS Sno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22 MAS006 崔轶 男 18 MAS048 张梅 女 19 ISS156 李红 女 20 PH查询结果例: 求计算机科学系CS 的学生 选择运算 在关系中选择满足给定条件的元组 。单表查 询选择 表中的 行Sno Sname Sdept SageS1

9、A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22SSno Sname Sdept SageS1 A CS 20S2 B CS 21S6 F CS 22 语句格式SELECT ALL|DISTINCT 数据库名. 模式名.表名.FROM 数据库名. 模式名.AS 表别名WHERE 单表查 询选择 表中的 行 消除重复行: DISTINCT (缺省为ALL) 例 求选修了课程的学生号SELECT DISTINCT SnoFROM SC ;* 注意:DISTINCT 短语的 作用范 围是所 有目标 列 例 查询被选修课程的各种成绩SE

10、LECT DISTINCT Cno,DISTINCT GradeFROM SC;SELECT DISTINCT Cno,GradeFROM SC;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98单表查询选 择表 中的行 选择满足一定条件的行: 用WHERE子句实现 复杂查 询条件 。 Where 子句运算符 比较: , ,=,= ,not + 上述比较运算符 确定范围:Between A and B

11、,Not Between A and B 确定集合:IN ,NOT IN 字符匹配:LIKE ,NOT LIKE 空值:IS NULL,IS NOT NULL 多重条件:AND,OR ,NOT单表查询选 择表 中的行 选择满足一定条件的行 比较大小:比较运算符例 求CS 系年龄小于19 的姓名及年龄SELECT Sname, SageFROM SWHERE Sdept=CS AND Sage19;Sname Sage王林 18SSno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22

12、MAS006 崔轶 男 18 MAS048 张梅 女 19 ISS156 李红 女 20 PH单表查询选择表中的行 选择满足一定条件的行 确定范围:(NOT)BETWEEN A AND B例 求年龄在18 21 (含18, 21)之间的学生名及年龄(或不在18 21 之间)SELECT Sname, SageFROM SWHERE Sage BETWEEN 18 AND 21 ;(WHERE Sage=18 AND Sage=21);(WHERE Sage NOT BETWEEN 18 AND 21);(WHERE Sage21);S Sno Sname Sgend Sage SdeptS00

13、1 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22 MAS006 崔轶 男 18 MAS048 张梅 女 19 ISS156 李红 女 20 PH单表查询选 择表 中的行 选择满足一定条件的行 确定集合:IN / NOT IN例 求IS 系、CS 系、MA 系的系名、学生名 (或不是这些系的学生)SELECT Sdept DEPT, Sname NAMEFROM SWHERE Sdept IN (IS, CS, MA);(WHERE SD=IS OR SD=CS OR SD=MA)(WHERE Sdept NOT IN (IS, CS,

14、 MA);)(WHERE SdeptIS AND SdeptCS AND SdeptMA)S Sno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22 MAS006 崔轶 男 18 MAS048 张梅 女 19 ISS156 李红 女 20 PHDEPT NAMECS 王林CS 赵阳IS 谢刚MA 谭龙MA 崔轶IS 张梅DEPT NAMEPH 李红单表查询 选 择表 中的行 选择满足一定条件的行 涉及空值的查询:IS NULL / IS NOT NULL例 查缺少成绩的学生的学号和相

15、应的课程号SELECT Sno, CnoFROM SCWHERE Grade IS NULL;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 NULLS002 C004 89S001 C005 94S002 C001 NULLS005 C001 69S001 C002 88S001 C004 98查询结果Sno Cno GradeS001 C003 NULLS002 C001 NULL单表查询选 择表 中的行 选择表中的行 选择满足一定条件的行 字符匹配:LikeNOT LIKE 匹配串 ESCAPE 换码字符 可以查找指定的属性列值与相匹配的

16、元组。 :可以是一个完整的字符串,也可以含有通配符 % 或 _ 。 %表示任意长度(0的任意字符);_ 表示单个的任意字符。 ESCAPE 换码字 符: 匹配串中 换码字符( 转义符) 之后的字(%,_),被定义为普通字符(不 作通配符用) 。WHERE Cname LIKE DATA_BASE%S_ _ _ _ ESCAPE;单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:LikeNOT LIKE 匹配串ESCAPE换码字符例 列出课程名称中带有_ 的课号及课名。Select Cno ,CnameFrom CWhere Cname LIKE %_% ESCAPE ;CCno Cna

17、me Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC006 Data_Base ManagementSystem2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like例 求课程名中有 数据库 的课程记录SELECT *FROM CWHERE Cname LIKE % 数据库%;CCno Cname Cpno Cc

18、reditC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC001 数据库 C005 2C007 数据库应用系统 2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like例 求倒数第三、四个汉字为 系统 的课程名SELECT CnameFROM CWHERE Cname LIKE % 系统_ _ _ _;CCno Cname Cpno Ccr

19、editC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC003 信息系统分析 C001 2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like 例 求以DATA_BASE 开头且倒数第六个字符为S的课程名SELECT CnameFROM CWHERE Cname LIKE DATA_BASE%S_ _ _ _ESCAPE ;CCno Cn

20、ame Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base Management System2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC006 Data_Base ManagementSystem2单表查询选 择表 中的行 选择满足一定条件的行 多重条件 AND的优先级高于OR 可以用括号改变优先级例 查询计算机系年龄在20 岁以下的学生姓名。SELECT SnameFROM SWHERE Sdept=

21、CSAND Sage20 ;SSno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CSS003 谢刚 男 19 ISS005 谭龙 男 22 MAS006 崔轶 男 18 MAS048 张梅 女 19 ISS156 李红 女 20 PH查询结果Sno Sname Sgend Sage SdeptS001 王林 男 18 CSS002 赵阳 男 19 CS单表 查询选择 表中的 行 选择满足一定条件的行 字符匹配:LikeNOT LIKE 匹配串 ESCAPE 换码字符 可以查找指定的属性列值与相 匹配的 元组。 :可以是一个完 整的字 符

22、串, 也可以 含有通 配符 % 或 _ 。 % 表示任意长度(0 的任意字符);_ 表示单个的任意字符。 ESCAPE 换码字符: 匹配串中 换码字符( 转义符) 之后的字(%,_) , 被定义为普通字符( 不作通配符用) 。WHERE Cname LIKE DATA_BASE%S_ _ _ _ ESCAPE;单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:LikeNOT LIKE 匹配串ESCAPE换码字符例 列出课程名称中带有_ 的课号及课名。Select Cno ,CnameFrom CWhere Cname LIKE %_% ESCAPE ;CCno Cname Cpno C

23、creditC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC006 Data_Base ManagementSystem2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like例 求课程名中有 数据库 的课程记录SELECT *FROM CWHERE Cname LIKE % 数据库%;CCno Cname Cpno CcreditC001

24、 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC001 数据库 C005 2C007 数据库应用系统 2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like例 求倒数第三、四个汉字为 系统 的课程名SELECT CnameFROM CWHERE Cname LIKE % 系统_ _ _ _;CCno Cname Cpno CcreditC001

25、数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base ManagementSystem2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC003 信息系统分析 C001 2单表查询选 择表 中的行 选择满足一定条件的行 字符匹配:Like 例 求以DATA_BASE 开头且倒数第六个字符为S的课程名SELECT CnameFROM CWHERE Cname LIKE DATA_BASE%S_ _ _ _ESCAPE ;CCno Cname Cpno

26、CcreditC001 数据库 C005 2C002 数学 5C003 信息系统分析 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 Data_Base Management System2C007 数据库应用系统 2查询结果Cno Cname Cpno CcreditC006 Data_Base ManagementSystem2单表查询 - 聚 集函数 聚集函数的使用格式: COUNT(DISTINCT|ALL *|列名) SUM(DISTINCT|ALL 列名) AVG(DISTINCT|ALL 列名) MAX(DISTINCT|ALL 列名) MI

27、N(DISTINCT|ALL 列名)单表查询 - 聚 集函数 查询语句的一般格式SELECT ALL|DISTINCT 数据库名. 模式名.表名.FROM 数据库名. 模式名.AS 表别名WHERE GROUP BY HAVING ORDER BY ASC|DESC ;单表查询聚集 函数 例 查询学生总人数。Select COUNT(*)From S;SSno Sname Sgend Sage SdeptS001 王林男18 CSS002 赵阳男19 CSS003 谢刚男19 ISS005 谭龙男22 MAS006 崔轶男18 MAS048 张梅女19 ISS156 李红女20 PH8单表查询

28、聚集 函数 例 求选修了课程的学生人 数。SELECT COUNT(DISTINCT Sno)FROM SC ; 例 求C001号课程的平均 成绩。SELECT A VG(Grade)FROM SCWHERE Cno=C001 ;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98477单表查询聚集 函数例:求C001号课程的最 高分。SELECT MAX(Grade)FROM SCWHERE Cno=

29、C001 ;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 9884单表查询聚集 函数例:查询学生S001选修课程的总学分数。SELECT SUM(Credit)FROM SC,CWHERE Sno=S001 AND SC.Cno=C.Cno ;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002

30、C001 78S005 C001 69S001 C002 88S001 C004 98CCno Cname Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 数据处理 2C007 PASCLA 语言 C006 211单表查询分组 将查询结果集按某一列或多列的值分组 ,值相等的为一组, 一个分组以一个元组的形式出现。 只有出现在Group By 子句中的属性 , 才可出现在Select子句中 例 查询各个课程号与相应的选课人数SELECT Cno, COUNT(Sno)

31、FROM SCGROUP BY Cno;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98Cno 无列名C001 3C002 2C003 1C004 2C005 1查询结果单表查询分组例 查男女生人数SELECT Sgend, COUNT(Sno) COUNTSNOFROM SGROUP BY Sgend;SSno Sname Sgend Sage SdeptS001 王林男18 CSS002 赵阳男

32、19 CSS003 谢刚男19 ISS005 谭龙男22 MAS006 崔轶男18 MAS048 张梅女19 ISS156 李红女20 PHSgend COUNTSNO男 5女 2查询结果单表查询分组 例 统计各系学生的人数。Select Sdept ,count(*) stu_countFrom SGroup By Sdept;SSno Sname Sgend Sage SdeptS001 王林男18 CSS002 赵阳男19 CSS003 谢刚男19 ISS005 谭龙男22 MAS006 崔轶男18 MAS048 张梅女19 ISS156 李红女20 PH单表查询分组例 求选修各门课的人

33、数及平均成绩SELECT Cno, COUNT(Sno), A VG(ALL Grade)FROM SCGROUP BY Cno ;SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98单表查询分组例 求选修课程在4 门以上且都及格的学生号及总平均分。SELECT Sno, A VG(ALL Grade)FROM SCGROUP BY SnoHA VING COUNT(Cno)4 AND MIN(Grad

34、e)=60; Having 与 Where的区别 Where 决定哪些元组被选择参加 运算, 作用于 关系中 的元组 Having 决定哪些分组符合要求, 作用于 分组SCSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98查询结果Sno 无列名S001 91.6单表查询排序 用ORDER BY 子句对查询结果按照一个或多个列的值进行升/ 降排列输出 升序为ASC ;降 序为DESC 空值将作为最小值排序

35、例 对选修C001 课程的学生按成绩降序排列, 同分数者按学号升序排列SELECT Sno, GradeFROM SCWHERE Cno=C001ORDER BY Grade DESC ,Sno ASC ;SCSno Cno GradeS001 C001 84S003 C001 84S001 C003 94S002 C004 89S001 C005 94S002 C001 68S005 C001 79S001 C002 88S001 C004 98查询结果Sno GradeS001 84S003 84S005 79S002 68单表查询排序例 求每个学生的总分并按总分降序排列, 学号升序SEL

36、ECT Sno ,SUM(ALL Grade)FROM SCGROUP BY SnoORDER BY 2 DESC ,Sno ASC ;SCSno Cno GradeS001 C001 84S003 C001 84S001 C003 94S002 C004 89S001 C005 94S002 C001 68S005 C001 79S001 C002 88S003 C005 98查询结果Sno 无列名S001 360S003 182S002 157S005 79数据查询连接查询连接查询 SQL 中连接查询的主要类 型 广义笛卡尔积 , 等值/ 非等值连接查询 , 自身连接查询,外连接查询,复合

37、条件连接查询SELECT ALL|DISTINCT 数据库名. 模式名.表名.FROM R1,R2,R3,WHERE 连接条件表达式 连接条件一: 表名1. 列名1 比较运算符 表名2.列名2 连接条件二: 表名1. 列名1 BETWEEN 表名2.列名2 AND 表名2.列名3连接条件中的列名称为连接字段,其各字段应是可比的。广义笛卡尔积 两个分别为n 目和m 目的关系R 和S 的广义笛卡尔积是一个(n+m) 列的元组的集合。元组的前n 列是关系R 的一个元组 , 后m列是关系S 的一个元组。 若R 有 1 个元组,S 有 2个元组 , 则关 系R和 关系S 的广 义笛卡尔积有 1 2 个元

38、组。R.A R.B R.C S.A S.B S.Ca1 b1 c1 a1 b2 c2a1 b1 c1 a1 b3 c2a1 b1 c1 a2 b2 c1a1 b2 c2 a1 b2 c2a1 b2 c2 a1 b3 c2 RSA B Ca1 b2 c2a1 b3 c2a2 b2 c1A B Ca1 b1 c1a1 b2 c2a2 b2 c1R S SQL查询语句:Select * From R,SB Eb1 3b2 7b3 10b3 2b5 2连接运算 连接运算是从两个关系的笛卡尔积中 选取属 性间满 足一定 条件的 元组。A B Ca1 b1 5a1 b2 6a2 b3 8a2 b4 12R

39、SA R.B C S.B Ea1 b1 5 b2 7a1 b1 5 b3 10a1 b2 6 b2 7a1 b2 6 b3 10a2 b3 8 b3 10例:从R和S中找 出CE 的元组。Select * From R,SWhere CE;连接查询的执行过程 嵌套循环法(NESTED-LOOP) 在表1 中找到第一个元组, 然后从头开始扫描表2 , 查找到满足条件的元组即进行串接并存入 结果表 中;再 继续扫 描表2 , 依次 类推, 直到表2 末尾。 再从 表1 中取第二 个元组 ,重复上述的操作,直到表1 中的元组全 部处理 完毕。S SCSno Sname Sgend Sage Sdep

40、tS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 20 PHSno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98连接查询的执行过程 索引连接法(INDEX-JOIN) 首先对表2 按连接字段建立索引。 然后对表1 中的每个元组, 依次根据其连接字段值 查询表

41、2 的索引, 从中找到满足条件的元组, 找到后就将表1 中的第一个元组与该元组拼接起来,形成结果表中一个元组。S SCSno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 20 PHSno Cno GradeS001 C001 84S001 C003 94S001 C005 94S001 C002 88S001 C004 98S002 C004 89S002 C001 78S003 C002 68S

42、005 C001 69 多表连接 例 求学生选课情况,要求输出学号、姓名 、课 程名与 成绩SELECT S.Sno ,Sname ,Cname ,GradeFROM S ,C ,SCWHERE S.Sno=SC.Sno AND C.Cno=SC.Cno ;S CSC Sno Sname Sgend Sage SdeptS001 王林 男 22 CSS002 赵阳 男 22 CSS003 谢刚 男 21 ISS005 谭龙 男 20 MAS006 崔轶 男 22 MAS048 张梅 女 21 ISS156 李红 女 20 PHCno Cname Cpno CcreditC001 数据库 C00

43、5 2C002 数学 5C003 信息系统 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 数据处理 2C007 PASCLA 语言 C006 2Sno Cno GradeS001 C001 84S003 C002 68S001 C003 94S002 C004 89S001 C005 94S002 C001 78S005 C001 69S001 C002 88S001 C004 98连接查询示例Cno Cname Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统 C001 2C004 操作系统 C006 2C00

44、5 数据结构 C007 3C006 数据处理 2C007 PASCLA 语言 C006 2Cno Cname Cpno CcreditC001 数据库 C005 2C002 数学 5C003 信息系统 C001 2C004 操作系统 C006 2C005 数据结构 C007 3C006 数据处理 2C007 PASCLA 语言 C006 2连接查询示例 单表连接例:求每门课的间接先修课课号(即 先修课 的先修 课)SELECT FIRST.Cno,SECOND.CpnoFROM C FIRST, C SECONDWHERE FIRST.Cpno = SECOND.CnoFIRST 表 (C 表

45、) SECOND 表(C 表 )查询结 果Cno CpnoC001 C007C003 C005C005 C006外连接运算 两个关系R 和S 在做自然连接时,R 和S 中的某些元组可能会在对应的另一个关系中找不到公共属性上值相等元组,从而是造成这些元组在结果关系中被舍弃。这些被舍弃的元组称为悬浮元组(dangling tuple)。 外连接就是将悬浮元组也保存在结果关系中,对不匹配的元组用空值(NULL)来填充的连接。 左外连接(left outer join或left join) :只保留左边关系R中的悬浮元组。 右外连接(right outer join或right join) :只保留右

46、边关系S 中的悬浮元组。B Eb1 3b2 7b3 10b3 2b5 2A B Ca1 b1 5a1 b2 6a2 b3 8a2 b4 12 A R.B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2a2 b4 12 NULLNULL b5 NULL 2A R.B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2a2 b4 12 NULLA R.B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2NULL b5 NULL 2 和 的(全)外连接 和 的左 外连接 和 的右 外连接连接查询示例 例

47、查询雇员的姓名、所在城市和工资, 要求保 留所有 雇员的 所在城 市情况 。SELECT ENAME,CITY ,SALARYFROM EMP LEFT OUTER JOIN SAL ON EMP.ENAME = SAL.ENAME;查询结果ENAME CITY SALARY张丽 北京 6000王小 大连 5000李宏 长春 NULL邓平 上海 NULLENAME SALARY张丽 6000王小 5000赵刚 3000ENAME CITY张丽 北京王小 大连李宏 长春邓平 上海EMPSAL 外连接左外连接 语句格式:SELECT 表名1. 列名1 ,表名2. 列名1,FROM R1 LEFT

48、(OUTER) JOIN R2 ON 表名1. 列名m = 表名2. 列名n;连接查询示例 例 查询雇 员的姓 名、所 在城市 和工资 ,要求 保留所 有雇员 的工资 情况。SELECT ENAME,CITY ,SALARYFROM EMP RIGHT OUTER JOIN SAL ON EMP.ENAME = SAL.ENAME;查询结果ENAME SALARY张丽 6000王小 5000赵刚 3000ENAME CITY张丽 北京王小 大连李宏 长春邓平 上海EMPSAL 外连接右外连接 语句格式:SELECT 表名1. 列名1 ,表名2. 列名1,FROM R1 RIGHT (OUTER

49、) JOIN R2 ON 表名1. 列名m = 表名2. 列名n;ENAME CITY SALARY张丽 北京 6000王小 大连 5000赵刚 NULL 3000连接查询示例 例 查询雇员的姓名、所在城市和工资, 要求保 留所有 雇员的 所在城 市和工 资情况 。SELECT ENAME,CITY ,SALARYFROM EMP FULL OUTER JOIN SAL ON EMP.ENAME = SAL.ENAME;查询结果ENAME SALARY张丽 6000王小 5000赵刚 3000ENAME CITY张丽 北京王小 大连李宏 长春邓平 上海EMPSAL 外连接全外连接 语句格式:S

50、ELECT 表名1. 列名1 ,表名2. 列名1,FROM R1 FULL (OUTER) JOIN R2 ON 表名1. 列名m = 表名2. 列名n;ENAME CITY SALARY张丽 北京 6000王小 大连 5000李宏 长春 NULL邓平 上海 NULL赵刚 NULL 3000复合条件连接查询 例 求选修C006 课程且该门课程成绩超过90分的学生名与成绩 。SELECT Sname, GradeFROM S, SCWHERE S.Sno=SC.Sno AND SC.Cno=C006AND SC.Grade90;连接条件限制条件SSCSno Sname Sgend Sage Sd

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报