资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
北京信息科技大学3.5 数据查询功能 wSQL的核心是查询。SQL的查询命令也称 作SQL SELECT命令,该命令使用非常灵 活,可以完成复杂的查询。 w要求熟练掌握SQL SELECT命令的使用。北京信息科技大学SQL SELECT命令的语法 SELECT ALL|DISTINCTTOP expression PERCENTWITH TIES select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC COMPUTE AVG|COUNT|MAX|MIN|SUM(expression) ,.n BY expression ,.n SQL Server还支持查询结果的并、交、差和广义笛卡尔积运算。 北京信息科技大学各种运算符和表达式w关系运算符 w NOT BETWEENAND wmatch_expression NOT LIKE patternwexpression IS NOT NULL wtest_expression NOT IN (subquery | expression ,.n )w并(UNION)、交(INTERSECT)、差(EXCEPT)运算 北京信息科技大学关系运算符w关系运算符包括:n等于(=)n不等于()n大于等于(=)n不大于(!)n小于(=40 学时=50 AND 学时=50 AND 学时60 北京信息科技大学字符串匹配match_expression NOT LIKE patternwmatch_expression是要进行匹配比较的字符串表达式wpattern是含有通配符的字符串“模版” 北京信息科技大学字符串匹配北京信息科技大学空值判断wexpression IS NOT NULL空值是一个概念而不是一个具体的值,所 以不能用相等或不相等进行比较。 例如:责任教师 IS NULL而不能写为:责任教师 = NULL 北京信息科技大学判断元素是否属于集合wtest_expression NOT IN (subquery | expression ,.n )用来确定给定的表达式的值是否与子查询或集合列表中的值匹配。如:职称 IN (讲师,副教授 ,教授) 北京信息科技大学集合运算w并(UNION) w交(INTERSECT) w差(EXCEPT)运算北京信息科技大学通过实践来学习w简单查询 w连接查询 w分组与汇总查询 w嵌套查询 图3-1 样本数据库北京信息科技大学图3-1 样本数据库简单查询w例31:查询学生的全部信息。 w例32:查询所有课程名称和学时信息。 w例33:查询学时大于等于40的课程编号和课程名称 。 w例34:查询课时在50到60(含)之间的课程信息。 w例35:同例4,使用BETWEEN。 w例36:查询具有教授和副教授职称的教师信息。 w例37:查询责任教师字段为空值的记录。 w例38:查询职称为讲师或副教授的教师信息。北京信息科技大学几个关键词wALL(默认):查询结果中保留重复行 wDISTINCT :查询结果中删除重复行 wINTO:将查询结果存储到指定的表nSELECT INTO wORDER BY:查询结果排序nORDER BY order_expression ASC | DESC wTOP:只返回查询结果的“前”一组结果 nTOP (expression) PERCENT WITH TIES 北京信息科技大学图3-1 样本数据库简单查询 w例39:查询或浏览课程性质和学时信息。 w例40:查询“专业基础”课程的信息,并将结果存储到 Student模式下、表名为“专业基础”。 w例41:按教师编号升序列出所有教师信息。 w例42:查询所有学生信息,先按生源升序排序、再 按学号升序排序。 w例43:从选课表中查询考试成绩最高的3条选课信息 。 w例44:从选课表中查询考试成绩最高的3条选课信息 ,如果有与第三条记录的考试成绩并列记录的也列 出。 w例45:从选课表中查询考试成绩在前15%的选课记录 信息,如果随后有成绩并列的记录也一起列出。 北京信息科技大学图3-1 样本数据库集合运算 w例46:查询职称为教授和副教授的教师姓名和专业(用集合并运算完成)。 w例47:查询具有教授职称并是课程责任教师的教师编号(用集合交运算完成)。 w例48:查询不是课程责任教师的教师编号(用集合差运算完成)。 北京信息科技大学连接查询 SELECT FROM INNER|LEFT|RIGHT|FULL OUTER JOIN ON INNER|LEFT|RIGHT|FULL OUTER JOIN ON , n WHERE 当查询涉及多个表、特别是当查询结果的数据涉及多个表时需要使用连接查询。 北京信息科技大学连接查询图3-1 样本数据库w例3-49:查询教师所负责的课程信息(责任教师的姓名、职称 、负责的课程名称和课程性质)。 w例3-50:查询教师所负责的课程信息,同时列出没有确定责任 教师的课程。 w例3-51:查询教师所负责的课程信息,同时列出不是责任教师 的教师信息。 w例3-52:查询教师所负责的课程信息,同时列出没有确定责任 教师的课程信息和不是责任教师的教师信息。 w例3-53:查询考试成绩在90分以上(含)的学生的学号、姓名 、相应的课程名称和考试成绩。 w例3-54:查询考试成绩在90分以上(含)的学生的学号、姓名 、相应的课程名称和考试成绩(使用CROSS JOIN连接完成查询) 。 北京信息科技大学分组与汇总查询 w SQL SELECT查询可以直接对查询结果进行汇总计算,也可以对查询结果进行分组计算。在查询中完成计算的函数称 作聚合函数,分组查询分为GROUP BY 分组和COMPUTE BY分组两种。 北京信息科技大学聚合函数 w常用:nCOUNTnAVGnMINnMAXnSUM其他:nCHECKSUMnCHECKSUM_AGG nCOUNT_BIGnGROUPINGnSTDEVnSTDEVPnVARnVARPn等北京信息科技大学聚合函数与汇总查询SELECT FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC COMPUTE BY expression ,.n 聚合函数是对初始的查询结果进行计算然后得到最 终的查询结果,所以聚合函数只可以用在: SELECT子句的选择列表; 限定GROUP BY分组的HAVING子句; 完成计算的COMPUTE子句。 北京信息科技大学汇总查询w例3-55:查询目前有多少责任教师。 w例3-56:查询数据库课程的平均成绩。 图3-1 样本数据库对SELECT的全体查 询结果进行汇总计算。 SELECT ,n FROM WHERE search_condition北京信息科技大学 GROUP分组查询与计算 wSELECT子句和GROUP BY子句中的group_by_expression是相 对应的,它是分组标识,通常是字段; wWHERE子句中的search_condition是查询条件,它与分组无关 ,执行查询时是先查找满足条件的记录,然后对满足条件的 记录进行分组; wHAVING子句用来限定分组,所以该子句中的 search_condition是分组的记录应该满足的条件,HAVING子 句必须配合GROUP BY子句使用; w分组时使用聚合函数对每一组的记录进行计算,并且同时可 以进行多种计算。 SELECT group_by_expression , , n FROM WHERE search_condition GROUP BY group_by_expression HAVING search_condition北京信息科技大学图3-1 样本数据库GROUP分组查询举例w例3-57:查询各院系教师的人数(显示院系名 称和教师人数)。 w例3-58:查询各门课程考试成绩的平均分、最 高分和最低分。 w例3-59:查询专业基础课平均分大于等于60分 的各门课程考试成绩的平均分、最高分和最低 分。 使用GROUP BY分组查询只能查询到分组的结果,而不能看到组内记录的明细信息。 北京信息科技大学COMPUTE分组查询与计算 wSELECT子句指出查询明细; wCOMPUTE子句指定用聚合函数进行计算,如果指定BY子句 则说明进行分组计算; w为了保证分组计算的正确必须同时使用ORDER BY子句,这 两个子句中的expression是相对应的; w可以进行分组汇总和全部汇总。 SELECT FROM WHERE search_condition ORDER BY expression ASC | DESC ,.n COMPUTE , n BY expression ,.n 北京信息科技大学图3-1 样本数据库COMPUTE查询举例 w例3-60:查询所有专业基础课的信息,并计算 其总学时。 w例3-61:查询学生的考试成绩(要求查询学号 、姓名、课程名称和考试成绩),同时计算每 个学生的平均成绩、最高成绩和最低成绩。 w例3-62:查询学生的考试成绩(要求查询学号 、姓名、课程名称和考试成绩),同时计算每 个学生的平均成绩、最高成绩和最低成绩。同 时计算所有学生的平均成绩、最高成绩和最低 成绩。 北京信息科技大学嵌套查询wSQL SELECT语句的查询结果是一个集合, 它可以直接用于其他查询,通常把这种查 询称作嵌套查询。 w使用IN运算的嵌套查询 w使用量词ANY、SOME、ALL进行比较的嵌 套查询 w使用谓词EXISTS进行判断的嵌套查询 北京信息科技大学使用IN运算的嵌套查询 w和出自同一个值域,并 且通常是字段 SELECT FROM WHERE AND IN (SELECT FROM WHERE )北京信息科技大学图3-1 样本数据库嵌套查询举例w例3-63:查询由教授负责的课程信息(课程 编号、课程名称、学时和课程性质)。 北京信息科技大学使用量词ANY、SOME、ALL进行比较的嵌套查询 w和出自同一个值域,并且通常是 字段; w一般在查询时是一个值,而是内 层查询结果的值的集合; wANY和SOME是同义词,表示和内层查询结果中 的值的集合中的某个(或某些)值进行比较; 而ALL表示和内层查询结果中的 值的集合中的全部值进行比较。 SELECT FROM WHERE AND ANY | SOME | ALL (SELECT FROM WHERE )北京信息科技大学图3-1 样本数据库嵌套查询举例w例3-64:查询责任教师的有关信息(姓名、性 别、职称、专业)。 w例3-65:查询有考试成绩大于数据库课程全部 考试成绩的学生信息。 w例3-66:查询“系统分析与设计”课程的责任教 师的姓名、
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号