数据库查询.ppt

上传人:hwp****526 文档编号:84396296 上传时间:2023-04-05 格式:PPT 页数:45 大小:333.50KB
返回 下载 相关 举报
数据库查询.ppt_第1页
第1页 / 共45页
数据库查询.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《数据库查询.ppt》由会员分享,可在线阅读,更多相关《数据库查询.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库查询是数据库中一个最重要也是最基本的功能,数据库查询是数据库中一个最重要也是最基本的功能,数据库查询是数据库中一个最重要也是最基本的功能,数据库查询是数据库中一个最重要也是最基本的功能,它是从数据库中检索符合条件的数据记录的选择过程。它是从数据库中检索符合条件的数据记录的选择过程。它是从数据库中检索符合条件的数据记录的选择过程。它是从数据库中检索符合条件的数据记录的选择过程。SQL Server 2005SQL Server 2005的数据库查询使用的数据库查询使用的数据库查询使用的数据库查询使用T-SQLT-SQL语言,其语言,其语言,其语言,其基本的查询语句是基本的查询语句是基本的查

2、询语句是基本的查询语句是SELECTSELECT语句。语句。语句。语句。本章主要介绍本章主要介绍本章主要介绍本章主要介绍SQL Server 2005SQL Server 2005数据库查询的方法及数据库查询的方法及数据库查询的方法及数据库查询的方法及使用。使用。使用。使用。第8章 数据库查询8.1 8.1 数据库查询数据库查询数据库查询数据库查询8.2 8.2 数据汇总数据汇总数据汇总数据汇总8.3 8.3 排序排序排序排序8.4 8.4 分组分组分组分组8.5 8.5 子查询子查询子查询子查询8.6 8.6 集合操作集合操作集合操作集合操作8.7 8.7 存储查询结果存储查询结果存储查询结

3、果存储查询结果8.8 8.8 函数查询函数查询函数查询函数查询第8章 数据库查询T-SQLT-SQL语言提供了语言提供了语言提供了语言提供了SELECTSELECT语句进行数据库的查询,该语句具有灵活的使用方式语句进行数据库的查询,该语句具有灵活的使用方式语句进行数据库的查询,该语句具有灵活的使用方式语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。其语法格式如下:和丰富的功能。其语法格式如下:和丰富的功能。其语法格式如下:和丰富的功能。其语法格式如下:SELECT ALL|DISTINCT TOP SELECT ALL|DISTINCT TOP AS AS,AS AS FORMFO

4、RM ASLocal_AliasASLocal_Alias INNER|LEFT OUTER|RIGHT OUTER|FULL OUTER INNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOIN JOIN ASLocal_AliasONASLocal_AliasON INTO|TO FILE INTO|TO FILE ADDITIVE ADDITIVE|TO PRINTER PROMPT|TO SCREEN|TO PRINTER PROMPT|TO SCREENPREFERENCE PREFERENCE PreferenceNameNOCONSOLEPLAIN

5、NOWAITPreferenceNameNOCONSOLEPLAINNOWAIT WHERE AND AND|OR operator WHERE AND AND|OR GROUP BY ,GROUP BY ,HAVING HAVING UNION ALL SELECT UNION ALL ORDER BY ORDER BY ASC|DESC,ASC|DESC,8.1 8.1 数据库查询数据库查询数据库查询数据库查询8.1.1 8.1.1 选择列选择列选择列选择列选择列指的是通过限定返回结果的列组成结果表。选择列指的是通过限定返回结果的列组成结果表。选择列指的是通过限定返回结果的列组成结果表。选

6、择列指的是通过限定返回结果的列组成结果表。1.1.选择指定列选择指定列选择指定列选择指定列选择指定列指的是选择一个表中的部分列,各列名之间用逗选择指定列指的是选择一个表中的部分列,各列名之间用逗选择指定列指的是选择一个表中的部分列,各列名之间用逗选择指定列指的是选择一个表中的部分列,各列名之间用逗号隔开。号隔开。号隔开。号隔开。【例例例例8-18-1】查询学生表中学生的学号、姓名和院系名称。查询学生表中学生的学号、姓名和院系名称。查询学生表中学生的学号、姓名和院系名称。查询学生表中学生的学号、姓名和院系名称。SELECT SELECT 学号学号学号学号,姓名姓名姓名姓名,院系名称院系名称院系名

7、称院系名称FROM FROM 学生表学生表学生表学生表GOGO【例例8-2】查询教师表中教师的姓名和职称。查询教师表中教师的姓名和职称。SELECT 姓名姓名,职称职称FROM 教师表教师表GO8.1 8.1 数据库查询数据库查询数据库查询数据库查询2.2.选择所有列选择所有列选择所有列选择所有列选择所有列指的是选择一个表中的全部列。可以将所有列名选择所有列指的是选择一个表中的全部列。可以将所有列名选择所有列指的是选择一个表中的全部列。可以将所有列名选择所有列指的是选择一个表中的全部列。可以将所有列名都列出,各列之间用逗号隔开,也可以使用符号都列出,各列之间用逗号隔开,也可以使用符号都列出,各

8、列之间用逗号隔开,也可以使用符号都列出,各列之间用逗号隔开,也可以使用符号“*”“*”。【例例例例8-48-4】查询所有课程信息。查询所有课程信息。查询所有课程信息。查询所有课程信息。SELECT SELECT 课程号课程号课程号课程号,课程名课程名课程名课程名,学分学分学分学分,备注备注备注备注FROM FROM 课程表课程表课程表课程表GOGOSELECT*SELECT*FROM FROM 课程表课程表课程表课程表GOGO 8.1 8.1 数据库查询数据库查询数据库查询数据库查询3.3.定义列别名定义列别名定义列别名定义列别名查询结果默认输出的列名都是建表时的列名。但有时用户希查询结果默认

9、输出的列名都是建表时的列名。但有时用户希查询结果默认输出的列名都是建表时的列名。但有时用户希查询结果默认输出的列名都是建表时的列名。但有时用户希望查询结果输出时,显示自己指定的列名显示,这时就可望查询结果输出时,显示自己指定的列名显示,这时就可望查询结果输出时,显示自己指定的列名显示,这时就可望查询结果输出时,显示自己指定的列名显示,这时就可以定义表列的别名。以定义表列的别名。以定义表列的别名。以定义表列的别名。SELECTSELECT语句使用语句使用语句使用语句使用ASAS关键字来定义别关键字来定义别关键字来定义别关键字来定义别名。名。名。名。【例例例例8-58-5】查询所有学生的姓名、性别

10、,各列的别名是查询所有学生的姓名、性别,各列的别名是查询所有学生的姓名、性别,各列的别名是查询所有学生的姓名、性别,各列的别名是namename、sexsex。图。图。图。图8-3 8-3 定义表列的别名定义表列的别名定义表列的别名定义表列的别名SELECT SELECT 姓名姓名姓名姓名AS name,AS name,性别性别性别性别AS sexAS sexFROM FROM 学生表学生表学生表学生表GOGO 8.1 8.1 数据库查询数据库查询数据库查询数据库查询4.4.替换结果中数据替换结果中数据替换结果中数据替换结果中数据在对表进行查询时,有时希望对所查询的某些列使用表达式在对表进行查

11、询时,有时希望对所查询的某些列使用表达式在对表进行查询时,有时希望对所查询的某些列使用表达式在对表进行查询时,有时希望对所查询的某些列使用表达式进行计算。进行计算。进行计算。进行计算。SELECTSELECT语句支持表达式的使用。语句支持表达式的使用。语句支持表达式的使用。语句支持表达式的使用。【例例例例8-88-8】查询所有学生的分数信息,如果分数大于等于查询所有学生的分数信息,如果分数大于等于查询所有学生的分数信息,如果分数大于等于查询所有学生的分数信息,如果分数大于等于8080,则为,则为,则为,则为“优秀优秀优秀优秀”;大于等于;大于等于;大于等于;大于等于6060,则为,则为,则为,

12、则为“及格及格及格及格”;小于;小于;小于;小于6060,则为,则为,则为,则为“不及格不及格不及格不及格”。使用。使用。使用。使用CASECASE函数给每个学生的分数设函数给每个学生的分数设函数给每个学生的分数设函数给每个学生的分数设定等级。定等级。定等级。定等级。SELECT SELECT 学号学号学号学号,课程号课程号课程号课程号,分数分数分数分数,等级等级等级等级=CASECASE WHEN WHEN 分数分数分数分数=80 THEN=80 THEN 优秀优秀优秀优秀 WHEN WHEN 分数分数分数分数=60 THEN=60 THEN 及格及格及格及格 ELSE ELSE 不及格不及

13、格不及格不及格 ENDENDFROM FROM 成绩表成绩表成绩表成绩表GOGO8.1 8.1 数据库查询数据库查询数据库查询数据库查询8.1.2 8.1.2 选择行选择行选择行选择行选择行指的是通过限定返回结果的行组成结果表。选择行可选择行指的是通过限定返回结果的行组成结果表。选择行可选择行指的是通过限定返回结果的行组成结果表。选择行可选择行指的是通过限定返回结果的行组成结果表。选择行可以和选择列一起使用。以和选择列一起使用。以和选择列一起使用。以和选择列一起使用。1.1.消除结果中重复行消除结果中重复行消除结果中重复行消除结果中重复行在对表进行查询时,有时查询结果有许多重复行。在对表进行查

14、询时,有时查询结果有许多重复行。在对表进行查询时,有时查询结果有许多重复行。在对表进行查询时,有时查询结果有许多重复行。SELECTSELECT语句使用语句使用语句使用语句使用DISTINCTDISTINCT关键字消除结果中的重复行。其语法关键字消除结果中的重复行。其语法关键字消除结果中的重复行。其语法关键字消除结果中的重复行。其语法格式如下:格式如下:格式如下:格式如下:DISTINCT DISTINCT column_namecolumn_name,column_namecolumn_name说明:说明:说明:说明:DISTINCTDISTINCT关键字对后面的所有列消除重复行。一个关键字

15、对后面的所有列消除重复行。一个关键字对后面的所有列消除重复行。一个关键字对后面的所有列消除重复行。一个SELECTSELECT语句中语句中语句中语句中DISTINCTDISTINCT只能出现一次,而且必须放在只能出现一次,而且必须放在只能出现一次,而且必须放在只能出现一次,而且必须放在所有列名之前。所有列名之前。所有列名之前。所有列名之前。【例例例例8-108-10】查询所有学生所在的院系名称。查询所有学生所在的院系名称。查询所有学生所在的院系名称。查询所有学生所在的院系名称。SELECT DISTINCT SELECT DISTINCT 院系名称院系名称院系名称院系名称FROM FROM 学

16、生表学生表学生表学生表GOGO 8.1 8.1 数据库查询数据库查询数据库查询数据库查询2.2.限制结果返回行数限制结果返回行数限制结果返回行数限制结果返回行数如果如果如果如果SELECTSELECT语句返回结果有很多行,可以使用语句返回结果有很多行,可以使用语句返回结果有很多行,可以使用语句返回结果有很多行,可以使用TOPTOP关键字关键字关键字关键字限定返回行数。在限定返回行数。在限定返回行数。在限定返回行数。在SQL Server 2000SQL Server 2000中,关键字中,关键字中,关键字中,关键字TOPTOP后只后只后只后只能常数数值。在能常数数值。在能常数数值。在能常数数值

17、。在SQL Server 2005SQL Server 2005中进行了改进,中进行了改进,中进行了改进,中进行了改进,TOPTOP后后后后还可以使用数值表达式。其语法格式如下:还可以使用数值表达式。其语法格式如下:还可以使用数值表达式。其语法格式如下:还可以使用数值表达式。其语法格式如下:TOP n PERCENTTOP n PERCENT说明:其中说明:其中说明:其中说明:其中n n表示返回结果的前表示返回结果的前表示返回结果的前表示返回结果的前n n行,行,行,行,n PERCENTn PERCENT表示返回表示返回表示返回表示返回结果的前结果的前结果的前结果的前n%n%行。行。行。行。

18、【例例例例8-128-12】查询教师表中前查询教师表中前查询教师表中前查询教师表中前3 3名教师的信息。名教师的信息。名教师的信息。名教师的信息。SELECT TOP 3*SELECT TOP 3*FROM FROM 教师表教师表教师表教师表GOGO 8.1 8.1 数据库查询数据库查询数据库查询数据库查询3.3.限制结果返回行的条件限制结果返回行的条件限制结果返回行的条件限制结果返回行的条件在限定返回结果的行操作时,最重要的就是通过条件限制,在限定返回结果的行操作时,最重要的就是通过条件限制,在限定返回结果的行操作时,最重要的就是通过条件限制,在限定返回结果的行操作时,最重要的就是通过条件限

19、制,SELECTSELECT语句中语句中语句中语句中WHEREWHERE子句是最常用、最重要的条件子句。子句是最常用、最重要的条件子句。子句是最常用、最重要的条件子句。子句是最常用、最重要的条件子句。在在在在WHEREWHERE子句指出查询的条件,系统找出符合条件的结子句指出查询的条件,系统找出符合条件的结子句指出查询的条件,系统找出符合条件的结子句指出查询的条件,系统找出符合条件的结果。其语法格式如下:果。其语法格式如下:果。其语法格式如下:果。其语法格式如下:WHERE AND AND WHERE AND AND|OR|OR(1)(1)表达式比较表达式比较表达式比较表达式比较在在在在WHE

20、REWHERE子句对表达式比较,可以使用比较运算符和逻辑子句对表达式比较,可以使用比较运算符和逻辑子句对表达式比较,可以使用比较运算符和逻辑子句对表达式比较,可以使用比较运算符和逻辑运算符。运算符。运算符。运算符。【例例例例8-148-14】查询查询查询查询5 5号课程分数小于号课程分数小于号课程分数小于号课程分数小于6060的学生的学号、课程号的学生的学号、课程号的学生的学号、课程号的学生的学号、课程号和分数。图和分数。图和分数。图和分数。图8-8 8-8 输出比较结果输出比较结果输出比较结果输出比较结果SELECT SELECT 学号学号学号学号,课程号课程号课程号课程号,分数分数分数分数

21、FROM FROM 成绩表成绩表成绩表成绩表WHERE WHERE 分数分数分数分数60 AND=、=和和和和ANDAND限制的范限制的范限制的范限制的范围),表示如果表达式的取值在限定范围中即返回围),表示如果表达式的取值在限定范围中即返回围),表示如果表达式的取值在限定范围中即返回围),表示如果表达式的取值在限定范围中即返回TRUETRUE。【例例例例8-198-19】查询在查询在查询在查询在2020世纪世纪世纪世纪7070年代出生的教师信息。年代出生的教师信息。年代出生的教师信息。年代出生的教师信息。SELECT*SELECT*FROM FROM 教师表教师表教师表教师表WHERE YE

22、AR(WHERE YEAR(出生日期出生日期出生日期出生日期)BETWEEN 1975 AND 1979)BETWEEN 1975 AND 1979GOGO8.1 8.1 数据库查询数据库查询数据库查询数据库查询(4)(4)模式匹配模式匹配在查询数据时,有时并不知道查询范围,只知道查询的模式。在查询数据时,有时并不知道查询范围,只知道查询的模式。在查询数据时,有时并不知道查询范围,只知道查询的模式。在查询数据时,有时并不知道查询范围,只知道查询的模式。T-SQLT-SQL提供了提供了提供了提供了LIKELIKE关键字来模式匹配查询。关键字来模式匹配查询。关键字来模式匹配查询。关键字来模式匹配查

23、询。LIKELIKE关键字只能用于匹配字符串数据。关键字只能用于匹配字符串数据。关键字只能用于匹配字符串数据。关键字只能用于匹配字符串数据。8.1 8.1 数据库查询数据库查询数据库查询数据库查询【例例例例8-218-21】查询姓查询姓查询姓查询姓“王王王王”的男生的信息。的男生的信息。的男生的信息。的男生的信息。SELECT*SELECT*FROM FROM 学生表学生表学生表学生表WHERE WHERE 姓名姓名姓名姓名LIKE LIKE 王王王王%AND%AND 性别性别性别性别=男男男男 GOGO【例例例例8-238-23】查询查询工作人员表中,不姓查询查询工作人员表中,不姓查询查询工

24、作人员表中,不姓查询查询工作人员表中,不姓“张张张张”的职工编号的职工编号的职工编号的职工编号和姓名。和姓名。和姓名。和姓名。SELECT SELECT 人员编号人员编号人员编号人员编号,姓名姓名姓名姓名FROM FROM 工作人员表工作人员表工作人员表工作人员表WHERE WHERE 姓名姓名姓名姓名LIKE LIKE 张张张张%GOGO8.1 8.1 数据库查询数据库查询数据库查询数据库查询(5)(5)空值处理空值处理空值处理空值处理当需要判断一个表达式或表数据是否为空,当需要判断一个表达式或表数据是否为空,当需要判断一个表达式或表数据是否为空,当需要判断一个表达式或表数据是否为空,T-S

25、QLT-SQL提供了提供了提供了提供了IS IS NULLNULL或或或或NULLNULL关键字来判断。关键字来判断。关键字来判断。关键字来判断。【例例例例8-248-24】查询成绩表中分数为空的学生的学号、课程号。查询成绩表中分数为空的学生的学号、课程号。查询成绩表中分数为空的学生的学号、课程号。查询成绩表中分数为空的学生的学号、课程号。SELECT SELECT 学号学号学号学号,课程号课程号课程号课程号FROM FROM 成绩表成绩表成绩表成绩表WHERE WHERE 分数分数分数分数IS NULLIS NULLGOGO 8.1 8.1 数据库查询数据库查询数据库查询数据库查询8.1.3

26、 8.1.3 连接连接连接连接在实际应用中,数据查询往往会涉及到多个表,这就需要将在实际应用中,数据查询往往会涉及到多个表,这就需要将多个表连接起来进行查询。这种连接分为交叉连接、内连接、多个表连接起来进行查询。这种连接分为交叉连接、内连接、外连接和自连接外连接和自连接4种。交叉连接相当于作笛卡儿乘积,内连接种。交叉连接相当于作笛卡儿乘积,内连接又分为相等连接、自然连接。外连接分为左外连接、右外连又分为相等连接、自然连接。外连接分为左外连接、右外连接和全外连接。接和全外连接。8.1 8.1 数据库查询数据库查询数据库查询数据库查询1 交叉连接语法语法:SELECT SELECT 列名列表列名列

27、表 FROM FROM 表名表名1 CROSS JOIN 1 CROSS JOIN 表名表名2 2或者或者SELECT SELECT 列名列表列名列表 FROM FROM 表名表名,表名表名2 2 交叉连接的结果是两个表的笛卡儿积,在实际交叉连接的结果是两个表的笛卡儿积,在实际应用中一般是没有意义的,但在数据库的数学模式应用中一般是没有意义的,但在数据库的数学模式上有重要的作用。连接后该结果集的行数等于两个上有重要的作用。连接后该结果集的行数等于两个表的行数积,列属等于两个表的列数和。它是其他表的行数积,列属等于两个表的列数和。它是其他连接运算的基础。连接运算的基础。例如:对学生表和课程表进行

28、交叉连接方法1:Select 学生表.*,课程表.*from 学生表Join 课程表 方法2:Select学生表.*,课程表.*from 学生表,课程表因为引用了多个表,为了简化select子句。因此,在from子句中给每个表起一个别名,select子句中可以通过别名引用表。Select a.*,b.*from 学生表as a,课程表 as b2 内连接内连接就是只包含满足连接条件的数据行,是将交叉连接内连接就是只包含满足连接条件的数据行,是将交叉连接结果集按照连接条件进行过滤的结果,也称自然连接。连接结果集按照连接条件进行过滤的结果,也称自然连接。连接条件通常采用条件通常采用“主键主键=外键

29、外键”的形式。内连接有以下两种语的形式。内连接有以下两种语法格式。法格式。SELECT SELECT 列列名名列列表表 FROM FROM 表表名名1 1 INNER INNER JOIN JOIN 表表名名2 2 ON ON 表表名名1.1.列名列名=表名表名2.2.列名列名 或或SELECT 列名列表列名列表 FROM 表名表名1,表名表名2 WHERE 表名表名1.列列名名=表名表名2.列名列名例如:查询每个学生选修课程的信息,查询结果包括学生的例如:查询每个学生选修课程的信息,查询结果包括学生的例如:查询每个学生选修课程的信息,查询结果包括学生的例如:查询每个学生选修课程的信息,查询结

30、果包括学生的姓名、所选课程的课程名。姓名、所选课程的课程名。姓名、所选课程的课程名。姓名、所选课程的课程名。分析:姓名在学生表中,课程名在课程表中。所以本查询用分析:姓名在学生表中,课程名在课程表中。所以本查询用分析:姓名在学生表中,课程名在课程表中。所以本查询用分析:姓名在学生表中,课程名在课程表中。所以本查询用到两个表,到两个表,到两个表,到两个表,要用内连接将它们连接起来,但因为这两表要用内连接将它们连接起来,但因为这两表不存在共同的列,不能进行自然连接。因此要加入中间不存在共同的列,不能进行自然连接。因此要加入中间表,中间表中应含有能与其它两个表进行自然连接的公表,中间表中应含有能与其

31、它两个表进行自然连接的公共列,这个表就是成绩表。共列,这个表就是成绩表。方法方法1 1:select a.select a.姓名姓名,c.,c.课程名课程名 from from 学生表学生表 as aas a inner join inner join 成绩表成绩表 as b on a.as b on a.学号学号=b.=b.学号学号 inner join inner join 课程表课程表 as c on b.as c on b.课程号课程号=c.=c.课程号课程号方法方法2 2:select a.select a.姓名姓名,c.,c.课程名课程名 from from 学生表学生表 as a

32、as a,成绩表成绩表 as b as b ,课程表,课程表 as c as c Where a.Where a.学号学号=b.=b.学号学号 and b.and b.课程号课程号=c.=c.课程号课程号例例2 2:查询外语学院的学生选修课程但分数不及格的信息。查询外语学院的学生选修课程但分数不及格的信息。查询外语学院的学生选修课程但分数不及格的信息。查询外语学院的学生选修课程但分数不及格的信息。查询结果包括姓名和课程名查询结果包括姓名和课程名查询结果包括姓名和课程名查询结果包括姓名和课程名分析:该题是在上述多表连接的基础上增加两个条件,一是分析:该题是在上述多表连接的基础上增加两个条件,一是

33、分析:该题是在上述多表连接的基础上增加两个条件,一是分析:该题是在上述多表连接的基础上增加两个条件,一是学生所在院系为外语系:学生表学生所在院系为外语系:学生表学生所在院系为外语系:学生表学生所在院系为外语系:学生表.院系名称院系名称院系名称院系名称=外语系外语系外语系外语系;二;二;二;二是分数不及格:成绩表是分数不及格:成绩表是分数不及格:成绩表是分数不及格:成绩表.分数分数分数分数6060方法方法方法方法1 1:select a.select a.姓名姓名,c.,c.课程名课程名 from from 学生表学生表 as aas a inner join inner join 成绩表成绩表

34、 as b on a.as b on a.学号学号=b.=b.学号学号 inner join inner join 课程表课程表 as c on b.as c on b.课程号课程号=c.=c.课程号课程号Where a.Where a.院系名称院系名称=外语系外语系 and c.and c.分数分数6060方法方法2 2:select a.select a.姓名姓名,c.,c.课程名课程名 from from 学生表学生表 as aas a,成绩表成绩表 as b as b ,课程表,课程表 as c as c Where a.Where a.学号学号=b.=b.学号学号 and b.and

35、 b.课程号课程号=c.=c.课程号课程号 and a.and a.院系名称院系名称=外语系外语系 and c.and c.分数分数6060外外连连接接根根据据连连接接时时保保留留表表中中记记录录的的侧侧重重不不同同分分为为“左左外外连连接接”、“右外连接右外连接”和和“全外连接全外连接”。左外连接左外连接将将左左表表中中的的所所有有记记录录分分别别与与右右表表中中的的每每条条记记录录进进行行组组合合,结结果果集集中中除除返返回回内内部部连连接接的的记记录录以以外外,还还在在查查询询结结果果中中返返回回左左表表中中不不符符合合条条件件的的记记录录,并并在在右右表的相应列中填上表的相应列中填上N

36、ULLNULL。左外连接的语法格式如下。左外连接的语法格式如下。SELECT SELECT 列列名名列列表表 FROM FROM 表表名名1 1 AS AS A A LEFT LEFT OUTER OUTER JOIN JOIN 表名表名2 AS B ON A.2 AS B ON A.列名列名=B.=B.列名列名 3 外连接例子:查询学生选修的课程的情况,输出学号和课例子:查询学生选修的课程的情况,输出学号和课例子:查询学生选修的课程的情况,输出学号和课例子:查询学生选修的课程的情况,输出学号和课程名,如果有课程没有学生选修,也输出。程名,如果有课程没有学生选修,也输出。程名,如果有课程没有学

37、生选修,也输出。程名,如果有课程没有学生选修,也输出。分析:使用内连接只显示符合连接条件的记录。如分析:使用内连接只显示符合连接条件的记录。如分析:使用内连接只显示符合连接条件的记录。如分析:使用内连接只显示符合连接条件的记录。如果某门课程没有学生选修,那么在成绩表中就没有果某门课程没有学生选修,那么在成绩表中就没有果某门课程没有学生选修,那么在成绩表中就没有果某门课程没有学生选修,那么在成绩表中就没有该课程的课程号,因此该课程的课程名无法显示。该课程的课程号,因此该课程的课程名无法显示。该课程的课程号,因此该课程的课程名无法显示。该课程的课程号,因此该课程的课程名无法显示。但是通过外连接,可

38、以将其显示。但是通过外连接,可以将其显示。但是通过外连接,可以将其显示。但是通过外连接,可以将其显示。结果:结果:结果:结果:SELECT SELECT 学号学号学号学号,课程名课程名课程名课程名FROM FROM 课程表课程表课程表课程表 LEFT JOIN LEFT JOIN 成绩表成绩表成绩表成绩表ON ON 课程表课程表课程表课程表.课程号课程号课程号课程号=成绩表成绩表成绩表成绩表.课程号课程号课程号课程号上述结果中如果将两个表的位置换一下,就变成了右外连接。T-SQLT-SQL提供了聚集函数对数据进行计算。提供了聚集函数对数据进行计算。提供了聚集函数对数据进行计算。提供了聚集函数对

39、数据进行计算。8.2 8.2 数据汇总数据汇总数据汇总数据汇总【例例例例8-338-33】统计选修了统计选修了统计选修了统计选修了5 5号课程的学生的总分、平均分、最号课程的学生的总分、平均分、最号课程的学生的总分、平均分、最号课程的学生的总分、平均分、最高分和最低分。高分和最低分。高分和最低分。高分和最低分。SELECT SUM(SELECT SUM(分数分数分数分数),AVG(),AVG(分数分数分数分数),MAX(),MAX(分数分数分数分数),MIN(),MIN(分数分数分数分数)FROM FROM 成绩表成绩表成绩表成绩表WHERE WHERE 课程号课程号课程号课程号=5=5【例例

40、8-34】统计选修了统计选修了1号课程的学生的人数。号课程的学生的人数。SELECT count(*),count(分数分数)FROM 成绩表成绩表WHERE 课程号课程号=1【例例8-35】统计红色零件的总数。统计红色零件的总数。SELECT 颜色颜色,COUNT(颜色颜色)FROM 库存零件表库存零件表WHERE 颜色颜色=红红8.2 8.2 数据汇总数据汇总数据汇总数据汇总查询结果输出,默认是按照表记录物理顺序输出。但在实际查询结果输出,默认是按照表记录物理顺序输出。但在实际查询结果输出,默认是按照表记录物理顺序输出。但在实际查询结果输出,默认是按照表记录物理顺序输出。但在实际应用中经常

41、要对查询结果排序输出。应用中经常要对查询结果排序输出。应用中经常要对查询结果排序输出。应用中经常要对查询结果排序输出。T-SQLT-SQL提供了提供了提供了提供了ORDER BYORDER BY子句对查询结果排序。其语法格式子句对查询结果排序。其语法格式子句对查询结果排序。其语法格式子句对查询结果排序。其语法格式如下:如下:如下:如下:SELECT SELECT select_listselect_listFROM FROM table_nametable_nameWHERE conditionWHERE conditionORDER BY ORDER BY column_namecolumn

42、_name|alias|position ASC|alias|position ASC|DESC DESC 【例例8-37】查询选修了查询选修了5号课程的学生,并按分数从高到低号课程的学生,并按分数从高到低排序输出学生的学号和分数。排序输出学生的学号和分数。SELECT 学号学号,分数分数FROM 成绩表成绩表WHERE 课程号课程号=5ORDER BY 分数分数DESC8.3 8.3 排序排序排序排序使用聚集函数可以统计数据,但有时需要统计不同类别的数使用聚集函数可以统计数据,但有时需要统计不同类别的数使用聚集函数可以统计数据,但有时需要统计不同类别的数使用聚集函数可以统计数据,但有时需要统

43、计不同类别的数据。据。据。据。T-SQLT-SQL提供了提供了提供了提供了GROUP BYGROUP BY子句对查询结果分组。其语子句对查询结果分组。其语子句对查询结果分组。其语子句对查询结果分组。其语法格式如下:法格式如下:法格式如下:法格式如下:SELECT SELECT select_listselect_listFROM FROM table_nametable_nameWHERE conditionWHERE conditionGROUP BY GROUP BY column_namecolumn_name HAVING condition|WITH CUBE|ROLLUP HAVI

44、NG condition|WITH CUBE|ROLLUP 8.4 8.4 分组分组分组分组【例例例例8-398-39】统计每门课程的总分和平均分,并按平均分从高统计每门课程的总分和平均分,并按平均分从高统计每门课程的总分和平均分,并按平均分从高统计每门课程的总分和平均分,并按平均分从高到低排序输出。到低排序输出。到低排序输出。到低排序输出。SELECT SELECT 课程号课程号课程号课程号,总分总分总分总分=SUM(=SUM(分数分数分数分数),),平均分平均分平均分平均分=AVG(=AVG(分数分数分数分数)FROM FROM 成绩表成绩表成绩表成绩表GROUP BY GROUP BY

45、课程号课程号课程号课程号ORDER BY AVG(ORDER BY AVG(分数分数分数分数)DESC)DESCGOGO【例例8-40】统计每个学院学生的男女生人数。统计每个学院学生的男女生人数。SELECT 院系名称院系名称,性别性别,COUNT(*)FROM 学生表学生表GROUP BY 院系名称院系名称,性别性别GO8.4 8.4 分组分组分组分组子查询就是嵌套在另一个查询(子查询就是嵌套在另一个查询(子查询就是嵌套在另一个查询(子查询就是嵌套在另一个查询(SELECTSELECT)语句中的查询)语句中的查询)语句中的查询)语句中的查询(SELECTSELECT)语句,因此子查询也称为嵌

46、套查询。外部的)语句,因此子查询也称为嵌套查询。外部的)语句,因此子查询也称为嵌套查询。外部的)语句,因此子查询也称为嵌套查询。外部的SELECTSELECT语句称为外围查询(父查询),内部的语句称为外围查询(父查询),内部的语句称为外围查询(父查询),内部的语句称为外围查询(父查询),内部的SELECTSELECT语句语句语句语句称为子查询。子查询的结果将作为外围查询的参数,这种关称为子查询。子查询的结果将作为外围查询的参数,这种关称为子查询。子查询的结果将作为外围查询的参数,这种关称为子查询。子查询的结果将作为外围查询的参数,这种关系就好象是函数调用嵌套,将嵌套函数的返回值作为调用函系就好

47、象是函数调用嵌套,将嵌套函数的返回值作为调用函系就好象是函数调用嵌套,将嵌套函数的返回值作为调用函系就好象是函数调用嵌套,将嵌套函数的返回值作为调用函数的参数。数的参数。数的参数。数的参数。8.5 8.5 子查询子查询子查询子查询使用子查询时要注意以下几点:使用子查询时要注意以下几点:使用子查询时要注意以下几点:使用子查询时要注意以下几点:1)1)子查询需要用括号子查询需要用括号子查询需要用括号子查询需要用括号()()括起来。括起来。括起来。括起来。2)2)子查询可以嵌套。子查询可以嵌套。子查询可以嵌套。子查询可以嵌套。3)3)子查询的子查询的子查询的子查询的SELECTSELECT语句中不能

48、使用语句中不能使用语句中不能使用语句中不能使用imageimage、texttext和和和和ntextntext数据类型。数据类型。数据类型。数据类型。4)4)子查询返回的结果的数据类型必须匹配外围查询子查询返回的结果的数据类型必须匹配外围查询子查询返回的结果的数据类型必须匹配外围查询子查询返回的结果的数据类型必须匹配外围查询WHEREWHERE语句的数据类型。语句的数据类型。语句的数据类型。语句的数据类型。5)5)子查询不能使用子查询不能使用子查询不能使用子查询不能使用ORDER BYORDER BY子句。子句。子句。子句。子查询具有两种不同处理方式:无关子查询和相关子查询。子查询具有两种不

49、同处理方式:无关子查询和相关子查询。子查询具有两种不同处理方式:无关子查询和相关子查询。子查询具有两种不同处理方式:无关子查询和相关子查询。8.5 8.5 子查询子查询子查询子查询8.5.1 8.5.1 无关子查询无关子查询无关子查询无关子查询无关子查询指的是在外围查询之前执行,然后返回数据供外无关子查询指的是在外围查询之前执行,然后返回数据供外无关子查询指的是在外围查询之前执行,然后返回数据供外无关子查询指的是在外围查询之前执行,然后返回数据供外围查询使用,它和外围查询的联系仅此而已。在编写嵌套围查询使用,它和外围查询的联系仅此而已。在编写嵌套围查询使用,它和外围查询的联系仅此而已。在编写嵌

50、套围查询使用,它和外围查询的联系仅此而已。在编写嵌套子查询的子查询的子查询的子查询的SQLSQL语句时,如果被嵌套的查询中不包含对于外语句时,如果被嵌套的查询中不包含对于外语句时,如果被嵌套的查询中不包含对于外语句时,如果被嵌套的查询中不包含对于外围查询的任何引用,就可以使用无关子查询。最常用的无围查询的任何引用,就可以使用无关子查询。最常用的无围查询的任何引用,就可以使用无关子查询。最常用的无围查询的任何引用,就可以使用无关子查询。最常用的无关子查询方式是关子查询方式是关子查询方式是关子查询方式是ININ(或(或(或(或NOT INNOT IN)子句。其语法格式如下:)子句。其语法格式如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

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