资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2020-3-31,添加页脚,#,任务,1,SELECT,语句基本使用,项目,4,在,MySQL,数据库中查询数据,任务,2,使用,WHERE,子句过滤结果集,任务,3,使用,ORDERBY,子句对结果集排序,任务,4,使用,聚合函数汇总结果集,任务,5,使用,GROUP BY,子句对记录分组统计,任务,6,使用,连接查询,任务,7,使用,子查询,1.,简单查询,简单查询是按照一定的条件在单个的数据表上进行数据查询。使用,SQL,语言中,的,SELECT,语句来实现对数据的查询。,SELECT,语句的作用是让服务器从数据库中按用户,的要求,检索数据,并将结果以数据表的形式返回给用户。,任务,1,SELECT,语句基本,使用,预备,知识,数据查询,SELECT,语句的语法格式,如下,:,SELECT,FROM,WHERE,GROUPBY,HAVING,ORDER BY,LIMIT,UNION ;,任务,1,SELECT,语句基本,使用,预备,知识,说明,:,(,1)SELECT,子句用来指定查询结果中需要返回的值。,(,2)FROM,子句用来指定从中查询的数据表或视图。,(,3)WHERE,子句用来指定查询的条件。,(,4)GROUP BY,子句用来指定查询结果的分组条件。,(,5)HAVING,子句用来指定分组或集合的查询条件。,(,6)ORDER BY,子句用来指定查询结果的排序方法。,(,7)LIMIT,子句用来指定限制查询结果返回的行。,(,8)UNION,子句用来将多个,SELECT,语句查询结果合并为一个结果集。,任务,1,SELECT,语句基本,使用,预备,知识,SELECT,子句的语法格式如下,:,SELECT,ALL|DISTINCT,FROM,LIMIT n1,n2,;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,说明,:,(,1)ALL,指定表示结果集的所有行,包括重复行,ALL,是默认选项。,(,2)DISTINCT,指定在结果集显示唯一行,用于消除重复行,空值被认为相等。,ALL,与,DISTINCT,不能同时使用。,(,3)LIMIT n1,表示返回最前面的,n1,行数据,n1,表示返回的行数,。,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,(4)LIMIT n1,n2,表示从,n1,行开始,返回,n2,行数据。初始行从,0,开始。,n1,、,n2,必须,是非负,的整型常量。,(5,),目标,表达式为结果集要查询的特定表中的列,它可以是星号,(*),、表达式、列表、变量等,。其中,星号,(*),用于,返回表或视图的所有列,列表用“表名,.,列名,”来,表示,如,student.S_id,若只有一个表或多个表中没有相同的列时,表,名可以省略。,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-1】,查询,student,表中学生的学号,、姓名,和性别。,【,任务,实现,】,在命令窗口编写如下语句,:,select S_id,S_name,S_gender from student;,mysqlselect S_id,S_name,S_gender from student;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-2】,查询,student,表中学生的全部信息。,【,任务,实现,1】,在命令窗口编写如下语句,:,select S_id,S_name,Dept_id,S_age,S_gender,from student;,mysqlselect S_id,S_name,Dept_id,S_age,S_gender,from student;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,任务实现,2】,在命令窗口编写如下语句,:,select*from student;,mysqlselect*from student;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-3】,查询,student,表中学生的系部信息,要求返回的信息不重复。,【,任务,实现,1】,在命令窗口编写如下语句,:,select Dept_id from student;,mysqlselect Dept_id from student;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,或者,在命令窗口编写如下语句,:,select all Dept_id from student;,mysqlselect all Dept_id from student;,从返回结果集来看,得到的系部信息,是重复的若干行“,0”“1”“2”,。,但是本任务要求返回的信息不重复,接下来用如下语句完成本任务。,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,任务实现,2】,在命令窗口编写如下语句,:,select distinct Dept_id from student;,mysqlselect distinct Dept_id from student;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-4】,查询,student,表前,5,行信息,。,【,任务,实现,】,在命令窗口编写如下语句,:,select*from student limit 5;,mysqlselect*from student limit 5;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-5】,查询,student,表中从第,3,行开始的,5,行数据。,【,任务,实现,】,在命令窗口编写如下语句,:,select*from student limit 2,5;,mysqlselect*from student limit 2,5;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,若希望查询结果中的列显示时使用自己选择的列标题,可以在列名之后使用,AS,子句,语法,格式如下,:,SELECT,列,名,AS,列,别名,说明,:,AS,关键字可省略。,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-6】,查询,courses,表中的课程名和课程号,结果中各列的标题分别指定为课程名,和课程,号,。,【,任务,实现,】,在命令窗口编写如下语句,:,select C_n ame as,课程,名,C_id as from courses;,mysqlselect C_name as,课程名,C_id as,课程号,from courses;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,例,4-7】,按,满分,150,分重新计算成绩,显示,score,表中所有的成绩信息。,【,任务,实现,】,在命令窗口编写如下语句,:,select S_id,C_id,score,*1.,5 from score;,mysqlselect S_id,C_id,score*1.5 from score;,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,【,拓展,任务,】,(1),查询,courses,表中的课程名称,C_name,。,(2),查询,books,表中的出版社信息,press,要求返回的信息不重复。,(3),查询,department,表中的所有信息,。,(4),查询,teacher,表中的前,3,行信息。,(5),查询,teacher,表中从第,2,行开始的,4,行数据。,(6),查询,department,表中系部名和系部号,结果中列标题分别指定为系部名和系部号。,(7),按满分,120,分重新计算成绩,显示,score,表中所有成绩信息。,任务,1,SELECT,语句基本,使用,子任务,1.1,如何使用,SELECT,子句指定字段列表,使用,SELECT,语句进行查询时,如果用户希望设置查询条件来限制返回的数据,可以,在,SELECT,语句后面使用,WHERE,子句来实现,(,将在任务,2,详细介绍,),。,WHERE,子句的语法格式如下,:,WHERE;,任务,1,SELECT,语句基本,使用,子任务,1.2,使用谓词过滤记录,使用,WHERE,子句可以给出查询的条件,提高查询的效率。,WHERE,子句必须紧跟,在,FROM,子句后面。,WHERE,子句中的表达式可以是比较运算符,、模式匹配,运算符,、范围运算符、是否,为空值,、逻辑运算,符等谓词构成的式子。谓词的作用就是判断是否存在满足某种,条件的,记录,如果存在这样的记录就返回真,(,TRUE,),如果不存在就返回假,(,FALSE,),。系统,根据真假,来决定数据是否满足该查询条件,只有满足查询条件的数据才会出现在结果集中。,在,SQL,中,返回逻辑值,(,TRUE,或,FALSE,),的运算符或关键字都可称为谓词。,任务,1,SELECT,语句基本,使用,子任务,1.2,使用谓词过滤记录,【,例,4-8】,查询,student,表中所有男同学的信息。,【,任务,实现,】,在命令窗口编写如下语句,:,select*from student where S_gender=,男,;,mysql,select*from student where S_gender=,男,;,任务,1,SELECT,语句基本,使用,子任务,1.2,使用谓词过滤记录,【,拓展任务,】,查询,books,表中科学出版社的所有教材信息。,任务,1,SELECT,语句基本,使用,子任务,1.2,使用谓词过滤记录,使用,SELECT,语句进行查询时,FROM,子句用来指定从中查询的数据表或视图。,FROM,子句的语法格式如下,:,FROM,;,使用,FROM,子句可以给出查询的数据源,可以是一个表或视图,也可以是多个表或视图,。,FROM,子句必须紧跟在,WHERE,子句后面。,任务,1,SELECT,语句基本,使用,子任务,1.3,使用,FROM,子句进行查询,【,例,4-9】,查询,teacher,表中的教师姓名和教师号。,【,任务,实现,】,在命令窗口编写如下语句,:,select T_name,T_id from teacher;,mysqlselect T_name,T_id from teacher;,任务,1,SELECT,语句基本,使用,子任务,1.3,使用,FROM,子句进行查询,【,拓展任务,】,查询,teacher,表中的所有信息。,任务,1,SELECT,语句基本,使用,子任务,1.3,使用,FROM,子句进行查询,使用,SELECT,语句进行查询时,有时数据不仅仅来源于一个表或视图,此时就要用多表连接来实现。可用,FROM,子句来指定从中查询的数据表或视图,WHERE,子句来指定,连接条件,(,将在任务,6,详细介绍,),。,连接命令的语法格式如下,:,FROM ,别名,1,别名,2,WHERE,AND ;,或者,FROM,别名,1,INNER JOIN,别名,2,ON WHERE ;,任务,1,SELECT,语句基本,使用,子任务,1.4,使用多表连接进行查询,【,例,4-1 0】,查询,教师的姓名,、教师,号及所在系部名称。,【,任务,实现,】,在命令窗口编写如下语句,:,select T_name,T_id,Dept_name,from teacher,department,where teacher.Dept_id=department.Dept_id;,任务,1,SELECT,语句基本,使用,子任务,1.4,使用多表连接进行查询,mysqlselect T_name,T_id,Dept_name,from teacher,department,where teacher.Dept_id=department.Dept_id,;,任务,1,SELECT,语句基本,使用,子任务,1.4,使用多表连接进行查询,【,拓展任务,】,查询学生的姓名,、学,号及所在系部名称。,任务,1,SELECT,语句基本,使用,子任务,1.4,使用多表连接进行查询,使用,SELECT,语句进行查询时,如果用户希望设置查询条件来限制返回的数据,可以通过,SELECT,语句后面使用,WHERE,子句来实现。,WHERE,子句的语法格式如下,:,WHERE,;,任务,2,使用,WHERE,子句过滤结果,集,预备,知识,格式如下,:,表达式,表达式,|,表达式,NOT LIKE,表达式,ESCAPE esc,|,表达式,NO,REGEXP|RLIKE,表达式,|,表达式,NOT BETWEEN,表达式,AND,表达式,|,表达式,IS,NOT NULL,|,表达式,NOT IN(,子,查询,|,表达式,n,),|,表达式,ALL,|,SOME,|ANY,(,子,查询,),|EXIST(,子,查询,),任务,2,使用,WHERE,子句过滤结果,集,使用单一的条件过滤结果集,主要指使用比较查询条件来实现查询。比较查询条件由,两个,表达式和比较运算符,(,见,表,4-1),组成,系统将根据该比较查询条件的真假来决定数据,是否满足,该查询条件,只有满足该查询条件的数据才会出现在结果集中。表,4-1,给出了常用的,比较,运算符及其说明。,比较查询条件的格式如下,:,表达式,1,比较运算符 表达式,2,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.1,使用单一的条件过滤结果集,表,4,1,比较,运算符,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.1,使用单一的条件过滤结果集,运算符,说明,表达式,=,相等,x=y,不相等,xy,大于,xy,小于,xy,=,小于等于,x=,大于等于,x=y,!=,不等于,x!=y,相等或都等于空,xy,比较运算符用于比较两个表达式的值,当两个表达式的值均不为空值,(,NULL,),时,比较,运算,返回逻辑值,TRUE(,真,),或,FALSE(,假,);,当两个表达式的值有一个为空值或都为空值时,将返回,UNKNOWN,。,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.1,使用单一的条件过滤结果集,【,例,4-1 1】,查询,student,表中姓名为郑玲的学号,、姓名,和性别的列信息。,【,任务,实现,】,在命令窗口编写如下语句,:,select S_id,S_name,S_gender,from student,where S_name,=,郑玲,;,mysqlselect S_id,S_name,S_gender,From student where S_name=,郑玲,;,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.1,使用单一的条件过滤结果集,【,例,4-1 2】,查询,books,表中价格小于,30,元的教材书号,、教材,名称和教材价格的信息。,【,任务,实现,】,在命令窗口编写如下语句,:,select isbn,book name,price,from books where priceselect isbn,bookname,price,from books where price select*from score where score is null;,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.2,使用,IS NULL,运算符进行查询,【,例,4-14】,查询,score,表中已有成绩的信息。,【,任务实现,】,在,命令窗口编写如下语句,:,select*from score where score is not null;,mysqlselect*from score where score is not null,;,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.2,使用,IS NULL,运算符进行查询,【,拓展任务,】,(,1),查询,books,表中价格尚不定的教材信息。,(,2),查询,books,表中价格已定的教材信息。,任务,2,使用,WHERE,子句过滤结果,集,子任务,2.2,使用,IS NULL,运算符进行查询,在,MySQL,数据库中,字符集的概念和编码方案被看作是同义词,一个字符集是一个转换 表和一个编码方案的组合。,查看,当前数据库的字符集的语句如下,:,show variables like character%;,执行,结果如下,:,mysqlshow,variables like character%;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,说明,:,character_set_client,:,客户端请求数据的字符集。,character_set_connection:,客户机,/,服务器连接的字符集。,character_set_database:,默认数据库的字符集。,character_set_filesystem:,把操作系统上文件名转化成此字符集。,character_set_results:,结果集,返回给客户端的字符集。,character_set_server:,数据库服务器的默认字符集,character_set_system:,系统字符集。,执行,SELECT,语句,时,如果字符集设置错误,可能发生乱码等问题。,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,【,例,4-15】,查询,courses,表中信息。,【,任务实现,】,在,命令窗口编写如下语句,:,select*from courses;,mysqlselect*from courses,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,问题,1:,显示结果集时出现乱码问题。,由于,查询结果集中包含中文简体字符,如果使用下面的语句先将,character_set_results,的 字符集设置为,latin1,然后再执行本任务查询语句,则查询结果集将出现中文乱码问题。,执行结果,如下,:,set character_set_results=latin1,;,Select*from courses,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,mysqlset character_set_results=latin1;,Query OK,0 rows affected(0.03sec,),mysqlselect*from courses,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,【,例,4-16】,查询,courses,表中“,C,语言程序设计”课程的信息。,【,任务实现,】,在,命令窗口编写如下语句,:,set character_set_results=gbk,;,select*from courses where C_name,=c,语言程序设计,;,mysqlset character_set_results=gbk;,Query OK,0 rows affected(0.03sec),mysqlselect*from courses where C_name=c,语言程序设计,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,问题,2:,显示结果失败问题。,由于在,WHERE,子句中包含中文简体字符,如果使用语句先将,character_set_connection,的,字符集设置为,latin1,然后再执行本任务查询语句,则导致查询结果失败。执行结果如下,:,mysqlset character_set_connection=latin1,;,Query OK,0 rows affected(0.03sec,),mysqlselect*from courses where C_name,=c,语言程序设计,;,Empty set,1 warning(0.03sec,),可以,看到结果中出现了“,Empty set,1 warning,”,的提示,说明此次查询没有取得任何,结果,而且在此查询过程中产生了一个警告信息,。,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,说明,:,(,1),产生乱码的根本原因,:,客户端程序没有正确地设置客户端,(client),字符集,导致原先,的,SQL,语句被转换成当前连接,(connection),所指定的字符集,而这种转换是会丢失信息的。,另外,如果数据库字符集设置不正确,那么当前连接,connection,字符集转换成数据库,(database),字符集同样会导致丢失编码。,(,2)character_set_client:,要告诉服务器,发送的数据是何种编码,;,character_set_connection,:,告诉字符集转换器,转换成何种编码。,character_set_results,:,查询的结果用何种编码。,如果,以上三者都为,字符集,N,可简写为,set names N,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.3 SELECT,语句与字符集,【,小技巧,】,乱,码解决方法,:,首先明确客户端使用何种编码格式,;,确保数据库使用,utf8,格式,;,一定要,保证,当前,连接,(connection),字符集大于等于客户 端,(client,),所使用的字符集,即满足条件,:(latin1gb2312gbk=,70 and score,select S_id,score from score where score=70 and scoreselect S_id,S_name,S_gender from student where S_name like,王,%;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-19】,查询,student,表中学号的第,5,个数字为“,3”,的学生学号、姓名和系别信息。,【,任务实现,】,在,命令窗口编写如下语句,:,Select S_id,S_name,Dept_id from student,where S_id like _,3,%;,mysqlselect S_id,S_name,Dept_id from student,where,S_id like _3%;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-20】,查询,student,表中的男学生的学号、姓名和性别信息。,【,任务实现,】,在,命令窗口编写如下语句,:,select S_id,S_name,S_gender from student,where S_gender not like,女,;,mysqlselect S_id,S_name,S_gender from student,where,S_gender not like,女,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-21】,查询,student,表中姓名包含下划线的学号和姓名信息。,【,任务实现,】,在,命令窗口编写如下语句,:,Select S_id,S_name from student where S_name like,%#_%,escape#;,mysqlselect S_id,S_name from student where S_name like%#_%escape,#;,注意,:,定义了“,#”,为转义字符后,语句中在“,#”,后,的,“,_”,就失去了它本来通配符的含义。,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,拓展任务,】,(,1),查询,student,表中姓“张”的学生学号、姓名和性别信息,。,(,2),查询,student,表中学号的第,5,个数字为“,2”,的学生学号、姓名和系别信息。,(,3),查询,student,表中的女学生的学号、姓名和性别信息,。,(,4),查询,student,表中姓名包含百分号的学号和姓名信息。,注意,:,在,MySQL,中还可以,使用,REGEXP,运算符来执行更复杂的字符串比较,运算。,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,用于范围比较的关键字有两个,:,BETWEEN,和,IN,。,(,1),当要查询的条件是某个值的范围时,可以使用,BETWEEN,关键字,指定查询范围,语法格式,如下,:,表达式,NOT,BETWEEN,表达式,1 AND,表达式,2,当,不,使用,NOT,时,若表达式的值在表达式,1,与表达式,2,之间,(,包括这两个值,),则,返回,TRUE,否则,返回,FALSE,;,使用,NOT,时,返回值刚好相反。,(,2),使用,IN,关键字,可以指定一个值列表,值列表中列出所有可能的值,当与值列表中,的任何,一个匹配时,则,返回,TRUE,否则,返回,FALSE,。使用,IN,关键字,的语法格式如下,:,表达式,IN,(,表达式,n),任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-22】,查询,score,表中成绩在,70,分到,80,分之间的学号和成绩信息。,【,任务实现,】,在,命令窗口编写如下语句,:,Select S_id,score from score where score between 70 and 80;,mysqlselect S_id,score from score where score between 70 and 80,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-23】,查询,score,表中成绩在,70,分以下,80,分以上的学号和成绩信息。,【,任务实现,】,在,命令窗口编写如下语句,:,select S_id,score from score where score not between 70 and 80;,mysqlselect S_id,score from score where score not between 70 and 80,;,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-24】,查询,books,表中出版社为“科学出版社”或“时代出版社”的教材名、出版社和作者信息。,【,任务实现,】,在,命令窗口编写如下语句,:,Select book name,press,author from books,where press in,(,科学出版社,时代出版社,);,mysqlselect book name,press,author,from,books,where,press in(,科学出版社,时代出版社,),任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,例,4-25】,查询,books,表中出版社不是“科学出版社”或“时代出版社”的教材名、出版社和作者信息。,【,任务实现,】,在,命令窗口编写如下语句,:,Select bookname,press,author from books,where press not in,(,科学出版社,时代出版社,);,mysqlselect bookname,press,author from books,where,press not in(,科学出版社,时代出版社,);,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,【,拓展任务,】,(1),查询,books,表中价格在,20,元到,30,元之间的教材信息,。,(2),查询,books,表中价格在,20,元以下,30,元以上的教材信息,。,(3),查询,teacher,表中系部号为“,2”,或“,4”,的教师名和系部号信息,。,(,4),查询,teacher,表中系部号不是“,2”,或“,4”,的教师名和系部号信息。,任务,2,使用,WHERE,子句过滤结果,集,子,任务,2.5,使用,LIKE,进行模糊查询,使用,SELECT,语句,进行查询时,如果用户希望查询结果能够按照其中的一个或多个列,进行,排序,可以通过,SELECT,语句,后面,使用,ORDER BY,子句,来实现。,ORDER BY,子句,的语法格式如下,:,ORDER BY,列名,|,表达式,|,顺序号,ASC|DESC,;,说明,:,(,1),该子句可以根据一个或多个列进行排序,也可以根据表达式进行排序,。,(,2),可以在列的后面,指定,ASC,(,升序,),或,DESC,(,降序,),。如果没有指定顺序,系统默认,使用升序。,(,3),如果选择“顺序号”,则排序的列是,SELECT,顺序,号对应输出的相同列。,任务,3,使用,order by,子句对结果集,排序,预备知识,【,例,4-26】,在,books,表中按价格升序排列。,【,任务实现,】,在,命令窗口编写如下语句,:,select*from books order by price asc,;,mysqlselect*from books order by price asc;,任务,3,使用,order by,子句对结果集,排序,注意,:,(,1),如果写成,order by 4,结果相同,因为,select,后的第,4,列是,price,。,(,2),当对空值,(NULL),排序时,ORDER BY,子句,将空值作为最小值对待,因此升序排列,时将,空值放在最上面,降序时放在最下面。,任务,3,使用,order by,子句对结果集,排序,【,例,4-27】,在,score,表中按成绩降序排列。,【,任务实现,】,在,命令窗口编写如下语句,:,select*from score order by score desc,;,mysqlselect*from score order by score desc;,任务,3,使用,order by,子句对结果集,排序,【,例,4-28】,在,student,表中先按系别升序,再按年龄降序排列。,【,任务实现,】,在,命令窗口编写如下语句,:,select*from student order by Dept_id,S_age desc,;,mysqlselect*from student order by Dept_id,S_age desc,;,任务,3,使用,order by,子句对结果集,排序,【,拓展任务,】,(1),在,student,表中按年龄降序排列。,(,2),在,books,表中按出版时间升序排列,。,(3),在,books,表中先按出版社升序,再按价格降序排列。,任务,3,使用,order by,子句对结果集,排序,聚合函数用于对一组值进行计算,结果返回单个值,表,4-4,给出了常用聚合函数,。,注意,:,除,COUNT,函数,外,聚合函数都会忽略空值,(NULL),。,表,4-4,常用聚合函数,任务,4,使用,聚合函数汇总结果,集,预备,知识,函数名,说明,COUNT,返回满足,SELECT,语句中指定条件的行数,SUM,返回一个数值列或计算列的和,AVG,返回一个数值列或计算列的平均值,MAX,返回一个数值列或计算列的最大值,MIN,返回一个数值列或计算列的最小值,(,1)COUNT(),函数,COUNT,(),函数用于统计组中满足条件的行数或总行数,返回,SELECT,语句查询到的,行中非,NULL,值的数目,若找不到匹配的行,则返回,0,。,COUNT,(),函数的语法格式如下,:,COUNT,(ALL|DISTINCT,表达式,|*),说明,:,(,1),表达式的数据类型可以是除,blob,或,text,之外的任何类型。,(,2)ALL,表示对所有值进行运算,DISTINCT,表示,去除重复值,默认为,ALL,。,(,3),使用,COUNT,(*),时将返回查询行的总数目,不论其是否,包含,NULL,值。,任务,4,使用,聚合函数汇总结果,集,【,例,4-29】,查询,价格不为空的教材数目。,【,任务实现,】,在,命令窗口编写如下语句,:,select count(price)as,价格不为空的教材,数目,from books,;,mysqlselect count(price)as,价格不为空的教材数目,from books;,任务,4,使用,聚合函数汇总结果,集,【,例,4-30】,查询,教材的总数目。,【,任务实现,】,在,命令窗口编写如下语句,:,Select count(*)as,教材,总数,from books;,mysqlselect count(*)as,教材总数,from books,;,任务,4,使用,聚合函数汇总结果,集,【,例,4-31】,查询,成绩在,75,分以上的人数。,【,任务实现,】,在,命令窗口编写如下语句,:,select count(score)as,成绩在,75,分以上的,人数,from score where score75,;,mysqlselect count(score)as,成绩在,75,分以上的人数,from score where score75;,任务,4,使用,聚合函数汇总结果,集,(2)SUM(),函数,SUM,(),函数用于求表达式中所有值项的总和。,SUM,(),函数的语法格式如下,:,SUM,(ALL|DISTINCT,表达式,),任务,4,使用,聚合函数汇总结果,集,【,例,4-32】,查询,学号为,1115101,的学生所学课程的总成绩。,【,任务实现,】,在,命令窗口编写如下语句,:,select sum(score)as,课程,总成绩,from score where S_id,=1115101;,mysqlselect sum(score)as,课程总成绩,from score where S_id=1115101,;,任务,4,使用,聚合函数汇总结果,集,(3)AVG(),函数,AVG,(),函数用于求表达式中所有值项的平均值。,AVG,(),函数的语法格式如下,:,AVG,(ALL|DISTINCT,表达式,),任务,4,使用,聚合函数汇总结果,集,【,例,4-33】,查询,学号为,1115101,的学生所学课程的平均成绩。,【,任务实现,】,在,命令窗口编写如下语句,:,select avg(score)as,课程平均,成绩,from score where S_id,=1115101;,mysqlselect avg(score)as,课程平均成绩,from score where S_id=1115101,;,任务,4,使用,聚合函数汇总结果,集,【,例,4-34】
展开阅读全文