数据库第08章 数据查询

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第8章数据查询计算中心本章内容8.1查询分析器简介8.2SELECT语句简介8.3SELECT基本查询8.4SELECT嵌套查询8.5连接查询8.6在INSERT、UPDATE和DELETE语句中使用子查询8.1查询分析器简介通过开始菜单启动通过企业管理器启动启动查询分析器8.1查询分析器简介查询分析器的工作界面对象浏览区域选择数据库输入SQL区域显示查询结果8.1查询分析器简介查询分析器的常用操作执行SQL语句在【输入SQL区域】中输入SQL语句或打开一个SQL文件,单击工具栏执行按钮或按F5。查看和修改表中的数据右键单击欲查看或修改的表8.1查询分析器简介控制查询结果的显示方式以文本方式显示以表格显示结果将结果保存为文件菜单工具栏8.1查询分析器简介新建查询窗口单击工具栏【新建查询】按钮。选择菜单【文件】|【新建】保存在查询窗口中输入的SQL语句将光标置于输入SQL区域单击工具栏保存按钮选择菜单【文件】|【保存】保存查询结果将光标置于查询结果显示区域单击工具栏保存按钮选择菜单【文件】|【保存】8.1查询分析器简介对象搜索单击工具栏对象搜索按钮或选择菜单【工具】|【对象搜索】|【新建】。8.2SELECT语句简介数据查询是数据库最重要也是最主要的功能,在数据库中,数据查询是通过SELECT语句来完成的。SELECT查询语句只有一条语句,却能实现各种需求的查询。功能非常强大,依赖于其子句。SELECT语句的框架:8.2SELECT语句简介SELECT[ALL|DISTINCT];[TOPn[PERCENT];[表名|表别名.]列表达式[AS栏名][,[表名|表别名.]列表达式[AS栏名]…];[INTO新表名];FROM[数据库名!]表名[,[数据库名!]表名…];[INNER/LEFT/RIGHT/FULLJOIN[数据库名!]表名;[ON连接条件…]];[WHERE条件;[GROUPBY列名1[,列名2…][HAVING筛选条件];[ORDERBY列名1[ASC/DESC][,列名2[ASC/DESC]…]][COMPUTE集合函数(列名1)[,[集合函数(列名2)],…]BY列名1[,[列名2],…]提示:SELECT和FROM是必备的,其他子句根据实际情况设定。8.3SELECT基本查询无条件简单查询SELECT[ALL|DISTINCT][TOPn[PERCENT]]select_listFROMtable_name查询结果:从table_name中返回数据。各选项含义:ALL:表示输出所有记录,包括重复记录。DISTINCT:输出无重复结果的记录。TOPn:返回查询结果的前n行数据。TOPnPERCENT:返回查询结果前n%行数据。select_list:所要查询的选项(列)的集合,多个选项之间用逗号分开。table_name:要查询的表名。8.3SELECT基本查询例8-1:查询课程表中的所有数据。select课程号,课程名,学时from课程表提示:如果查询某表的所有列时,可用*代替各列名。select*from课程表例8-2:查询课程表中前两行数据。selecttop2课程号,课程名,学时from课程表8.3SELECT基本查询例8-3:查询课程表中前一半数据。selecttop50percent*from课程表例8-4:查询课程表中学时列,不显示重复记录。selectdistinct学时from课程表和原数据比较:Select学时from课程表8.3SELECT基本查询提问:下列SELECT语句含义select*from学生selecttop3学号,姓名,性别from学生selecttop20percent学号,姓名,性别from学生selectdistinct性别from学生8.3SELECT基本查询使用别名在输出结果中,如果不希望使用字段名作为各列的标题,可以根据需求设置列标题。格式:column_name1[[AS]column_title1][,…]例8-5:查询课程表所有数据,字段学时显示为课时。select课程号,课程名,学时as课时from课程表提示:AS可以省略。select课程号,课程名,学时课时from课程表8.3SELECT基本查询使用集合函数进行统计可以通过集合函数对表数据进行统计计算,并返回计算结果。比如查询表中记录的个数、查询学生的平均成绩等。AVG(字段名):求一列数据的平均值。SUM(字段名):求一列数据的和。COUNT(*):统计查询的行数。MIN(字段名):求列中的最小值。MAX(字段名):求列中的最大值。8.3SELECT基本查询例8-6:查询学生表中的记录数。selectcount(*)from学生表例8-7:查询选课表中最高分和最低分。selectmax(成绩),min(成绩)from选课表例8-8:查询选课表中的平均成绩。selectavg(成绩)from选课表提示:在使用集合函数时,常需重新命名列标题。改为:selectmax(成绩)as最高分,min(成绩)as最低分from选课表8.3SELECT基本查询带条件查询经常会查询符合某条件的记录,比如查询学生表中女同学的信息,查询成绩在90分以上的记录等。通过WHERE子句来指定查询条件。格式:WHERE条件表达式条件表达式:通过比较操作符和逻辑操作符构成的逻辑判断的式子。比较操作符:=、!=(或)、、=、、=逻辑操作符:AND、OR、NOT例如:性别='女';成绩=90;not(成绩=90)课程号='c01'and成绩=808.3SELECT基本查询例8-9:查询学生表中女同学的个人信息。select学号,姓名,性别from学生表where性别='女'例8-10:查询课程表中c01和c03这两门课程情况。select*from课程表where课程号='c01'or课程号='c03'提示:书写表达式时需要根据数据类型来加定界符。表达多个条件时使用AND和OR,注意其逻辑含义。8.3SELECT基本查询查询结果处理排序输出ORDERBY语法格式:ORDERBYorder_by_expression1[ASC|DESC][,order_by_expression2[ASC|DESC]][,…]]ASC——升序(默认);DESC——降序order_by_expression1——通常为字段,字段与字段之间用逗号分隔。例如:orderby性别(以性别来排序)orderby性别,姓名(先以性别升序来排,性别相同的再以姓名升序来排)8.3SELECT基本查询例8-11:将选课表的成绩按从低到高的顺序显示。select*from选课表orderby成绩ASC例8-12:将选课表的成绩按从高到低的顺序显示。select*from选课表orderby成绩DESC提示:字母排序——A~Z为升序;Z~A为降序。汉字排序——取汉字的汉语拼音,再以字母序来排。课堂练习在“学生表”中实现以下查询:①所有学生的学号、姓名、性别信息,并按学号排序。②所有女生的信息。③所有女生的人数。在“选课表”中实现以下查询:①查找学号为s2008003的课程号、成绩。②查找成绩在80分以上的学生学号、成绩。③查找课程号为c01的最高分、最低分、平均分。④计算成绩在90分以上的记录数。表的基本操作①在课程表中插入一条记录:课程号c06,课程名为photoshop,学时为40②修改课程号为c06记录的学时数为60③删除课程号为c06记录8.3SELECT基本查询重定向输入INTO把查询结果存放到一个新表中。语法:INTOnew_table例8-12:查询出学生表中女同学的个人信息,并将结果存入女同学表中。select*into女同学表from学生表where性别='女'Select*from女同学表8.3SELECT基本查询输出合并UNION把来自不同查询的数据组合起来,形成一个具有综合信息的查询结果。语法:[UNION[ALL]SELECT语句]ALL——结果全部合并,若没有ALL,则重复的记录将被自动去掉。8.3SELECT基本查询例8-13:将男同学表和女同学表的记录合并。select学号,姓名,性别from女同学表unionselect学号,姓名,性别from男同学表提示:两个SELECT语句必须输出同样的列数。两个表各相应列的数据类型必须相同。只有最后一个SELECT语句中可以用ORDERBY子句。8.3SELECT基本查询分组统计GROUPBY通过GROUPBY子句可以将查询结果按指定列进行分组,该列值相等的记录为一组。语法:GROUPBYgroup_by_expression1[,group_by_expression2][,…]例8-14:统计学生表中男女生人数。select性别,count(*)as人数from学生表groupby性别提示:group_by_expression1通常为字段名(列名)。通常和集合函数一起使用。课堂练习:统计选课表中每位学生的平均成绩。8.3SELECT基本查询筛选HAVING若在分组后还要按照一定的条件进行筛选,则需使用HAVING子句。语法:HAVINGsearching_condition例8-15:查询选课表中平均成绩在90分以上的学生学号和平均成绩。select学号,avg(成绩)平均成绩from选课表groupby学号havingavg(成绩)=908.3SELECT基本查询提示:HAVING子句通常需要使用集合函数来限定查询结果。HAVING子句和WHERE子句都是条件限定子句,但其作用对象不同。WHERE子句HAVING子句作用对象表字段计算字段与分组的关系无关只能用于分组查询中,必须在GROUPBY之后。8.3SELECT基本查询在多表连接查询中使用分组统计举例:统计各门课程的平均成绩,并显示课程名。select课程表.课程号,max(课程名)课程名,avg(成绩)平均成绩from选课表innerjoin课程表on选课表.课程号=课程表.课程号groupby课程表.课程号思考:①统计平均分在90分以上的课程号、课程名和平均成绩。②查询学生的平均成绩,并显示学生姓名。课堂练习完成对如下三个表的查询:职工(*职工号int,姓名char(8),性别char(2),出生日期datetime,党员否bit,参加工作datetime,部门号int)部门(*部门号int,部门名char(10))工资(*职工号int,*工资日期datetime,工资decimal(6,1))①计算各部门员工数。②显示所有职工的平均工资。③显示所有职工的职工号、姓名和平均工资。8.3SELECT基本查询使用COMPUTE和COMPUTEBY子句汇总使用COMPUTE子句可以在查询的结果集中生成汇总行的同时,还生成明细行。语法:COMPUTErow_aggregate(column_name)[,row_aggregate(colornn_name)...][BYcolumn_name[,column_name...]]例8-16:查询选课表中学号为s2008001的平均成绩及各科成绩。select学号,课程号,成绩from选课表where学号='s2008001'computeavg(成绩)8.3SELECT基本查询COMPUTE子句生成集合函数结果附加在结果集的最后,当与BY一起使用时,COMPUTE子句在结果集内对指定列进行分组汇总。例8-17:查询选课表中学生的各科成绩及平均成绩。select学号,课程号,成绩from选课表orderby学号computeavg(成绩)by学号提示:COMPUTE子句中指定的列必须是SELECT子句中已有的。COMPU

1 / 54
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功