版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6查询数据DATABASETECHNOLOGY主讲人:XXXX.XXXXX时间:目录项目描述与学习目标01任务6.1查询学生基本信息【基本查询】02任务6.2查询学生成绩信息【连接查询】03CONTENTS04任务6.3分组汇总学生数据【分组汇总】05任务6.4使用子查询完成复杂查询06任务6.5使用可视化界面实现简单查询项目概述01Part-DATABASETECHNOLOGY数据库技术的首要职责是有序组织海量数据,为用户开辟快速获取、高效处理数据的便捷通道。“查询”是指如何从数据库中获取特定条件的数据,它通过SELECT语句来实现。SELECT语句的作用是让数据库服务器根据客户端的要求搜寻用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。在数据库系统的全生命周期里,数据查询任务堪称最为高频的操作。在“学生成绩管理系统”的核心业务中,学生信息、课程详情、成绩记录等数据盘根错节,本任务需要灵活运用SELECT语句,熟练掌握数据查询技巧,快速定位和查询目标数据,帮助用户高效便捷地检索所需数据。项目目标职业素质目标(1)通过规范使用SELECT语句,培养IT行业从业者标准意识和规范意识;(2)通过综合运用连接查询、聚合函数、子查询等技术优化查询语句,逐步培养精益求精的工匠精神。能力目标(1)会灵活使用查询语句从数据库中筛选数据;(2)会使用子查询解决复杂查询问题;(3)会设置返回的结果集格式;知识目标(1)了解查询的常见业务场景;(2)掌握SELECT语句的用法;(3)理解查询的执行过程,了解查询优化常用方法;
(4)了解连接、分组汇总、子查询的基本概念;学习目标任务6.1查询学生基本信息【基本查询】02Part-DATABASETECHNOLOGY“学生成绩管理系统”中核心数据操作主要包括:增、删、改和查,其中最为频繁的操作就是基本查询。作为学生成绩管理系统的管理人员,需要结合特定的条件对数据库中的数据进行一定的筛选和查询。学生成绩管理系统中常见的业务样例如图6-1所示。从图示的业务需求可以看出,对学生的查询操作主要包括:查询学生的基本信息、查询带有特定字段的数据、设置结果集的显示格式、查询特定学生详细信息等等。【任务描述】01T-SQL中提供了数据查询语句SELECT,其基本语法格式为:SELECT[ALL|DISTINCT][TOPn]<目标列的列表|*>[FROM]{<表或视图名>}[,…n][WHERE]<搜索条件>[GROUPBY]{<分组表达式>}[,…n][HAVING]<搜索条件>[ORDERBY]{<字段名[ASC|DESC]>}[,…n]在上面的语法描述中,其包含的语义如下:
(1)用[]括起来的是可选项,SELECT子句是不可省略的。(2)DISTINCT选项用来从结果集中消除重复的数据行。(3)TOPn选项用于限定要返回的结果集行数。(4)目标列的列表用于指定要返回的数据列名称。如果要返回所有列,则可以使用“*”。(5)FROM子句可以限定从哪些表或者视图返回数据。(6)WHERE子句用来引入查询的条件,查询仅返回满足条件的数据。在查询条件中,可以使用比较操作符、字符串、逻辑操作符来限制返回的数据。(7)GROUPBY子句用于对结果集进行分组,在分组的基础上实现数据的汇总。(8)HAVING子句用于在分组的时候,对字段或表达式指定筛选条件。(9)ORDERBY子句对结果集按照某种条件进行排序,返回有序的结果集。【知识储备】查询语句的基本格式一般的查询只需要从表中查询部分行的数据,而不是所有的记录,因此在查询的时候就需要引入查询的条件。在SELECT语句中,可以通过WHERE子句引入查询条件来限定查询只返回表中部分行的数据。常见的查询条件都是返回布尔值的表达式,包括数值比较表达式(=、>、<、>=、<=和<>)、字符串比较表达式(LIKE和NOTLIKE)、逻辑表达式(AND、OR和NOT)、范围判断(BETWEEN…AND…和NOTBETWEEN…AND…)、列表判断(IN和NOTIN)、未知值比较(ISNULL和ISNOTNULL)等。【知识储备】数据筛选(1)字符串的模糊查询在查询条件不具体的情况下,可以使用LIKE表达式作为查询条件。在LIKE引导的条件中需要一个匹配字符串,该匹配字符串中可以使用通配符。常用的通配符包括以下几种:【知识储备】数据筛选(2)多条件组合查询
对于复杂查询,可以使用逻辑运算符AND、OR和NOT连接多个表达式,来表示复杂的查询条件。查询结果将因表达式的分组情况和查询条件的顺序的不同而有所不同。逻辑运算符的含义如下:1)AND运算符:逻辑与,运算符两侧连接的查询条件都为真时返回真,否则返回假。2)OR运算符:逻辑或,运算符两侧连接的任一查询条件为真时返回真,否则返回假。3)NOT运算符:逻辑非,当运算符连接的条件为真时返回假,否则返回真。【知识储备】数据筛选(3)范围查询
在SQLServer中,数据的范围查询有两种方式:一种是使用AND运算符连接两个比较表达式;另一种是使用BETWEEN…AND…来指定查询范围。例如,学生管理人员想要查询2005至2007年之间出生的学生信息,可以使用两个条件组合查询,实现代码如下:SELECT*FROMstudentWHEREbirthday>='2005-1-1'ANDbirthday<='2006-12-31'在一定的范围之间,可以使用BETWEEN…AND…来指定查询条件。实现代码如下:SELECT*FROMstudentWHEREbirthdayBETWEEN'2003-01-01'AND'2004-12-31'注意,BETWEEN…AND…运算符包含范围内的边缘值,相当于>='x'AND<='y'。如果要使结果集不包含边缘值,还是应该使用>'x'AND<'y'。【知识储备】数据筛选(4)使用值的列表作为查询条件在WHERE子句中可以使用IN运算符查询与指定值列表相匹配的行,它相当于使用OR运算符连接多个条件,但如果搜索条件的值数量较多,使用IN运算符显然更加简洁。例如,学生管理人员需要查询来自合肥和芜湖的学生的详细信息,有两种实现方式:一种是使用OR运算符连接两个比较表达式;另一种是使用IN运算符来指定查询范围。实现方法如下:SELECT*FROMstudentWHEREaddressIN('合肥','芜湖')IN运算符的功能可以用OR运算等价替换,代码略显复杂。实现方法如下:SELECT*FROMstudentWHEREaddress='合肥'ORaddress='芜湖'【知识储备】数据筛选(5)未知值查询如果在输入数据的过程中未给某允许为空值的列输入值时,那么该列就会存在一个空值(NULL)。空值代表未知,不同于数值0或空字符串,也不能与其他任何值做比较或者计算。将NULL与任何值比较都将返回假,所以不能使用比较运算符来判断某列是否为空。在SQL脚本中,使用ISNULL来判断空值,用ISNOTNULL来判断非空值。例如,学生管理人员需要查询未登记电话的学生的信息。在学生表中,电话(telephone)列是允许为空值的,如果在登记学生信息时未登记,将会以空值(NULL)显示,只能使用“ISNULL”来进行判断。实现方法如下:SELECT*FROMstudentWHEREtelephoneISNULL【知识储备】数据筛选(1)将查询结果排序在SQLServer中进行查询时,如果没有指定查询结果的显示顺序,SQLServer将按照其最方便的顺序(通常是记录的物理顺序,或者主键列的数值顺序)输出查询结果。要想改变数据的显示顺序,需要使用ORDERBY子句指定要排序的列。例如,学生表默认按照学生学号列的数值顺序排序显示,但是如果想要按照学分升序显示,则需要使用ORDERBY子句实现,实现代码如下:SELECT*FROMstudentORDERBYcredithourASC【知识储备】设置结果集的显示格式(2)使用TOPn关键字返回前n条记录很多时候,需要在查询时仅返回排名在前面的部分数据,此时可以使用TOPn关键字进行操作。使用TOPn关键字将返回符合查询条件的前n条记录,一般情况下需要配合ORDERBY子句使用,返回的将是排序后的前n条记录。例如,如果要查询学分最高的前5名学生,则需要首先按照学分降序排列,然后再返回前5条记录,实现方法如下:SELECTTOP5*FROMstudentORDERBYcredithourDESC在使用TOPn的时候应该注意,只有T-SQL支持TOPn关键字,不符合ANSI标准,并非所有的数据库管理系统都支持。T-SQL还支持使用TOPnPERCENT来返回前n%数量的记录,此时如果计算得到的如果是小数,SQLServer将按照向上取整方法返回结果。如果排名出现并列时需要考虑并列的情况,可以在TOPn后面使用WITHTIES关键字来返回并列值。【知识储备】设置结果集的显示格式(3)消除重复行用户在查询部分数据时,可能会出现大量的重复数据,比如产品的供货商、客户所在的地区等。如果希望结果集中没有重复数据,可以使用DISTINCT关键字消除完全重复的行。例如可以通过查询学生表的生源地信息,帮助学校更好地分析生源数据,实现方法如下:SELECTDISTINCTaddressFROMstudentORDERBYaddressASC如果要查询多个字段,DISTINCT只能消除所有列值都完全重复的行。DISTINCT关键字将按随机的顺序显示结果集中的行,可以配合ORDERBY子句实现结果集排序。【知识储备】设置结果集的显示格式(4)改变显示的列名数据库程序员在设计数据库时由于关键字和命名规则等限制,列名通常使用字母和数字来表示,有时候还会用到缩写,可读性不强。在查询过程中,往往还需要进行一些计算,计算得到的数据在显示的时候没有列名,因此也会带来可读性问题。SELECT子句中支持使用AS关键字来修改结果集以别名形式显示数据,方便用户理解。例如,对学生表的查询,可以变更列名为中文显示,实现方法如下:SELECTstudentidAS'学号',studentnameAS'姓名',sexAS'性别'FROMstudent【知识储备】设置结果集的显示格式【任务实施】
使用单条件查询学生基本信息(演示操作)实现本任务的SELECT语句指定列名来查询所需数据,此时结果集将按照列名列表的顺序来显示,与数据库物理存储无关。【例6-1】学生成绩管理系统的学生查询页面需要查询学生基本信息,主要包含学号、姓名、性别、出生日期、电话、入学时间等信息。SELECTstudentid,studentname,sex,birthday,telephone,ru_dateFROMstudent【任务实施】
使用单条件查询学生基本信息(演示操作)实现本任务需要在查询语句的基础上指定查询条件,实现精准查找。在字符串类型数据引用时,需要在两侧使用单引号“'”【例6-2】在学生列表页面点击学号可以查询学生的详情,请根据学号查询学生信息。SELECT*FROMstudentWHEREstudentid='2023001'【任务实施】
使用多条件查询学生详细信息(演示操作)查询中如果要使用多个查询条件,需要使用AND运算,模糊查询需要使用LIKE表达式【例6-3】学生管理人员需要通过多个查询条件来实现学生检索,如图6-1所示。现在管理人员需要查询2023年入学、姓张的男同学信息,请使用SELECT语句实现。SELECTstudentid,studentname,sex,birthday,telephone,ru_dateFROMstudentWHEREru_date=2023ANDstudentnameLIKE'张%'ANDsex='男'【任务实施】
使用多条件查询学生详细信息(演示操作)实现本任务需要两个查询条件,分别是生源地和性别,结果集排序,需要使用ORDERBY实现【例6-4】教务人员需要查看所有来自合肥的男生的数据,结果按照学分降序排列。SELECTstudentid,studentname,sex,address,credithourFROMstudentWHEREaddress='合肥'ORDERBYcredithourDESC任务6.2查询学生成绩信息【连接查询】03Part-DATABASETECHNOLOGY
在进行数据库设计的时候有一个重要原则:减少数据冗余。为了达到这个目标,数据通常会被拆分,并通过互相引用减少冗余。规范化程度越高,数据的拆分和引用就越多。按照数据库设计原则,学生成绩表中仅保存了学号、课程编号等外键数据,普通用户需要使用可理解的样式展示成绩数据,业务需求的样例如图6-7所示。为了查询学生成绩数据,就要将这些被拆分的数据重新组合起来,这就需要在查询时组合多张表的数据。【任务描述】01多表连接查询是指将多个数据表按照一定的条件连接起来,根据一定的查询条件获得数据信息。在T-SQL中,有两种方式实现多表连接查询。一种是使用前面介绍的FROM子句,在FROM子句中直接指定需要查询的多张表,并在WHERE子句中指定表之间的关系。另一种是使用ANSI-SQL提供的连接语句:使用JOIN关键字连接表,使用ON关键字指定表之间的连接条件。SQLServer推荐使用ANSI形式的连接,部分语法格式为:FROM表A[INNER|LEFT|RIGHT|CROSS]JOIN表B[ON连接条件]【知识储备】连接概述内连接的语法格式为:FROM表A[INNER]JOIN表BON连接条件内连接是通过比较两个被连接表所共同拥有的字段来把两个表连接起来,只返回满足连接条件的数据,忽略不符合连接条件的数据。内连接通常使用比较运算符,根据每个表共有的列的值匹配两个表中的行。表的连接条件经常采用“主表.主键=从表.外键”的格式。可以使用INNERJOIN关键字来表示。内连接是默认的连接方式,所以INNERJOIN可简写为JOIN。【知识储备】内连接(1)左外连接。其基本语法格式为:FROM表ALEFT[OUTER]JOIN表BON连接条件左外连接不仅仅返回满足连接条件的数据,还返回JOIN左侧表中不满足连接条件的数据。换句话说,它将保留其左侧表中所有的数据,如果其左侧表的某行在其右侧表中没有匹配行,则右侧表所有字段将显示为空值。左外连接使用LEFTOUTERJOIN关键字来表示,可以简写为LEFTJOIN。(2)右外连接。其基本语法格式为:FROM表ARIGHT[OUTER]JOIN表BON连接条件右外连接不仅仅返回满足连接条件的数据,还返回JOIN右侧表中不满足连接条件的数据。右外连接使用RIGHTOUTERJOIN关键字来表示,可以简写为RIGHTJOIN。(3)全外连接。其基本语法格式为:FROM表AFULL[OUTER]JOIN表BON连接条件全外连接不仅仅返回满足连接条件的数据,还同时返回JOIN两侧表中不满足连接条件的数据。全外连接使用FULLOUTERJOIN关键字来表示,可以简写为FULLJOIN。(3)交叉连接交叉连接。其基本语法格式为:FROM表ACROSSJOIN表B不指定连接条件的连接称为交叉连接,它将返回两张表指定列数据的笛卡尔积。笛卡尔积是指两个集合数据的任意组合,返回结果集的行数等于第一个表中符合条件的数据行数乘以第二个表中符合条件的数据行数。交叉连接使用CROSSJOIN关键字来表示。【知识储备】外连接在实际的应用过程中,除了使用连接来组合多张表的数据外,还可以直接将两个返回结果集结构一致的SELECT语句当作集合进行并、交、差操作,达到组合多表数据的目的。T-SQL通过UNION、INTERSECT、EXCEPT运算符分别实现并、交、差的计算。(1)UNION运算符当查询的数据在不同的地方,并且不能用单独的一个查询语句得到时,可以使用UNION运算符来进行结果集的合并操作,也就是“并集”。UNION运算符的语法格式为:SELECT_语句1UNION[ALL]SELECT_语句2(2)INTERSECT运算符INTERSECT运算符可以对两个或多个结果集进行比较,并返回INTERSECT左边和右边结果集中共同的记录,也就是“交集”。INTERSECT的语法格式为:SELECT_语句1INTERSECTSELECT_语句2(3)EXCEPT运算符EXCEPT运算符对两个输入查询的结果集进行差操作,返回出现在第一个结果集中,但不出现在第二个结果集中的所有行,也就是“差集”。EXCEPT的语法格式为:SELECT_语句1EXCEPTSELECT_语句2【知识储备】SQLServer中的集合操作【任务实施】使用多表连接查询学生班级数据(演示操作)student表中存储有每个学生的班级编号,而没有班级的名称,而班级的名称在class表中有。这两个表格是引用关系,学生表中的班级编号正好对应了班级表的主键,因此,可以使用这个主外键关系将student表与class表连接起来,查询到所需的数据。【例6-5】学生管理人员要查看每个学生的学号、姓名及其所在的班级名称。SELECTstudentid,studentname,classnameFROMstudentJOINclass ONstudent.classid=class.classid如果连接的两张表中存在同名的字段,查询的时候需要指定字段来自哪一张表,即在字段名前面加上表名,中间用“.”连接。还可以通过为表起别名的方式简化程序,代码如下:SELECTstudentid,studentname,classnameFROMstudentASsJOINclassASc ONs.classid=c.classid【任务实施】使用多表连接查询学生班级数据(演示操作)需要将student表和class表连接起来才能获取学生所在班级信息。如果需要返回还没有学生的班级,就需要用到外连接。class表出现在JOIN关键字的左侧,则是左外连接。【例6-6】学生管理人员需要查询所有班级的学生信息,没有学生的班级也需要一并列出。SELECTc.classid,classname,studentnameFROMclassAScLEFTJOINstudentASs ONc.classid=s.classid【任务实施】使用多表连接查询学生成绩(演示操作)学生成绩信息存储在grade表中,而直接从grade表中查询到的数据是无法被普通用户理解的,因为只有学号和课程号的信息,没有具体的课程名称和学生姓名。此时需要连接student表以获得学生姓名等信息,连接class表以获取课程名称等信息,因此需要进行两次连接。【例6-7】教务人员需要查询每个学生各门课程的成绩。SELECTs.studentid,studentname,coursename,term,scoreFROMstudentASsJOINgradeASg ONs.studentid=g.studentid JOINcourseASc ONg.courseid=c.courseid【任务实施】使用多表连接查询学生成绩(演示操作)学生、班级、专业和系部分别在不同的表中,它们之间都是主外键的引用关联。如果需要查询这些数据,就需要将四张表通过外键连接起来。【例6-8】查询每个学生的姓名、班级和所在专业及系的名称。SELECTs.studentid,studentname,specialityname,departmentnameFROMstudentASsJOINclassASc ONs.classid=c.classid JOINspecialityASpONc.specialityid=p.specialityid JOINdepartmentASdONp.departmentid=d.departmentid任务6.3分组汇总学生数据【分组汇总】04Part-DATABASETECHNOLOGY
在学生成绩管理系统中,很多数据都需要在现有表的基础上做统计,例如某个班级、某门课程的平均成绩、学生的选课门数等。如图所示,学生本人可以查询个人选修课程及成绩相关数据。本任务中,需要使用聚合函数统计数据、分组汇总数据、制作分组统计报表等。【任务描述】01【知识储备】聚合函数如果未对查询结果分组,聚合函数将作用于整个查询结果,即整个结果集会产生一个聚合值。如果需要按某一字段数据值进行分组,在分组的基础上再进行统计计算,就需要使用GROUPBY子句。对某列或某些列使用GROUPBY子句,可以把表中数据分组,聚合函数将作用于每一组,即每一组产生一个聚合值。例如,如果要统计每个学生的平均成绩,需要按照学生的学号分组,配合使用AVG()函数,就可以为每个学生统计一个平均成绩。实现的方法如下:SELECTstudentid,AVG(score)AS'avgScore'FROMgradeGROUPBYstudentid【知识储备】分组和汇总分组后的数据来源于基础数据表,但是和数据表中原来的结构不再一致。因此,如果需要对汇总后的数据进行筛选,不能再使用WHERE子句,只能使用HAVING子句来实现。也可以理解为WHERE子句用于分组前的原始数据筛选,HAVING子句用于分组后的数据筛选。例如,在统计过每个学生的平均成绩后,如果还要筛选平均成绩大于80的学生,则使用如下方法实现:SELECTstudentid,AVG(score)AS'avgScore'FROMgradeGROUPBYstudentidHAVINGAVG(score)>80【知识储备】分组后的数据筛选【任务实施】
使用聚合函数统计数据(演示操作)要想汇总计算学生选课数据,需要使用聚合函数COUNT()。要汇总计算学生的平均成绩,需要用到AVG()函数。如果需要统计每个学生的数据可以先使用GROUPBY子句对数据按照学号分组,即首先将grade表中所有数据按照studentid分组聚集,然后对每一个学生汇总选课数量和平均成绩,每一组生成一个汇总值。【例6-9】教务人员需要统计并显示每个学生选课门数及平均成绩等数据。SELECTstudentid,COUNT(*)AS'选课门数',AVG(score)AS'平均成绩'FROMgradeGROUPBYstudentid【任务实施】
使用聚合函数统计数据(演示操作)分组的操作可以按照多个列分组,在查询语句执行时,会先按照第一个列分组,在第一个组的内部再按照第二个列分组,以此类推完成全部的分组后再使用聚合函数汇总。本任务的分组依据是学期和学号,因此在GROUPBY子句后面要分别加上studentid和term,并且在SELECT子句后面除了聚合函数外,最多也只能包含这两个字段。【例6-10】教务人员需要分学期统计每个学生的选课数量和平均成绩。SELECTstudentid,term,COUNT(*)AS'选课门数',AVG(score)AS'平均成绩'FROMgradeGROUPBYstudentid,term【任务实施】
处理分组汇总后的数据(演示操作)要想汇总学生平均成绩,需要使用聚合函数;要统计每个学生的平均成绩,需要首先使用GROUPBY子句进行分组;平均成绩是聚合得到的数据,则需要使用HAVING子句来实现数据筛选,不能再使用WHERE子句。【例6-11】学生管理人员在评选三好学生时,需要查询平均分大于等于80分的学生。SELECTstudentid,COUNT(*)AS'选课门数',AVG(score)AS'平均成绩'FROMgradeGROUPBYstudentidHAVINGAVG(score)>=80【任务实施】
处理分组汇总后的数据(演示操作)在SELECT子句后面除了聚合函数外只能是分组字段。如果需要返回班级名称,则需要连接班级表,并同时将班级名称作为分组依据。【例6-12】统计每个学期平均分都大于等于80的学生学号、姓名、选课门数及平均成绩。SELECTg.studentid,studentname,term,COUNT(*)AS'选课门数',AVG(score)AS'平均成绩'FROMgradegJOINstudents ONg.studentid=s.studentidGROUPBYg.studentid,studentname,termHAVINGAVG(score)>=80任务6.4使用子查询完成复杂查询05Part-DATABASETECHNOLOGY
在任何一个信息系统中,基本查询是最常见的查询,但是实际应用中,偶尔还需要用到比较复杂的查询。例如,想要查询每个商品类别中销量最高的商品、计算每个部门的平均工资与公司平均工资的差值等。类似这些复杂查询往往需要首先查询部分数据,再通过嵌套、连接等方式嵌入到另一个查询中,才能查到最终的结果,这种查询称为“子查询”。在学生成绩管理系统中,学生工作人员需要查询没有选过课程的学生名单、教务管理人员需要查询每个班级学分最高的学生的信息等,类似这样的需求就需要使用子查询来实现。【任务描述】01所谓子查询,是指包含在某一个SELECT、INSERT、UPDATE或DELETE命令中的SELECT语句。子查询也称为内部查询,而包含子查询的语句称为外部查询,也称为主查询。当从表中选取数据行的条件依赖于该表本身或其他表的联合信息时,可以使用子查询来实现。子查询可以把一个复杂的查询分解成一系列的逻辑步骤,使用若干个简单的SELECT语句就可以实现一个复杂的查询。【知识储备】子查询判断值是否在子查询结果中。上带有IN谓词的子查询是指主查询与子查询之间用IN进行关联,判断某个列值是否在子查询的结果集中。一般查询通常返回一个集合,所以IN是子查询中最常用的谓词之一。[NOT]IN子查询比较子查询比较子查询是指主查询与子查询之间用比较运算符连接,当用户确切知道内层查询返回的是单个值时,就可以将其用于比较,查询中可以直接使用比较运算符“=”“>”这样的比较运算符来判断。是不是子查询中返回了多个值就一定不能使用普通比较运算符了呢?不是。例如,查询某个班级中年龄大于平均年龄的学生的信息、某类商品中价格大于平均价格的商品的信息等,此时需要使用ANY或ALL谓词来修改普通的比较子查询。0102【知识储备】子查询在相关子查询中,一般相关子查询可以和外部查询关联在一起,通过关联条件的连接来进行一般相关子查询。一般相关子查询使用EXISTS谓词的相关子查询在相关子查询中,还可以用EXISTS谓词。它一般用在WHERE子句中,配合子查询语句形成一个条件。当子查询存在返回值时,返回TRUE,否则返回FALSE。其部分语法格式为:WHERE[NOT]EXISTS(子查询)0102【知识储备】相关子查询【任务实施】
使用子查询实现分布查询(演示操作)要查询未选课的学生名单,需要先从学生表中查询出已选课的学生学号,再查询不在这个学号列表中的学生。【例6-13】查询没有选过课的所有学生的名单。SELECTstudentid,studentnameFROMstudentWHEREstudentidNOTIN (SELECTDISTINCTstudentidFROMgrade)【任务实施】
使用子查询实现分布查询(演示操作)选修过英语类课程的学生的信息需要通过连接course表、grade表和student表才能得到。【例6-14】教务人员需要查询选修过大学英语、英语翻译课程的学生的信息。SELECTs.studentid,studentname,coursename,term,scoreFROMstudentASsJOINgradeASgONs.studentid=g.studentid JOINcourseAScONg.courseid=c.courseidWHEREc.courseid=ANY(SELECTcourseidFROMcourse WHEREcoursenameIN('大学英语','英语翻译'))【任务实施】
使用相关子查询实现复杂查询(演示操作)学生的学分可以直接在student表中查询,而每个班级的最高学分也可以通过分组汇总来查询得到,但是想要返回学分最高的学生的信息就必须用到子查询。【例6-15】使用子查询检索每个班级学分最高的学生的信息。SELECTs1.studentid,s1.stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 支气管扩张患者的健康教育与宣传
- 新生儿乙肝感染传播途径
- 地铁工程正式验收
- 涉铅企业环境安全隐患排查评估整治技术指南(2025年版)
- 护理案例分析与实践
- 新冠肺炎护理质量改进方法
- 民航消防隐患排查评估整治技术指南(2025年版)
- 仓库项目脚手架搭设专项方案
- 护工日常清洁护理实操指南
- 护理内分泌系统疾病护理课件下载
- T-NIFA 22-2023 金融数据安全应急响应和处置指引
- 《插花基础知识》课件
- U型桥台计算书
- 社会体育指导员工作规范课件
- 人教版 七年级下册 历史 期中测试(一)
- ICD-9-CM3编码与手术分级目录
- 八年级数学-张美玲-海伦公式
- 探究物联网的技术特征-说课
- 2022年浙江杭州市中考英语试卷真题及答案详解(含作文范文)
- GB/T 18804-2022运输工具类型代码
- YY/T 0681.2-2010无菌医疗器械包装试验方法第2部分:软性屏障材料的密封强度
评论
0/150
提交评论