第4章 关系数据查询语言.pptx
《第4章 关系数据查询语言.pptx》由会员分享,可在线阅读,更多相关《第4章 关系数据查询语言.pptx(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库技术与应用数据库技术与应用 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 关系代数关系代数关系数据语言关系数据语言关系数据语言关系数
2、据语言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为前者在本学期所开设课程的集合
3、,S为后者在本学期所开设课程的集合:关系运算关系运算意意义结果果RSRSRS(数据库系统原理),(嵌入式系统开发),(面向对象程序设计),(网络与信息安全),(计算机三维建模),(数字图象处理技术),(数字媒体技术)本学期,两个专业共开设的课程本学期,两个专业均开设的课程本学期,只为软件工程专业开设的课程(面向对象程序设计)(数据库系统原理),(嵌入式系统开发),(网络与信息安全)4.1.1 4.1.1 传统传统的集合运算的集合运算4 4、广义笛卡尔广义笛卡尔积积RSR S4.1.2 4.1.2 专门专门的关系运算的关系运算1 1、选择选择(SelectionSelection)运算运算例例4
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关系运算的综合举例关系运算的综合举例例例
5、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
6、 1、数据源的、数据源的组成组成vSQLSQL数据源由一个或多个表源构成,表数据源由一个或多个表源构成,表源可以是以下三种之一:源可以是以下三种之一:n基表:基表:本地服务器中的数据表。n视图:视图:本地服务器中的视图。n链接表:链接表:远程服务器中的表或视图。数据源数据源2 2、结果集的、结果集的构成构成v结果结果集相关的五个主要属性:集相关的五个主要属性:1.结果集包含哪些列以及这些列的属性:列的名称、数据类型、大小;列中数据值的来源。2.数据源中所包含的表源,以及表源之间的所有逻辑关系。3.表源中的行所必须达到的条件,凡不符合条件的行会被忽略4.对表源中的行或者列中的数据如何完成数学统计
7、(如计数、求和、求平均值等)。5.结果集中行的排列顺序。结果集由行和列果集由行和列组成,是成,是对用用SELECT语句提取数据句提取数据源中的数据的表格排列,与源中的数据的表格排列,与SQL数据表的数据表的结构相同,因此,构相同,因此,结果集果集还可以作可以作为其它其它查询的数据源。的数据源。3 3、SELECTSELECT语句的语法语句的语法框架框架SELECT ALL|DISTINCT SELECT ALL|DISTINCT TOP(expression)PERCENT WITH TIES TOP(expression)PERCENT WITH TIES select_list selec
8、t_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 可在多个查询之间使用
9、UNION、INTERSECT和EXCEPT运算符(相当于关系的并、交、差等集合操作),以便将各个查询的结果集归并到一个结果集中。4 4、单个、单个SELECTSELECT语句的执行顺序语句的执行顺序1.1.FROMFROM子句:确定数据源中的表源。子句:确定数据源中的表源。2.2.JOINJOIN谓词运算符和谓词运算符和ONON子句(常包含在子句(常包含在FROMFROM子句中):建子句中):建立表源之间的联接。立表源之间的联接。3.3.WHEREWHERE子句:行筛选。子句:行筛选。4.4.GROUP GROUP BYBY子句:行分组。子句:行分组。5.5.聚合函数:聚合函数:组统计。组统
10、计。6.6.HAVINGHAVING子句:组筛选。子句:组筛选。7.7.选择选择列表列表:提取列以建立结果集。:提取列以建立结果集。8.8.DISTINCTDISTINCT或者或者ALLALL谓词运算符:消除或者谓词运算符:消除或者保留重复保留重复行行 9.9.ORDERORDER子句:结果集中行的排序。子句:结果集中行的排序。10.10.TOPTOP子句(需要子句(需要ORDERORDER子句的配合):行截取。子句的配合):行截取。11.11.INTOINTO子句:以结果集的结构和内容为准,建立新表子句:以结果集的结构和内容为准,建立新表。数据源数据源4.34.3 单表查询单表查询特点:特点
11、:v查找范围狭窄查找范围狭窄v简单、易学简单、易学课程编号课程名称学时数学分数课程性质课程介绍学院编号C001 数据库技术与应用322必修 数据库技术药剂学课程是生物制药专业的专业课程与应用是一门非计算机专业的必修课程6C002 生物化学885.5必修 生物化学课程是生物技术等相关专业的专业基础课1C003 药剂学483必修 1C004 理论力学483必修 理论力学是工程类专业的基础课程2C005 会计学563.5必修 会计学是金融类专业的基础课程3C006 社会工作概论644必修 本课程是管理类专业的基础课程4C007 英美文化概论322必修 本课程是语言类专业的基础课程5C008 C+程序
12、设计基础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
13、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 学学院院名称
14、名称,学院学院电话电话 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
15、.3.2 条件查询条件查询条件子句:条件子句:WHERE WHERE line_search_condition:行:行筛选筛选条件条件行行筛选筛选条件可为:条件可为:关系表达式、逻辑表达式关系表达式、逻辑表达式 关系运算符为:关系运算符为:=(等于)(等于)!=或或(不等于)(不等于)(大于)(大于)=(大于等于)(大于等于)(小于)(小于)=(小于等于)等。(小于等于)等。逻辑运算符为:逻辑运算符为:Not 非(求反)非(求反)And 与与Or 或或运算符运算符说明说明ALL满足子查询中所有值的记录满足子查询中所有值的记录,用法:用法:ALL()ANY满足子查询中任意一个值的记录。满足子查
16、询中任意一个值的记录。用法:用法:ANY()BETWEEN字段的内容在指定范围内。字段的内容在指定范围内。用法:用法:BETWEEN AND EXISTS测试子查询中查询结果是否为空。若为空,则返回假(测试子查询中查询结果是否为空。若为空,则返回假(FALSE)。)。用法:用法:EXISTS()IN字段内容是结果集合或者子查询中的内容。字段内容是结果集合或者子查询中的内容。用法:用法:IN 或者或者 IN()LIKE对对字字符符型型数数据据进进行行字字符符串串比比较较,提提供供两两种种通通配配符符,即即下下划划线线“_”和和百百分分号号“%”,下划线表示,下划线表示1个字符,百分号表示个字符,
17、百分号表示0个或多个字符。个或多个字符。用法:用法:LIKE SOME满足集合中的某一个值,功能与用法等同于满足集合中的某一个值,功能与用法等同于ANY。用法:用法:SOME()ISIS NOT NULLWHERE子句中的条件子句中的条件运算符(谓词)运算符(谓词)LIKE用法:用法:LIKE 在在中可以使用下面的中可以使用下面的通配符通配符通配符通配符:_ 表示某个占位符上的一个任意字符,表示某个占位符上的一个任意字符,%表示可以是任意多个任意字符,表示可以是任意多个任意字符,表示取表示取中的任意一个字符中的任意一个字符,如:,如:abcdef也也可可a-f 表示不取表示不取中的字符中的字符
18、,例例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(籍贯,
19、2)=四川 AND 性别=男例例4-13 4-13 查询查询郑涛、郭豪、苏永红、蒋波四位同郑涛、郭豪、苏永红、蒋波四位同学的学号、姓名、籍贯、专业班级和学院编号。学的学号、姓名、籍贯、专业班级和学院编号。SELECT 学号,姓名,籍贯,专业班级,学院编号 FROM 学生 WHERE 姓名 IN(郑涛,郭豪,苏永红,蒋波);条件表示这样的意思:WHERE 姓名=郑涛 OR 姓名=郭豪 OR 姓名=苏永红 OR 姓名=蒋波例例4-14 4-14 查找查找还未设置密码的教师的所有信息。还未设置密码的教师的所有信息。SELECT *FROM 教师 WHERE 密码 IS NULL空空值的判断不能使用等
20、于比的判断不能使用等于比较运算符运算符:密密码=NULL4.3.3 4.3.3 生成表查询生成表查询语法:语法:INTO new_table INTO new_table 参数:参数:lnew_tablenew_table:以:以SELECTSELECT语句执行后的结果集为内语句执行后的结果集为内容,创建容,创建新的数据表或临时表。新的数据表或临时表。注意:注意:当当选择列表选择列表select_listselect_list中包括计算列时,新表中中包括计算列时,新表中的相应列不再是计算列,其类型由其值的格式来确的相应列不再是计算列,其类型由其值的格式来确定。定。例例4-15 4-15 将将工
21、程力学工程力学17011701班所有学生的学号、姓班所有学生的学号、姓名、出生日期等信息永久保存到当前数据库的新数名、出生日期等信息永久保存到当前数据库的新数据表据表 工程力学工程力学17011701中中。注意:生成表查询并不显示查询结果。但可用如下注意:生成表查询并不显示查询结果。但可用如下SELECTSELECT语句显示新表语句显示新表SupperFilmSupperFilm的内容:的内容:SELECT SELECT*FROM FROM SupperFilm;SupperFilm;SELECT 学号,姓名,出生日期 INTO 工程力学1701 FROM 学生 WHERE 专业班级=工程力学
22、1701;4.3.44.3.4 聚合查询聚合查询什么什么是聚合查询是聚合查询?所谓聚合查询就是按照分组列(在所谓聚合查询就是按照分组列(在GROUPGROUP子句中指子句中指定)值的个数定)值的个数n n,将数据源中指定的行(满足,将数据源中指定的行(满足WHEREWHERE条条件的行)分成件的行)分成n n个组(缺省个组(缺省GROUPGROUP的情况下,分成一个的情况下,分成一个组),并且可对每一个组做进一步的组筛选(由组),并且可对每一个组做进一步的组筛选(由HAVINGHAVING子句实现),再针对每一组返回一个统计性的子句实现),再针对每一组返回一个统计性的摘要行(该摘要行中的统计数
23、据由摘要行(该摘要行中的统计数据由SELECTSELECT子句中的聚子句中的聚合函数提供)合函数提供)。聚合查询有下列三种实现方式:聚合查询有下列三种实现方式:1.1.仅由聚合函数实现聚合查询仅由聚合函数实现聚合查询2.2.由聚合函数和由聚合函数和GROUPGROUP子句共同实现子句共同实现3.3.由聚合函数、由聚合函数、GROUPGROUP子句和子句和HAVINGHAVING子句共同子句共同实现实现1 1.仅仅由聚合函数实现聚合查询由聚合函数实现聚合查询计数函数:计数函数:COUNT COUNT(*(*)COUNT COUNT(ALL|DISTINCT expression (ALL|DIS
24、TINCT 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 子句的
25、组筛选器中。例例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:分组列(或者称分组依:分组列(或者称分组依据),可以是单独的表列或视图列,也可以是关据),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 关系数据查询语言 关系 数据 查询 语言
限制150内