欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第4章 关系数据查询语言.pptx

    • 资源ID:96453449       资源大小:1.06MB        全文页数:84页
    • 资源格式: PPTX        下载积分:6金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4章 关系数据查询语言.pptx

    数据库技术与应用数据库技术与应用 SQL-ServerSQL-Server第第4 4章章 关系关系数据查询语言数据查询语言v关系关系的查询操作的查询操作:v关系的更新操作:关系的更新操作:选择(Select)投影(Project)连接(Join)除(Divide)并(Union)交(Intersection)差(Difference)广义笛卡儿积(Extended Cartesian product)插入(Insert)删除(Delete)修改(Update)关系模型三要素:l数据结构l数据的约束条件l关系操作关系操作 4.1 4.1 关系代数关系代数关系数据语言关系数据语言关系数据语言关系数据语言4.1 4.1 关系代数关系代数4.1 4.1 关系代数关系代数4.1.1 4.1.1 传统传统的集合运算的集合运算1 1、并(、并(UnionUnion)关系的集合表示:关系的集合表示:RSRSRSRS2 2、差(、差(ExceptExcept)3 3、交(、交(IntersectIntersect)并、交、差举例并、交、差举例R=(数据库系统原理),(嵌入式系统开发),(面向对象程序设计),(网络与信息安全)S=(计算机三维建模),(面向对象程序设计),(数字图象处理技术),(数字媒体技术)例例4-1某校软件学院有软件工程和数字媒体技术两个专业,设关系R为前者在本学期所开设课程的集合,S为后者在本学期所开设课程的集合:关系运算关系运算意意义结果果RSRSRS(数据库系统原理),(嵌入式系统开发),(面向对象程序设计),(网络与信息安全),(计算机三维建模),(数字图象处理技术),(数字媒体技术)本学期,两个专业共开设的课程本学期,两个专业均开设的课程本学期,只为软件工程专业开设的课程(面向对象程序设计)(数据库系统原理),(嵌入式系统开发),(网络与信息安全)4.1.1 4.1.1 传统传统的集合运算的集合运算4 4、广义笛卡尔广义笛卡尔积积RSR S4.1.2 4.1.2 专门专门的关系运算的关系运算1 1、选择选择(SelectionSelection)运算运算例例4-3 要求要求从从课程课程关系中提取所有选修课的所有信息关系中提取所有选修课的所有信息。(课程课程)课程性质=选修【课程】关系结果2 2、联接联接(JoinJoin)例例4-4 4-4 将将R R关系关系与与S S关系做一个等值联接运关系做一个等值联接运算,联接条件为:算,联接条件为:R R.课课程编号程编号 =S=S.课程编号课程编号。RSR RS S.课程编号=.课程编号3 3、投影投影(ProjectionProjection)例例4-5 4-5 从从课程课程关系中关系中,提取提取课程课程名称与名称与学时数学时数。(课程名称,学时数)(R)(R)R关系运算的综合举例关系运算的综合举例例例4-6 4-6 根据如图根据如图4-74-7所示的关系所示的关系R R和如图和如图4-84-8所示的关系所示的关系S S,求如下的对关系进行运算的,求如下的对关系进行运算的表达式表达式的的结果。结果。数据源数据源INTERNETSQL请求结果集结果集SQL请求服务器客户端SQL查询是是SQL的核心,是的核心,是对存存储在在SQL Server中数据的一种用中数据的一种用SELECT语句表达的句表达的查询请求,其功求,其功能是从指定的能是从指定的SQL数据源中提取数据源中提取满足足用用户要求的数据以要求的数据以结果集的形式返回果集的形式返回给用用户。4.2 SQL4.2 SQL查询基础查询基础1 1、数据源的、数据源的组成组成vSQLSQL数据源由一个或多个表源构成,表数据源由一个或多个表源构成,表源可以是以下三种之一:源可以是以下三种之一:n基表:基表:本地服务器中的数据表。n视图:视图:本地服务器中的视图。n链接表:链接表:远程服务器中的表或视图。数据源数据源2 2、结果集的、结果集的构成构成v结果结果集相关的五个主要属性:集相关的五个主要属性:1.结果集包含哪些列以及这些列的属性:列的名称、数据类型、大小;列中数据值的来源。2.数据源中所包含的表源,以及表源之间的所有逻辑关系。3.表源中的行所必须达到的条件,凡不符合条件的行会被忽略4.对表源中的行或者列中的数据如何完成数学统计(如计数、求和、求平均值等)。5.结果集中行的排列顺序。结果集由行和列果集由行和列组成,是成,是对用用SELECT语句提取数据句提取数据源中的数据的表格排列,与源中的数据的表格排列,与SQL数据表的数据表的结构相同,因此,构相同,因此,结果集果集还可以作可以作为其它其它查询的数据源。的数据源。3 3、SELECTSELECT语句的语法语句的语法框架框架SELECT ALL|DISTINCT SELECT ALL|DISTINCT TOP(expression)PERCENT WITH TIES TOP(expression)PERCENT WITH TIES select_list select_list INTO new_table INTO new_table FROM data_sourceFROM data_source WHERE line_search_condition WHERE line_search_condition GROUP BY group_by_list GROUP BY group_by_list HAVING group_search_condition HAVING group_search_condition ORDER BY order_list ASC|DESC ORDER BY order_list ASC|DESC 可在多个查询之间使用UNION、INTERSECT和EXCEPT运算符(相当于关系的并、交、差等集合操作),以便将各个查询的结果集归并到一个结果集中。4 4、单个、单个SELECTSELECT语句的执行顺序语句的执行顺序1.1.FROMFROM子句:确定数据源中的表源。子句:确定数据源中的表源。2.2.JOINJOIN谓词运算符和谓词运算符和ONON子句(常包含在子句(常包含在FROMFROM子句中):建子句中):建立表源之间的联接。立表源之间的联接。3.3.WHEREWHERE子句:行筛选。子句:行筛选。4.4.GROUP GROUP BYBY子句:行分组。子句:行分组。5.5.聚合函数:聚合函数:组统计。组统计。6.6.HAVINGHAVING子句:组筛选。子句:组筛选。7.7.选择选择列表列表:提取列以建立结果集。:提取列以建立结果集。8.8.DISTINCTDISTINCT或者或者ALLALL谓词运算符:消除或者谓词运算符:消除或者保留重复保留重复行行 9.9.ORDERORDER子句:结果集中行的排序。子句:结果集中行的排序。10.10.TOPTOP子句(需要子句(需要ORDERORDER子句的配合):行截取。子句的配合):行截取。11.11.INTOINTO子句:以结果集的结构和内容为准,建立新表子句:以结果集的结构和内容为准,建立新表。数据源数据源4.34.3 单表查询单表查询特点:特点:v查找范围狭窄查找范围狭窄v简单、易学简单、易学课程编号课程名称学时数学分数课程性质课程介绍学院编号C001 数据库技术与应用322必修 数据库技术药剂学课程是生物制药专业的专业课程与应用是一门非计算机专业的必修课程6C002 生物化学885.5必修 生物化学课程是生物技术等相关专业的专业基础课1C003 药剂学483必修 1C004 理论力学483必修 理论力学是工程类专业的基础课程2C005 会计学563.5必修 会计学是金融类专业的基础课程3C006 社会工作概论644必修 本课程是管理类专业的基础课程4C007 英美文化概论322必修 本课程是语言类专业的基础课程5C008 C+程序设计基础644必修 NULL6C009 Python322选修 NULL6C010 中国古典文学鉴赏181选修 本课程是公选课程,适合于所有喜欢中国古典文学的同学4C011 古典哲学322选修 本课程是公选课程,适合于所有喜欢世界历史、哲学的同学44.3.14.3.1 基本查询基本查询SELECT ALL|DISTINCT SELECT ALL|DISTINCT FROM table_name|view_name FROM table_name|view_name :=:=table_name.table_name.*|view_name.view_name.*|column_name AS column_alias|column_name AS column_alias|expression AS column_alias|expression AS column_alias|column_alias=expression|column_alias=expression ,.n ,.n 例例4-7 从从学学院院表中提取表中提取各个各个学学院院的所有信息的所有信息。SELECT*FROM 学学院院;例例4-8 4-8 从从 学院学院 表中提取所有学院的名称、电表中提取所有学院的名称、电话组成一个学院电话表话组成一个学院电话表。语句语句1 1:SELECT SELECT 学学院院名称名称,学院学院电话电话 FROM FROM 学学院院 ;语句语句2 2:SELECT SELECT 学学院院名称名称,RIGHT(LTRIM(RTRIM(RIGHT(LTRIM(RTRIM(学院学院电话电话),8)AS),8)AS 教务办教务办电话电话FROM FROM 学院学院例例4-94-9查询所有教师所属的职称有哪些查询所有教师所属的职称有哪些?语句语句1 1:SELECT SELECT 职称职称 FROM FROM 教师教师 ;语句语句2 2:去掉重复的行:去掉重复的行SELECT DISTINCT SELECT DISTINCT 职称职称 FROM FROM 教师教师 ;4.3.24.3.2 条件查询条件查询条件子句:条件子句:WHERE WHERE line_search_condition:行:行筛选筛选条件条件行行筛选筛选条件可为:条件可为:关系表达式、逻辑表达式关系表达式、逻辑表达式 关系运算符为:关系运算符为:=(等于)(等于)!=或或(不等于)(不等于)(大于)(大于)=(大于等于)(大于等于)(小于)(小于)=(小于等于)等。(小于等于)等。逻辑运算符为:逻辑运算符为:Not 非(求反)非(求反)And 与与Or 或或运算符运算符说明说明ALL满足子查询中所有值的记录满足子查询中所有值的记录,用法:用法:ALL()ANY满足子查询中任意一个值的记录。满足子查询中任意一个值的记录。用法:用法:ANY()BETWEEN字段的内容在指定范围内。字段的内容在指定范围内。用法:用法:BETWEEN AND EXISTS测试子查询中查询结果是否为空。若为空,则返回假(测试子查询中查询结果是否为空。若为空,则返回假(FALSE)。)。用法:用法:EXISTS()IN字段内容是结果集合或者子查询中的内容。字段内容是结果集合或者子查询中的内容。用法:用法:IN 或者或者 IN()LIKE对对字字符符型型数数据据进进行行字字符符串串比比较较,提提供供两两种种通通配配符符,即即下下划划线线“_”和和百百分分号号“%”,下划线表示,下划线表示1个字符,百分号表示个字符,百分号表示0个或多个字符。个或多个字符。用法:用法:LIKE SOME满足集合中的某一个值,功能与用法等同于满足集合中的某一个值,功能与用法等同于ANY。用法:用法:SOME()ISIS NOT NULLWHERE子句中的条件子句中的条件运算符(谓词)运算符(谓词)LIKE用法:用法:LIKE 在在中可以使用下面的中可以使用下面的通配符通配符通配符通配符:_ 表示某个占位符上的一个任意字符,表示某个占位符上的一个任意字符,%表示可以是任意多个任意字符,表示可以是任意多个任意字符,表示取表示取中的任意一个字符中的任意一个字符,如:,如:abcdef也也可可a-f 表示不取表示不取中的字符中的字符,例例4-10 4-10 列出列出学分在学分在3 3分以下(不包含分以下(不包含3 3分)所分)所有选修课程的名称和它们的学分数和学时数。有选修课程的名称和它们的学分数和学时数。SELECT SELECT 课程名称课程名称,学分数学分数,学时数学时数 FROM FROM 课程课程 WHERE WHERE 学分数学分数 3 AND=40 AND 学时数=60 例例4-12 4-12 查询查询四川籍(特指省份,不包括直辖市)男四川籍(特指省份,不包括直辖市)男学生的所有信息学生的所有信息。SELECT*FROM 学生 WHERE 籍贯 LIKE 四川%AND 性别=男;WHERE LEFT(籍贯,2)=四川 AND 性别=男例例4-13 4-13 查询查询郑涛、郭豪、苏永红、蒋波四位同郑涛、郭豪、苏永红、蒋波四位同学的学号、姓名、籍贯、专业班级和学院编号。学的学号、姓名、籍贯、专业班级和学院编号。SELECT 学号,姓名,籍贯,专业班级,学院编号 FROM 学生 WHERE 姓名 IN(郑涛,郭豪,苏永红,蒋波);条件表示这样的意思:WHERE 姓名=郑涛 OR 姓名=郭豪 OR 姓名=苏永红 OR 姓名=蒋波例例4-14 4-14 查找查找还未设置密码的教师的所有信息。还未设置密码的教师的所有信息。SELECT *FROM 教师 WHERE 密码 IS NULL空空值的判断不能使用等于比的判断不能使用等于比较运算符运算符:密密码=NULL4.3.3 4.3.3 生成表查询生成表查询语法:语法:INTO new_table INTO new_table 参数:参数:lnew_tablenew_table:以:以SELECTSELECT语句执行后的结果集为内语句执行后的结果集为内容,创建容,创建新的数据表或临时表。新的数据表或临时表。注意:注意:当当选择列表选择列表select_listselect_list中包括计算列时,新表中中包括计算列时,新表中的相应列不再是计算列,其类型由其值的格式来确的相应列不再是计算列,其类型由其值的格式来确定。定。例例4-15 4-15 将将工程力学工程力学17011701班所有学生的学号、姓班所有学生的学号、姓名、出生日期等信息永久保存到当前数据库的新数名、出生日期等信息永久保存到当前数据库的新数据表据表 工程力学工程力学17011701中中。注意:生成表查询并不显示查询结果。但可用如下注意:生成表查询并不显示查询结果。但可用如下SELECTSELECT语句显示新表语句显示新表SupperFilmSupperFilm的内容:的内容:SELECT SELECT*FROM FROM SupperFilm;SupperFilm;SELECT 学号,姓名,出生日期 INTO 工程力学1701 FROM 学生 WHERE 专业班级=工程力学1701;4.3.44.3.4 聚合查询聚合查询什么什么是聚合查询是聚合查询?所谓聚合查询就是按照分组列(在所谓聚合查询就是按照分组列(在GROUPGROUP子句中指子句中指定)值的个数定)值的个数n n,将数据源中指定的行(满足,将数据源中指定的行(满足WHEREWHERE条条件的行)分成件的行)分成n n个组(缺省个组(缺省GROUPGROUP的情况下,分成一个的情况下,分成一个组),并且可对每一个组做进一步的组筛选(由组),并且可对每一个组做进一步的组筛选(由HAVINGHAVING子句实现),再针对每一组返回一个统计性的子句实现),再针对每一组返回一个统计性的摘要行(该摘要行中的统计数据由摘要行(该摘要行中的统计数据由SELECTSELECT子句中的聚子句中的聚合函数提供)合函数提供)。聚合查询有下列三种实现方式:聚合查询有下列三种实现方式:1.1.仅由聚合函数实现聚合查询仅由聚合函数实现聚合查询2.2.由聚合函数和由聚合函数和GROUPGROUP子句共同实现子句共同实现3.3.由聚合函数、由聚合函数、GROUPGROUP子句和子句和HAVINGHAVING子句共同子句共同实现实现1 1.仅仅由聚合函数实现聚合查询由聚合函数实现聚合查询计数函数:计数函数:COUNT COUNT(*(*)COUNT COUNT(ALL|DISTINCT expression (ALL|DISTINCT expression )求和函数:求和函数:SUM SUM(ALL|DISTINCT expression(ALL|DISTINCT expression)求平均值函数:求平均值函数:AVG AVG(ALL|DISTINCT expression(ALL|DISTINCT expression)求最小值函数:求最小值函数:MIN MIN(expression(expression)求最大值函数:求最大值函数:MAX MAX(expression(expression)聚合函数只能在以下位置作为表达式使用:lSELECT 语句的选择列表select_list中。lHAVING 子句的组筛选器中。例例4-16 4-16 统计统计全校一共开设了多少门课程全校一共开设了多少门课程。SELECT COUNT(*)as 课程门数 FROM 课程;2 2.由由聚合函数和聚合函数和GROUPGROUP子句共同实现子句共同实现语法:语法:GROUP BY GROUP BY :=:=,.n,.n参数:参数:lgroup_by_listgroup_by_list:分组列表,可由多个分组列组:分组列表,可由多个分组列组成。成。lgroup_by_expressiongroup_by_expression:分组列(或者称分组依:分组列(或者称分组依据),可以是单独的表列或视图列,也可以是关据),可以是单独的表列或视图列,也可以是关于表列或视图列的非聚合表达式。其意义是根据于表列或视图列的非聚合表达式。其意义是根据其值的个数将数据源中行分成几个组。其值的个数将数据源中行分成几个组。例例4-17 4-17 统计统计2017-20182017-2018学年第一学期每一个课堂的学年第一学期每一个课堂的平均成绩,显示每一个课堂的编号和平均成绩。平均成绩,显示每一个课堂的编号和平均成绩。SELECT 课堂编号,AVG(成绩)AS 平均成绩 FROM 选课成绩 WHERE 课堂编号 LIKE 2017-2018-1%GROUP BY 课堂编号;结果集果集 有几行?有几行?例例4-18 4-18 根据根据院系统计男女生的人数,显示每一院系统计男女生的人数,显示每一个学院的编号、性别以及人数。个学院的编号、性别以及人数。SELECT 学院编号,性别,COUNT(*)AS 人数 FROM 学生 GROUP BY 学院编号,性别;3 3 3 3.由由由由聚合函数、聚合函数、聚合函数、聚合函数、GROUPGROUPGROUPGROUP子句子句子句子句和和和和HAVINGHAVINGHAVINGHAVING子句共同实现子句共同实现子句共同实现子句共同实现例例4-19 4-19 查询查询各种职称的教师人数各种职称的教师人数。SELECT 职称,COUNT(*)AS 人数 FROM 教师 GROUP BY 职称HAVING HAVING group_search_conditiongroup_search_condition为组筛选条件为组筛选条件如果想去掉无职称人的统计结果,则可使用如下两如果想去掉无职称人的统计结果,则可使用如下两种方式:种方式:SELECT 职称,COUNT(*)AS 人数 FROM 教师 GROUP BY 职称 HAVING 职称 IS NOT NULL;SELECT 职称,COUNT(*)AS 人数 FROM 教师 WHERE 职称 IS NOT NULL GROUP BY 职称;SELECT 职称,COUNT(*)AS 人数 FROM 教师 GROUP BY 职称 HAVING COUNT(*)2;如果我们限定人数,则可使用下面的语句屏蔽人数小于等于2的组(注意:在注意:在HAVING子句中不可子句中不可使用列使用列别名名):生成生成合计作为附加的汇总列出现在结果集的最后。当合计作为附加的汇总列出现在结果集的最后。当与与 BY 一起使用时,一起使用时,COMPUTE 子句在结果集内生成子句在结果集内生成控制中断和小计控制中断和小计。COMPUTE 聚合聚合函数函数,.n BY expression ,.n BY expression 表示按表示按expression字段分组,字段分组,使用使用BY子句必须先按此字段排序子句必须先按此字段排序4 4 4 4使用使用使用使用COMPUTECOMPUTECOMPUTECOMPUTE和和和和COMPUTE BYCOMPUTE BYCOMPUTE BYCOMPUTE BY子句汇总子句汇总子句汇总子句汇总统计学生表中的学生人数并显示详细数据SELECT*FROM 学生 compute count(学号)按班级分别统计学生表中各班的学生人数并显示详细数据SELECT*FROM 学生 order by 专业班级 compute count(学号)by 专业班级4.3.54.3.5 结果集的数据排序结果集的数据排序1 1、ORDER ORDER 子句子句语法:语法:ORDER BY order_by_listORDER BY order_by_listorder_by_list :=order_by_list :=order_by_expression order_by_expression ASC|DESC ASC|DESC ,.n,.n 参数:参数:lorder_by_list order_by_list:排序列表,可包含多个排序列。:排序列表,可包含多个排序列。lorder_by_expressionorder_by_expression:排序列。可以是一个表列、视:排序列。可以是一个表列、视图列或列别名,也可以是一个表示该名称或别名在选图列或列别名,也可以是一个表示该名称或别名在选择列表择列表select_listselect_list中所处位置的非负整数。中所处位置的非负整数。lASC|DESCASC|DESC:可缺省。:可缺省。ASCASC代表升序(默认),代表升序(默认),DESCDESC代代表降序。表降序。例例4-20 4-20 从从 教师教师 表中提取每一位教师的姓名和职表中提取每一位教师的姓名和职称,要求按职称的字典序排列显示称,要求按职称的字典序排列显示。SELECT 姓名,职称 FROM 教师 ORDER BY 职称;如果如果要求按照要求按照职称的意称的意义进行排序,即按照教授、行排序,即按照教授、副教授、副教授、讲师、助教、无、助教、无职称的称的顺序排列序排列?CASECASE表达式的妙用表达式的妙用之一之一 SELECT 姓名,职称 FROM 教师 ORDER BY CASE WHEN 职称=教授 THEN 1 WHEN 职称=副教授 THEN 2 WHEN 职称=讲师 THEN 3 WHEN 职称=助教 THEN 4 ELSE 5 END;CASE WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 ELSE 表达式nEND 2 2、TOPTOP子句子句 TOP(expression)PERCENT WITH TIES TOP(expression)PERCENT WITH TIES 参数:参数:lTOP TOP(expression)(expression):指示只能从结果集返回由:指示只能从结果集返回由expressionexpression指定数目的第一组行。指定数目的第一组行。lTOP TOP(expression)PERCENT(expression)PERCENT:指示只能从查询结:指示只能从查询结果集返回由果集返回由expressionexpression指定的百分比数目(相对于指定的百分比数目(相对于结果集的大小)的第一组行。结果集的大小)的第一组行。lWITH WITH TIESTIES指定从结果集中再返回一些额外的行,这指定从结果集中再返回一些额外的行,这些额外的返回行与些额外的返回行与TOPTOP限制后从结果集返回的最后一限制后从结果集返回的最后一行,在行,在ORDERORDER子句指定的排序列上的值是相同的。子句指定的排序列上的值是相同的。例例4-21 4-21 提取提取编号为编号为“2017-2018-2-B0092017-2018-2-B009”的中,成的中,成绩最高的前三名学生的学号,要求显示学号和成绩。绩最高的前三名学生的学号,要求显示学号和成绩。SELECT TOP(3)学号,成绩 FROM 选课成绩 WHERE 课堂编号=2017-2018-2-B009 ORDER BY 成绩 DESC;SELECT TOP(3)WITH TIES 学号,成绩 FROM 选课成绩 WHERE 课堂编号=2017-2018-2-B009 ORDER BY 成绩 DESC;如果要显示并列第三的如果要显示并列第三的4.44.4 多表查询多表查询学院学院学院编号学院学院名称名称学院地址学院电话课程课程课程编号课程名称学时数学分数课程性质课程介绍课程介绍学院编号数据查询要求数据查询要求:查询生命学院共开设了那些课程,要求显示课程的查询生命学院共开设了那些课程,要求显示课程的名称。名称。“生命学院”“课程名称”课程名称程名称生物化学药剂学结论:本次查询至少需要从 学院、课程二个相关数据表中提取结果数据4.4.14.4.1 联接概述联接概述1、联接的目的接的目的建立数据行的建立数据行的导航路径航路径学院学院表表课程程表表2 2、联接展示、联接展示学院学院表表课程程表表3 3、联接条件、联接条件ON ON join_condition AND AND n n :=:=OP column_exp OP column_expOPOP:=、=、!=!=、!联接条件最常见的写法是将两个表的公共列的名字用比较运联接条件最常见的写法是将两个表的公共列的名字用比较运算符连接起来(注意:在列名前必须加上表名限制,以限定算符连接起来(注意:在列名前必须加上表名限制,以限定列的所属)。列的所属)。公共列的两种常见形态:公共列的两种常见形态:l公共公共列在两个表中均为主键。列在两个表中均为主键。l公共公共列是一个表的主键,但在另一个表中是外键列是一个表的主键,但在另一个表中是外键。例如:例如:ON ON 学学院院.学学院院编号编号 =课程课程.学学院院编号编号4 4、联接、联接类型类型内链接内链接INNER JOIN显示符合条件的显示符合条件的记录,此为默认记录,此为默认值值等值连接等值连接用用“=”非等值连接非等值连接用用,=,=自然连接自然连接去掉重复字段去掉重复字段外连接外连接(用(用“=”)LEFT(OUTER)JOIN 为左(外)连接,用于显示符合条件的数据行以及左边为左(外)连接,用于显示符合条件的数据行以及左边表中不符合条件的数据行,此时右边数据行会以表中不符合条件的数据行,此时右边数据行会以NULL来显示来显示 RIGHT(OUTER)JOIN 右(外)连接,用于显示符合条件的数据行以及右边表右(外)连接,用于显示符合条件的数据行以及右边表中不符合条件的数据行。此时左边数据行会以中不符合条件的数据行。此时左边数据行会以NULL来来显示显示 FULL(OUTER)JOIN 显示符合条件的数据行以及左边表和右边表中不符合条显示符合条件的数据行以及左边表和右边表中不符合条件的数据行。此时缺乏数据的数据行会以件的数据行。此时缺乏数据的数据行会以NULL来显示来显示 交叉连接交叉连接CROSS JOIN(无条件)(无条件)将一个表的每一个记录和另一表的每个记录匹配成新的将一个表的每一个记录和另一表的每个记录匹配成新的数据行数据行 5 5、联接规范(内部联接)、联接规范(内部联接)(1)(1)在在FROMFROM子句中指定联接规范,语法如下:子句中指定联接规范,语法如下:FROM FROM :=:=|table_sourceINNER INNER JOIN JOIN ON ON n n:=:=table_name|view_name AS table_alias table_name|view_name AS table_alias 例例4-22 在FROM子句中指定成绩表和学生表的联接规范(采用内部联接):FROM 成绩 INNER JOIN 学生 ON 成绩.学生编号=学生.学生编号(2(2)在在WHEREWHERE子句中指定联接规范子句中指定联接规范FROM FROM WHERE AND WHERE AND data_source:=:=,n table_source ,n table_source:=table_name|view_nameAS table_alias:=table_name|view_nameAS table_alias 例例4-23 在WHERE子句中指定成绩表和学生表的联接规范(注意:联接类型默认为内部联接):FROM 成绩,学生WHERE 成绩.学生编号=学生.学生编号4.4.2 4.4.2 内部联接内部联接(inner join)(inner join)内部内部联接可分为:联接可分为:等值联接、非等值联接、自然联接等值联接、非等值联接、自然联接v等值联接的联接条件中使用等值联接的联接条件中使用“=”v非等值非等值联接的联接条件中使用联接的联接条件中使用“”、“=”=”、“”“”、“=”=”v自然自然联接联接的联接条件中使用的联接条件中使用“=”和等值联接不同的是要去掉重复属性。和等值联接不同的是要去掉重复属性。例例4-26 4-26 查询查询教师欧阳淑芳所上的所有课堂,要求教师欧阳淑芳所上的所有课堂,要求按照开课年份和开课学期的升序,显示课堂名称、开按照开课年份和开课学期的升序,显示课堂名称、开课年份、开课学期。课年份、开课学期。SELECT 课堂.课堂名称,课堂.开课年份,课堂.开课学期 FROM 教师INNERJOIN课堂ON教师.教师编号=课堂.教师编号 WHERE 教师.姓名=欧阳淑芳 ORDER BY 课堂.开课年份,课堂.开课学期;SELECT 课堂.课堂名称,课堂.开课年份,课堂.开课学期 FROM 教师,课堂 WHERE 教师.教师编号=课堂.教师编号 AND 教师.姓名=欧阳淑芳 ORDER BY 课堂.开课年份,课堂.开课学期;例例4-27 4-27 查询查询王志强老师讲授的所有学生的名王志强老师讲授的所有学生的名单,显示学号、姓名、专业班级。单,显示学号、姓名、专业班级。SELECT 学生.学号,学生.姓名,成绩,专业班级FROM 教师INNERJOIN课堂ON教师.教师编号=课堂.教师编号INNER JOIN选课成绩 ON 课堂.课堂编号=选课成绩.课堂编号INNER JOIN学生ON选课成绩.学号=学生.学号WHERE 教师.姓名=王志强;如果将联接条件写在WHERE子句中?例例4-28 4-28 列出列出最受欢迎(特指选修人数)的前三门最受欢迎(特指选修人数)的前三门课程,要求按选修人数的降序排列课程的名称和选修课程,要求按选修人数的降序排列课程的名称和选修人数。人数。SELECT TOP 3 课程名称课程名称,选修人数选修人数 FROM 课程课程 INNER JOIN(SELECT 课程课程.课程编号课程编号,COUNT(*)AS 选修人数选修人数FROM 课程课程 INNER JOIN 课堂课堂 ON 课程课程.课程编号课程编号=课堂课堂.课程编号课程编号 INNER JOIN 选课成绩选课成绩 ON 课堂课堂.课堂编号课堂编号=选课成绩选课成绩.课堂编号课堂编号GROUP BY 课程课程.课程编号课程编号)AS A ON 课程课程.课程编号课程编号=A.课程编号课程编号 ORDER BY 选修人数选修人数 DESC;例例4-29 4-29 统计统计计算机学院每一位教师本学期的教计算机学院每一位教师本学期的教学工作量(指学时数),要求显示教师编号和学时学工作量(指学时数),要求显示教师编号和学时数,并按学时数的降序排列。数,并按学时数的降序排列。SELECT 教师.教师编号,SUM(课程.学时数)AS 学时数 FROM 教师 INNER JOIN 课堂 ON 教师.教师编号=课堂.教师编号 INNER JOIN 课程 ON 课堂.课程编号=课程.课程编号 inner join 学院 on 教师.学院编号=学院.学院编号 WHERE 课堂.开课年份=2017-2018 AND 课堂.开课学期=一 and 学院名称=计算机学院 GROUP BY 教师.教师编号 ORDER BY 学时数 DESC4.4.3 4.4.3 外联接外联接(outer join)(outer join)外联接外联接的联接条件是用“=”实现的外联接结果集中除了有满足条件的元组还有不满足条件的元组。外联接分为:左(外)联接、右(外)联接、全联接联接规范为:From 表1 left/right/full outer join 表2 on 联接条件交叉链接交叉链接(cross join)(cross join)交叉联接即没有条件的联接。其结果集为笛卡尔全集。联接规范为:From 表1 cross join 表24.4.4 4.4.4 结果结果集的归并处理集的归并处理使用谓词运算符(使用谓词运算符(Union(Union(集合并集合并)、Except(Except(集合集合差差)、Intersect(Intersect(集合交集合交))可以将多个可以将多个结果处理成成结果处理成成一个结果集。一个结果集。语法:语法:UNION ALL|EXCEPT|INTERSECT UNION ALL|EXCEPT|INTERSECT 位置:位置:INTOINTO的位置的位置:只能放在第一个只能放在第一个selectselect语句中语句中ORDER BYORDER BY子句的位置子句的位置:只能放在最后一个只能放在最后一个selectselect语句中语句中UNIONUNION:并运算:并运算例例4-31 4-31 从从 学生学生 表中提取湖北省和其他省的人数表中提取湖北省和其他省的人数。SELECT 湖北 AS 省份,count(*)AS 人数 FROM 学生 WHERE 籍贯LIKE湖北%UNIONSELECT 其他 AS 省份,count(*)AS 人数 FROM 学生 WHERE 籍贯NOTLIKE湖北%;INTERSECTINTERSECT:交运算:交运算v例例4-32 4-32 查询查询土木工程、工程力学两个专业的学生在土木工程、工程力学两个专业的学生在2017-20182017-2018学年均学年均选修过的必修课程,要求显示课程编号、课程名称,并按课程编号的选修过的必修课程,要求显示课程编号、课程名称,并按课程编号的升序排列,并将查询结果保存到临时表升序排列,并将查询结果保存到临时表Temp3Temp3中。中。SELECT distinct 课程.课程编号,课程.课程名称 INTO Temp3 FROM 课程 INNER JOIN 课堂 ON 课程.课程编号=课堂.课程编号 WHERE 课堂.开课年份=2017-2018 AND 课程.课程性质=必修 AND 课堂.班级列表 LIKE%土木工程%INTERSECTSELECT distinct 课程.课程编号,课程.课程名称 FROM 课程 INNER JOIN 课堂 ON 课程.课程编号=课堂.课程编号 WHERE 课堂.开课年份=2017-2018 AN

    注意事项

    本文(第4章 关系数据查询语言.pptx)为本站会员(高校教****PT)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开