单元5查询和更新数据模板_第1页
单元5查询和更新数据模板_第2页
单元5查询和更新数据模板_第3页
单元5查询和更新数据模板_第4页
单元5查询和更新数据模板_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单元5 查询和更新数据引言引言数据库、表创建好后,接下来的工作是对数据进行操作,数据库、表创建好后,接下来的工作是对数据进行操作,包括查询数据、插入数据、修改数据和删除数据等。包括查询数据、插入数据、修改数据和删除数据等。数据操作是数据库工程师和数据库相关岗位人员日常工数据操作是数据库工程师和数据库相关岗位人员日常工作中必做的也是作中必做的也是最频繁最频繁的工作。的工作。【学习任务】【学习任务】任务任务1 单表查询单表查询任务任务2 数据汇总统计数据汇总统计任务任务3 多表连接查询多表连接查询任务任务4 数据更新数据更新任务任务5 使用图形工具进行数据操作使用图形工具进行数据操作【学习目标】【

2、学习目标】理解理解SELECT语句的语法格式;语句的语法格式;能根据实际需求对单表或多表进行数据查询,熟能根据实际需求对单表或多表进行数据查询,熟练编写练编写SELECT语句;语句;能对数据进行汇总计算、分组统计;能对数据进行汇总计算、分组统计;能熟练使用能熟练使用SQL语句对数据进行更新;语句对数据进行更新;能使用图形工具进行数据操作。能使用图形工具进行数据操作。任务任务1任务任务1单表查询单表查询【任务提出】【任务提出】数据库中最常见的操作是数据查询,可以说数据查询是数数据库中最常见的操作是数据查询,可以说数据查询是数据库的核心操作。据库的核心操作。查询可以对单表进行查询,也可以完成复杂的

3、连接查询和查询可以对单表进行查询,也可以完成复杂的连接查询和嵌套查询,其中对单表进行查询是数据查询操作中最简单嵌套查询,其中对单表进行查询是数据查询操作中最简单的,所以我们先从的,所以我们先从单表查询单表查询入手学习数据查询操作。入手学习数据查询操作。【任务分析】【任务分析】实现数据查询操作必须使用实现数据查询操作必须使用SQL语言中的语言中的SELECT语句语句。所以先学习和理解所以先学习和理解SELECT语句,然后针对实际需求对表语句,然后针对实际需求对表进行查询。进行查询。【相关知识与技能】【相关知识与技能】1单表查询的单表查询的SELECT语句语句SELECT ALL|DISTINCT

4、 目标列表达式目标列表达式FROM 表名表名WHERE 行条件表达式行条件表达式ORDER BY 排序列排序列 ASC|DESC【相关知识与技能】【相关知识与技能】2SELECT语句的含义语句的含义根据根据WHERE子句的行条件表达式,子句的行条件表达式,从从FROM子句指定的表中找出满足条件的行(记录),子句指定的表中找出满足条件的行(记录),再按再按SELECT子句中的列名或表达式选出记录中的字子句中的列名或表达式选出记录中的字段值形成查询结果。段值形成查询结果。如果有如果有ORDER BY子句,则查询结果还要按照排序列子句,则查询结果还要按照排序列的值进行升序或降序排列。的值进行升序或降

5、序排列。【任务实施】【任务实施】1选择表中的若干列选择表中的若干列(1)查询部分列)查询部分列格式:格式:SELECT 列名列名,n FROM 表名表名【例【例1】查询所有学生的学号和姓名。】查询所有学生的学号和姓名。【练习【练习1】查询所有课程的课程编号、课程名称和课程学】查询所有课程的课程编号、课程名称和课程学分。分。【任务实施】【任务实施】(2)查询全部列)查询全部列格式:格式:SELECT * FROM 表名表名【例【例2】查询全体学生的详细信息。】查询全体学生的详细信息。【练习【练习2】查询所有班级的详细信息。】查询所有班级的详细信息。【任务实施】【任务实施】(3)为查询结果集内的列

6、指定别名)为查询结果集内的列指定别名格式格式1:SELECT 原列名原列名 AS 列别名列别名,n FROM 表名表名格式格式2:SELECT 原列名原列名 列别名列别名,n FROM 表名表名格式格式3:SELECT 列别名列别名=原列名原列名,n FROM 表名表名【例【例3】查询所有学生的学号和姓名,并指定别名为学生学号、】查询所有学生的学号和姓名,并指定别名为学生学号、学生姓名。学生姓名。【练习【练习3】查询所有班级的详细信息,并给查询结果各列指定】查询所有班级的详细信息,并给查询结果各列指定中文意义的别名。中文意义的别名。【任务实施】【任务实施】(4)查询经过计算的列)查询经过计算的

7、列格式:格式:SELECT 计算表达式或列名计算表达式或列名 FROM 表名表名【例【例4】查询所有学生的学号、姓名和出生年份。】查询所有学生的学号、姓名和出生年份。【练习【练习4】查询所有学生的学号、姓名和年龄。】查询所有学生的学号、姓名和年龄。【任务实施】【任务实施】2选择表中的若干行选择表中的若干行(1)查询满足条件的记录)查询满足条件的记录格式:格式:SELECT 目标列表达式目标列表达式 FROM 表名表名WHERE 行条件表达式行条件表达式【任务实施】【任务实施】1)比较大小)比较大小【例【例5】查询所有女生的学号和姓名。】查询所有女生的学号和姓名。【练习【练习5】查询课程学时超过

8、】查询课程学时超过50学时的课程号和课程名称。学时的课程号和课程名称。【练习【练习6】查询所有在】查询所有在1992年年5月月10日后(包含日后(包含1992年年5月月10日)出生的学生的详细信息。日)出生的学生的详细信息。【练习【练习7】查询年龄小于】查询年龄小于20岁的学生的学号、姓名和出生岁的学生的学号、姓名和出生年月。查询结果应如图年月。查询结果应如图5-12所示。所示。【任务实施】【任务实施】2)确定范围)确定范围列名或计算表达式列名或计算表达式 NOT BETWEEN 下限值下限值 AND 上限值上限值【例【例6】查询平时成绩在】查询平时成绩在90100之间(包含之间(包含90和和

9、100)的)的学号和课程编号。学号和课程编号。【练习【练习8】查询出生年月在】查询出生年月在1991年年1月月1日至日至1991年年5月月30日之间的学生的学号和姓名。日之间的学生的学号和姓名。【任务实施】【任务实施】3)确定集合)确定集合列名或表达式列名或表达式 NOT IN (常量常量1,常量常量2,常量常量n)【例【例7】查询课程学时为】查询课程学时为30或或60的课程的课程编号和课程的课程的课程编号和课程名称。名称。【练习【练习9】查询所属专业为】查询所属专业为计算机应用技术计算机应用技术、软件软件技术技术的班级的班级编号、班级名称及入学年份。的班级的班级编号、班级名称及入学年份。【任

10、务实施】【任务实施】4)字符匹配)字符匹配列名列名 NOT LIKE 【例【例8】查询所有姓】查询所有姓陈陈的学生的学号和姓名。的学生的学号和姓名。【练习【练习10】查询所有姓陈且名为单个字的学生的学号和姓】查询所有姓陈且名为单个字的学生的学号和姓名。名。【练习【练习11】查询所有课程名称中含有】查询所有课程名称中含有数据库数据库的课程的课的课程的课程编号、课程名称。程编号、课程名称。【练习【练习12】查询学生姓名中姓】查询学生姓名中姓张张、林林、江江的学生的学的学生的学号和姓名。号和姓名。【任务实施】【任务实施】5)涉及空值)涉及空值列名列名 IS NOT NULL【例【例9】查询期末成绩现

11、为空的学生的学号和课程编号。】查询期末成绩现为空的学生的学号和课程编号。【任务实施】【任务实施】(2)消除取值重复的行)消除取值重复的行SELECT DISTINCT 目标列表达式目标列表达式FROM 表名表名【例【例10】查询期末成绩有不及格的学生的学号。】查询期末成绩有不及格的学生的学号。【练习【练习13】查询所有有选课记录的学生的学号。】查询所有有选课记录的学生的学号。【任务实施】【任务实施】(3)限制返回行数)限制返回行数SELECT TOP 指定的行数指定的行数 PERCENT 目标列表达式目标列表达式FROM 表名表名【例【例11】查询返回学生表中的最前面】查询返回学生表中的最前面

12、2条记录作为样本数据条记录作为样本数据显示。显示。【任务实施】【任务实施】3对查询结果排序对查询结果排序ORDER BY 排序列名排序列名 ASC|DESC【例【例12】查询所有学生的详细信息,查询结果按照出生年】查询所有学生的详细信息,查询结果按照出生年月降序排列。月降序排列。【练习【练习14】查询选修了课程编号为】查询选修了课程编号为0901170的课程的学的课程的学生的学号及其平时成绩,查询结果按照平时成绩升序排列。生的学号及其平时成绩,查询结果按照平时成绩升序排列。【练习【练习15】查询所有学生的详细信息,查询结果按照班级】查询所有学生的详细信息,查询结果按照班级编号升序排列,对同一个

13、班的学生按照学号升序排列。编号升序排列,对同一个班的学生按照学号升序排列。【练习【练习16】查询所有学生中年龄最大的那位学生的学号和】查询所有学生中年龄最大的那位学生的学号和姓名。姓名。【任务实施】【任务实施】4多重条件查询多重条件查询【例【例13】查询班级编号为】查询班级编号为200901001的班中所有男生的的班中所有男生的【练习【练习17】查询课程的平时成绩或期末成绩超过】查询课程的平时成绩或期末成绩超过90分的学分的学生的学号和课程编号,查询结果按照学号升序排列,学号生的学号和课程编号,查询结果按照学号升序排列,学号相同的按照课程编号降序排列。相同的按照课程编号降序排列。【练习【练习1

14、8】查询出年龄超过】查询出年龄超过20岁女生的详细信息。岁女生的详细信息。【任务总结】【任务总结】行条件表达式中的归纳注意点如下:行条件表达式中的归纳注意点如下:表达式中的字符型常量必须用单引号括起来,但字段名表达式中的字符型常量必须用单引号括起来,但字段名不能用单引号括起来;不能用单引号括起来;日期时间型常量须用单引号括起来。如日期时间型常量须用单引号括起来。如1992年年5月月10日日可使用以下任一格式表示:可使用以下任一格式表示:1992-05-10、1992/05/10、05/10/1992、19920510。范围运算符范围运算符BETWEENAND的语法格式为:的语法格式为:?列名

15、BETWEEN 下限值 AND 上限值;【任务总结】【任务总结】列表运算符列表运算符IN的语法格式为:的语法格式为:列名列名 IN (常量常量1,常量常量2,常量常量n);模式匹配符模式匹配符LIKE的语法格式为:的语法格式为:列名列名 LIKE ;空值判断符空值判断符IS NULL的语法格式为:的语法格式为:列名列名 IS NULL,不要写成:列名,不要写成:列名=NULL;如果有多个条件,须使用如果有多个条件,须使用AND或或OR连接。切记出现如下连接。切记出现如下表达式表达式90=Uscore=100。【拓展练习】【拓展练习】1从从Dorm表中查询所有宿舍的详细信息。表中查询所有宿舍的详

16、细信息。2从从Live表中查询学号为表中查询学号为200931010100101学生的住学生的住宿信息,包含宿舍编号宿信息,包含宿舍编号DormNo、床位号、床位号BedNo和入住日和入住日期期InDate。3从从Dorm表中查询所有男生宿舍(宿舍类别表中查询所有男生宿舍(宿舍类别DormType为为男男)的详细信息,结果按照楼栋)的详细信息,结果按照楼栋Build升序排列,楼栋升序排列,楼栋相同的按照宿舍编号相同的按照宿舍编号DormNo升序排列。升序排列。4从从Live表中查询在表中查询在2010年年9月份入住宿舍的学生的学月份入住宿舍的学生的学号号Sno、宿舍编号、宿舍编号DormNo和

17、床位号和床位号BedNo。【拓展练习】【拓展练习】5从从CheckHealth表中查询宿舍编号表中查询宿舍编号DormNo为为LCB04N101宿舍在宿舍在2010年年10月份的卫生检查情况,结月份的卫生检查情况,结果包含检查时间果包含检查时间CheckDate、检查人员、检查人员CheckMan、成绩、成绩Score和存在问题和存在问题Problem。6从从CheckHealth表中查询在表中查询在2010年年10月月1日至日至2010年年11月月30日之间宿舍卫生检查成绩日之间宿舍卫生检查成绩Score在在7080分(包含分(包含70、80分)之间的宿舍编号分)之间的宿舍编号DormNo、

18、检查时间、检查时间CheckDate和存在问题和存在问题Problem。7从从Dorm表中查询在表中查询在龙川南苑龙川南苑的宿舍详细信息。(在的宿舍详细信息。(在龙川南苑龙川南苑指楼栋指楼栋Build包含包含龙川南苑龙川南苑)。)。【拓展练习】【拓展练习】8从从Dorm表中查询宿舍电话表中查询宿舍电话Tel目前为空的宿舍的宿舍目前为空的宿舍的宿舍编号编号DormNo、楼栋、楼栋Build、楼层、楼层Storey和房间号和房间号RoomNo。9从从Student表中查询所有学生的学号表中查询所有学生的学号Sno、姓名、姓名Sname和年龄,查询结果按照年龄降序排列。和年龄,查询结果按照年龄降序排

19、列。10从从CheckHealth表中查询表中查询2010年年10月卫生检查成绩月卫生检查成绩Score最高的宿舍编号最高的宿舍编号DormNo和检查时间和检查时间CheckDate。任务任务2任务任务2数据汇总统计数据汇总统计【任务提出】【任务提出】在对表数据进行查询中,经常会对数据进行在对表数据进行查询中,经常会对数据进行统计计算统计计算,如,如统计个数、平均值、最大最小值、计算总和等操作。另外,统计个数、平均值、最大最小值、计算总和等操作。另外,还会根据需要对数据进行分开统计汇总,如统计各个班级还会根据需要对数据进行分开统计汇总,如统计各个班级的人数等操作。的人数等操作。【任务分析】【任

20、务分析】SQL提供了许多提供了许多集函数集函数对数据进行各种统计计算。若需要对数据进行各种统计计算。若需要对数据进行分组统计计算,对数据进行分组统计计算,GROUP BY子句子句就能够实现就能够实现这种分组统计。这种分组统计。【相关知识与技能】【相关知识与技能】1集函数集函数【任务实施】【任务实施】1使用集函数汇总数据使用集函数汇总数据【例【例1】统计】统计Student表中学生的记录数。表中学生的记录数。【例【例2】统计出信息工程学院的专业个数。】统计出信息工程学院的专业个数。【任务实施】【任务实施】【练习【练习1】查询学号为】查询学号为200931010100101学生的所有选学生的所有选

21、修课程的平时成绩的总分和平均分。修课程的平时成绩的总分和平均分。【练习【练习2】查询课程编号为】查询课程编号为2003003课程的学生期末成绩课程的学生期末成绩的最高分和最低分。的最高分和最低分。【相关知识与技能】【相关知识与技能】2分组统计分组统计GROUP BY 分组列名分组列名3对组筛选对组筛选HAVING 组筛选条件表达式组筛选条件表达式区分区分HAVING子句和子句和WHERE子句子句:HAVING子句是对子句是对GROUP BY分组后的组进行筛选,选择出满足分组后的组进行筛选,选择出满足条件的组;条件的组;而而WHERE子句是对表中记录进行选择,选择出满足条件的行。子句是对表中记录

22、进行选择,选择出满足条件的行。HAVING子句中可以使用集函数,一般子句中可以使用集函数,一般HAVING子句中的组筛选子句中的组筛选条件就是集函数。而条件就是集函数。而WHERE子句中绝对不能出现集函数。子句中绝对不能出现集函数。【任务实施】【任务实施】2进行分组统计进行分组统计【例【例3】统计各班级学生人数。】统计各班级学生人数。【练习【练习3】统计各门课程的选课人数。】统计各门课程的选课人数。【练习【练习4】统计各门课程学生的平时成绩平均分、期末成】统计各门课程学生的平时成绩平均分、期末成绩平均分。绩平均分。【任务实施】【任务实施】3对组进行筛选对组进行筛选【例【例4】查询出课程选课人数

23、超过】查询出课程选课人数超过2人的课程编号。人的课程编号。【练习【练习5】查询出所有选修课程的平均期末成绩小于】查询出所有选修课程的平均期末成绩小于50分分的学生学号。的学生学号。【任务总结】【任务总结】若要对数据库表中数据进行统计计算,可使用集函数。若若要对数据库表中数据进行统计计算,可使用集函数。若要对数据进行分组统计计算,使用要对数据进行分组统计计算,使用GROUP BY子句。若子句。若在表中数据分组后还要对这些组按条件进行筛选,输出满在表中数据分组后还要对这些组按条件进行筛选,输出满足条件的组,则使用足条件的组,则使用HAVING子句。子句。SELECT ALL|DISTINCT 目标

24、列表达式目标列表达式FROM 表名表名WHERE 行条件表达式行条件表达式GROUP BY 分组列名分组列名HAVING 组筛选条件表达式组筛选条件表达式ORDER BY 排序列排序列 ASC|DESC【拓展练习】【拓展练习】1从从Dorm表中查询所有男宿舍的总床位数。男宿舍指表中查询所有男宿舍的总床位数。男宿舍指宿舍类别宿舍类别DormType值为值为男男。2从从CheckHealth表中查询宿舍编号为表中查询宿舍编号为LCB04N101宿舍的被检查人员检查的次数。宿舍的被检查人员检查的次数。3从从CheckHealth表中查询表中查询2010年年11月份各宿舍的检查月份各宿舍的检查成绩的平

25、均值。成绩的平均值。4从从Student表中查询目前男生的人数。表中查询目前男生的人数。5从从Student表中查询目前男女生的人数。表中查询目前男女生的人数。【拓展练习】【拓展练习】6从从Dorm表中查询出各楼栋的房间数。表中查询出各楼栋的房间数。7从从Live表中统计各个宿舍的现入住人数。表中统计各个宿舍的现入住人数。8从从CheckHealth表中统计各宿舍到目前为止的卫生检表中统计各宿舍到目前为止的卫生检查的平均成绩。查的平均成绩。9从从CheckHealth表中查询出到目前为止的卫生检查平表中查询出到目前为止的卫生检查平均成绩超过均成绩超过90分的宿舍编号。分的宿舍编号。10从从Ch

26、eckHealth表中查询宿舍被检查次数超过表中查询宿舍被检查次数超过3次的次的宿舍编号。宿舍编号。任务任务3任务任务3多表连接查询多表连接查询【任务提出】【任务提出】前面任务前面任务1中完成的查询只涉及到一张表。而在实际使用中完成的查询只涉及到一张表。而在实际使用中,查询往往是中,查询往往是针对多个表针对多个表进行的,可能涉及二张或更多进行的,可能涉及二张或更多张表。张表。【任务分析】【任务分析】在关系型数据库中,将这种涉及到两个或两个以上表的查在关系型数据库中,将这种涉及到两个或两个以上表的查询,称为询,称为多表连接查询多表连接查询。连接查询是关系数据库中最重要的查询。连接查询是关系数据库

27、中最重要的查询。连接查询根据返回的连接记录情况,分为连接查询根据返回的连接记录情况,分为“交叉连接交叉连接”、“内连接内连接”和和“外连接外连接”查询。查询。【相关知识与技能】【相关知识与技能】1交叉连接交叉连接将第一张表的所有记录分别与第二张表的每条记录形将第一张表的所有记录分别与第二张表的每条记录形成一条新的记录。成一条新的记录。结果集中的记录数为两个表的记录数的乘积。结果集中的记录数为两个表的记录数的乘积。SELECT 目标列表达式目标列表达式FROM 表名表名1 CROSS JOIN 表名表名2【例【例1】交叉连接】交叉连接Student和和Score表。表。SELECT *FROM

28、Student CROSS JOIN Score【相关知识与技能】【相关知识与技能】2内连接内连接返回多个表中满足连接条件的记录。返回多个表中满足连接条件的记录。连接条件:连接条件: FROM 表名表名1 INNER JOIN 表名表名2 ON 【例【例2】连接】连接Student和和Score表,返回两张表中满足表,返回两张表中满足Sno相同的记录。相同的记录。SELECT *FROM Student JOIN Score ON Student.Sno=Score.Sno【相关知识与技能】【相关知识与技能】自然连接自然连接 :按照两个表中的相同字段进行等值连接,且:按照两个表中的相同字段进行

29、等值连接,且目标列中去掉了重复的属性列,但保留了所有不重复的属目标列中去掉了重复的属性列,但保留了所有不重复的属性列。性列。【例【例3】查询所有学生的详细信息及其选课信息,查询结】查询所有学生的详细信息及其选课信息,查询结果包含两张表中的所有列,但去除重复列。果包含两张表中的所有列,但去除重复列。SELECT Student.*,Cno,UScore,EndScoreFROM Student JOIN Score ON Student.Sno=Score.Sno【相关知识与技能】【相关知识与技能】3外连接外连接外连接查询是除返回内部连接的记录以外,还在查询结果外连接查询是除返回内部连接的记录以

30、外,还在查询结果中返回左表或右表或左右表中不符合条件的记录。中返回左表或右表或左右表中不符合条件的记录。分为分为 “左外连接左外连接”、“右外连接右外连接”和和“全外连接全外连接”。【相关知识与技能】【相关知识与技能】(1)左外连接)左外连接FROM 表名表名1 LEFT OUTER JOIN 表名表名2 ON (2)右外连接)右外连接FROM 表名表名1 RIGHT OUTER JOIN 表名表名2 ON (3)全外连接)全外连接FROM 表名表名1 FULL OUTER JOIN 表名表名2 ON 【任务实施】【任务实施】1两张表的连接两张表的连接【例【例5】查询所有学生相关信息,包含学号

31、、姓名、班级】查询所有学生相关信息,包含学号、姓名、班级编号、班级姓名。编号、班级姓名。步骤步骤1:分析查询涉及的表,包括查询条件和查询结果:分析查询涉及的表,包括查询条件和查询结果涉及的表;涉及的表;步骤步骤2:如果是涉及到多张表,分析确定表与表之间的:如果是涉及到多张表,分析确定表与表之间的连接条件;连接条件;步骤步骤3:分析确定查询目标列表达式。:分析确定查询目标列表达式。【任务实施】【任务实施】【练习【练习1】查询所有学生选修课程的详细信息,结果包含】查询所有学生选修课程的详细信息,结果包含学号、课程编号、课程名称、课程学分、平时成绩、期末学号、课程编号、课程名称、课程学分、平时成绩、

32、期末成绩。成绩。【任务实施】【任务实施】【例【例6】查询计算机】查询计算机093班学生的学号和姓名。班学生的学号和姓名。步骤步骤1:分析查询涉及的表,包括查询条件和查询结果:分析查询涉及的表,包括查询条件和查询结果涉及的表;涉及的表;步骤步骤2:如果是涉及到多张表,分析确定表与表之间的:如果是涉及到多张表,分析确定表与表之间的连接条件;连接条件;步骤步骤3:分析查询是否针对所有记录,还是选择部分行。:分析查询是否针对所有记录,还是选择部分行。如果选择部分行,则确定行选择条件;如果选择部分行,则确定行选择条件;步骤步骤4:分析确定查询目标列表达式。:分析确定查询目标列表达式。【任务实施】【任务实

33、施】【练习【练习2】查询课程名称中包含】查询课程名称中包含数据库数据库的课程的学生成绩,的课程的学生成绩,结果包含学号、课程编号、课程名称、平时成绩、期末成结果包含学号、课程编号、课程名称、平时成绩、期末成绩。绩。【练习【练习3】查询所有课程的课程号、课程名和学生平时成】查询所有课程的课程号、课程名和学生平时成绩,按照课程号升序排列,如果课程号相同,按照平时成绩,按照课程号升序排列,如果课程号相同,按照平时成绩降序排列。绩降序排列。【练习【练习4】查询期末成绩有不及格课程的学生信息,结果】查询期末成绩有不及格课程的学生信息,结果包含学号、姓名、班级编号。包含学号、姓名、班级编号。【练习【练习5

34、】查询选修了】查询选修了数据库技术与应用数据库技术与应用1课程的学生课程的学生的人数。的人数。【练习【练习6】统计各专业学生的人数,结果包含专业名称、】统计各专业学生的人数,结果包含专业名称、该专业人数。该专业人数。【任务实施】【任务实施】2两张表以上的连接两张表以上的连接连接实现的步骤是:先两张表进行连接形成虚表连接实现的步骤是:先两张表进行连接形成虚表1,然后,然后虚表虚表1与第三张表进行连接形成虚表与第三张表进行连接形成虚表2,然后虚表,然后虚表2与第四与第四张表进行连接,张表进行连接,形成虚表,形成虚表n,最后对虚表,最后对虚表n进行查进行查询得出查询结果。询得出查询结果。【任务实施】

35、【任务实施】【例【例7】查询所有学生的学号、姓名、班级名称、选修的】查询所有学生的学号、姓名、班级名称、选修的课程编号及平时成绩。课程编号及平时成绩。【练习【练习7】查询班级编号为】查询班级编号为200901001班学生的基本信班学生的基本信息及其选课信息,结果包含学号、姓名、性别、课程编号、息及其选课信息,结果包含学号、姓名、性别、课程编号、课程名称。课程名称。【练习【练习8】查询】查询计算机计算机092班学生的基本信息及其选课信班学生的基本信息及其选课信息,结果包含学号、姓名、性别、课程编号、课程名称。息,结果包含学号、姓名、性别、课程编号、课程名称。【任务总结】【任务总结】SELECT语

36、句的一般格式为:语句的一般格式为:SELECT ALL|DISTINCT 目标列表达式目标列表达式FROM 表名表名1 JOIN 表名表名2 ON 表名表名1.列名列名1=表名表名2.列名列名2WHERE 行条件表达式行条件表达式GROUP BY 分组列名分组列名HAVING 组筛选条件表达式组筛选条件表达式ORDER BY 排序列名排序列名 ASC|DESC【拓展知识】【拓展知识】1合并结果集合并结果集【例【例1】合并女生的学号、姓名信息和男生的学号、姓名信息。】合并女生的学号、姓名信息和男生的学号、姓名信息。SELECT Sno,Sname FROM Student WHERE Sex=女

37、女UNIONSELECT Sno,Sname FROM Student WHERE Sex=男男【注意】当使用【注意】当使用UNION时,所有时,所有SELECT查询的目标列的列数查询的目标列的列数和列的顺序必须相同,同时,所有和列的顺序必须相同,同时,所有SELECT查询的目标列按查询的目标列按顺序对应列的数据类型必须兼容。顺序对应列的数据类型必须兼容。【拓展知识】【拓展知识】2嵌套查询嵌套查询在一个在一个SELECT查询中,在其查询中,在其WHERE子句中的行条件表子句中的行条件表达式或达式或HAVING子句中的组筛选条件中,可含有另一个子句中的组筛选条件中,可含有另一个SEELCT语句,

38、这种查询称为嵌套查询。语句,这种查询称为嵌套查询。【例【例2】查询】查询数据库技术与应用数据库技术与应用1课程学生的选课信息。课程学生的选课信息。SELECT *FROM ScoreWHERE Cno=(SELECT CnoFROM CourseWHERE Cname=数据库技术与应用数据库技术与应用1)【拓展知识】【拓展知识】3返回单值的子查询返回单值的子查询【例【例3】查询出与】查询出与陈国成陈国成同班的学生详细信息。同班的学生详细信息。SELECT *FROM StudentWHERE ClassNo=(SELECT ClassNoFROM StudentWHERE Sname=陈国成陈

39、国成)【例【例4】查询出选修】查询出选修2003003课程且平时成绩低于本课程课程且平时成绩低于本课程平时成绩的学生学号。平时成绩的学生学号。【拓展知识】【拓展知识】4返回多个值的子查询返回多个值的子查询【例【例5】查询出选修了课程编号为】查询出选修了课程编号为0901169课程的学生姓课程的学生姓名和班级编号。名和班级编号。SELECT Sname,ClassNoFROM StudentWHERE Sno IN(SELECT SnoFROM ScoreWHERE Cno=0901169)【例【例6】查询出选修了】查询出选修了数据库技术与应用数据库技术与应用1课程的学生姓课程的学生姓名和班级编

40、号。名和班级编号。【拓展练习】【拓展练习】1从从Dorm和和Live表中查询所有学生的详细住宿信息,结果包含学号表中查询所有学生的详细住宿信息,结果包含学号Sno、宿舍编号、宿舍编号DormNo、楼栋、楼栋Build、房间号、房间号RoomNo、入住日期、入住日期InDate。2从从Dorm和和Live表中查询住在表中查询住在龙川北苑龙川北苑04南南楼栋(即字段楼栋(即字段Build的值为的值为龙川北苑龙川北苑04南南)的学生的学号)的学生的学号Sno和宿舍编号和宿舍编号DormNo。3从从Dorm、CheckHealth表中查询所有宿舍在表中查询所有宿舍在2010年年10月份的卫月份的卫生检

41、查情况,结果包含楼栋生检查情况,结果包含楼栋Build、宿舍编号、宿舍编号DormNo、房间号、房间号RoomNo、检查时间、检查时间CheckDate、检查人员、检查人员CheckMan、检查成绩、检查成绩Score、存在问题、存在问题Problem。4从从Dorm、CheckHealth表中查询表中查询龙川北苑龙川北苑04南南楼栋各宿舍的卫楼栋各宿舍的卫生检查平均成绩,结果包含宿舍编号、平均成绩。生检查平均成绩,结果包含宿舍编号、平均成绩。【拓展练习】【拓展练习】5从从Dorm、CheckHealth表中查询表中查询龙川北苑龙川北苑04南南楼栋的宿舍在楼栋的宿舍在2010年年10月份的卫生

42、检查情况,结果包含宿舍编号月份的卫生检查情况,结果包含宿舍编号DormNo、房间、房间号号RoomNo、检查时间、检查时间CheckDate、检查人员、检查人员CheckMan、检查成、检查成绩绩Score、存在问题、存在问题Problem。6从从Dorm、CheckHealth表中查询表中查询龙川北苑龙川北苑04南南楼栋的宿舍在楼栋的宿舍在2010年年10月份的卫生检查成绩不及格的宿舍个数。月份的卫生检查成绩不及格的宿舍个数。7从从Dorm、Live、Student表中查询所有学生的基本信息及其住宿表中查询所有学生的基本信息及其住宿信息,结果包含学号信息,结果包含学号Sno、姓名、姓名Sna

43、me、性别、性别Sex、宿舍编号、宿舍编号DormNo、楼栋、楼栋Build、房间号、房间号RoomNo、入住日期、入住日期InDate。【拓展练习】【拓展练习】8从从Dorm、Live、Student表中查询姓名为表中查询姓名为王康俊王康俊学生的住宿信息,学生的住宿信息,结果包含宿舍编号结果包含宿舍编号DormNo、房间号、房间号RoomNo、入住日期、入住日期InDate。9从从Dorm、Live、Student、Class表中查询所有学生的详细信息及表中查询所有学生的详细信息及其住宿信息,结果包含学号其住宿信息,结果包含学号Sno、姓名、姓名Sname、性别、性别Sex、班级编号、班级编

44、号ClassNo、班级名称、班级名称ClassName、宿舍编号、宿舍编号DormNo、楼栋、楼栋Build、房间号房间号RoomNo、入住日期、入住日期InDate。10从从Dorm、Live、Student、Class表中查询表中查询计算机应用技术计算机应用技术专业专业所有学生的入住信息,结果包含学号所有学生的入住信息,结果包含学号Sno、姓名、姓名Sname、性别、性别Sex、班级编号班级编号ClassNo、班级名称、班级名称ClassName、宿舍编号、宿舍编号DormNo、楼栋、楼栋Build、房间号、房间号RoomNo、入住日期、入住日期InDate。查询结果按照班级编号升。查询结

45、果按照班级编号升序排列,同班的按照学号升序排列。序排列,同班的按照学号升序排列。任务任务4任务任务4数据更新数据更新【任务提出】【任务提出】对数据的操作除了常用的查询操作外,还包括日常必做的对数据的操作除了常用的查询操作外,还包括日常必做的插入数据、修改数据、删除数据等操作。插入数据、修改数据、删除数据等操作。插入数据、修改插入数据、修改数据、删除数据数据、删除数据操作统称为数据更新。操作统称为数据更新。【任务分析】【任务分析】在数据操作中,操作的对象都是记录,而不是记录中的某在数据操作中,操作的对象都是记录,而不是记录中的某个数据。个数据。所以插入数据指往表中插入一条记录或多条记录,修改数所

46、以插入数据指往表中插入一条记录或多条记录,修改数据指对表中现有记录进行修改,删除数据指删除指定的记据指对表中现有记录进行修改,删除数据指删除指定的记录。录。插入记录对应的插入记录对应的SQL语句是语句是INSERT语句,修改记录对应语句,修改记录对应的的SQL语句是语句是UPDATE语句,删除记录对应的语句,删除记录对应的SQL语句语句是是DELETE语句。语句。【相关知识与技能】【相关知识与技能】1插入一条记录插入一条记录INSERT INTO 表名表名(列名列名1,列名列名2,列名列名n)VALUES (常量常量1,常量常量n)2插入查询结果插入查询结果INSERT INTO 表名表名(列

47、名列名1,列名列名2,列名列名n)SELECT 查询语句查询语句3使用使用INTO子句生成表子句生成表SELECT ALL|DISTINCT 目标列表达式目标列表达式INTO 新表名新表名FROM 表名表名WHERE 行条件表达式行条件表达式【相关知识与技能】【相关知识与技能】4UPDATE语句语句UPDATE 表名表名SET 列名列名1=,列名列名2=,WHERE 行条件表达式行条件表达式5DELETE语句语句DELETE FROM 表名表名WHERE 行条件表达式行条件表达式【任务实施】【任务实施】1插入一条记录插入一条记录【例【例1】往】往Student表中插入一条新记录,其中学号为表中

48、插入一条新记录,其中学号为200931010190125、姓名为、姓名为陈红陈红,性别为,性别为女女,班级编,班级编号为号为200901901。INSERT INTO Student (Sno,Sname,Sex,ClassNo)VALUES (200931010190125,陈红陈红,女女,200901901)【例【例2】往】往Student表中插入一条新记录,其中学号为表中插入一条新记录,其中学号为200931010190120、姓名为、姓名为何园何园,性别为,性别为男男,出生年,出生年月为月为1991/11/18,班级编号为,班级编号为200901901。【任务实施】【任务实施】【练习【

49、练习1】往】往Class表中插入所在班级的信息,往学生表表中插入所在班级的信息,往学生表中插入本人的基本信息。中插入本人的基本信息。【任务实施】【任务实施】2插入查询结果插入查询结果【例【例3】假如已为班级编号为】假如已为班级编号为200901001的班级学生单独的班级学生单独建了一个空表建了一个空表JSJ,其中包含学号、姓名、性别和出生年,其中包含学号、姓名、性别和出生年月四个字段,字段的数据类型和长度都与月四个字段,字段的数据类型和长度都与Student表相同,表相同,现要从现要从Student表中查询出该班学生信息插入到表中查询出该班学生信息插入到C1表中。表中。INSERT INTO

50、JSJ (Sno,Sname,Sex,Birth)SELECT Sno,Sname,Sex,BirthFROM StudentWHERE ClassNo=200901001【任务实施】【任务实施】3使用使用INTO子句创建新表并插入查询结果子句创建新表并插入查询结果【例【例4】创建班级编号为】创建班级编号为200901002的班级学生信息表,的班级学生信息表,表名为表名为JSJ2。SELECT Sno,Sname,Sex,BirthINTO JSJ2FROM StudentWHERE ClassNo=200901002【任务实施】【任务实施】【练习【练习2】创建】创建数据库技术与应用数据库技术

51、与应用1课程的选课情况表,课程的选课情况表,表中信息包含学生学号、平时成绩、期末成绩,表名为表中信息包含学生学号、平时成绩、期末成绩,表名为SjkXk。【任务实施】【任务实施】【例【例5】创建各门课程的平均期末成绩临时表,要求表中】创建各门课程的平均期末成绩临时表,要求表中列出各门课程的课程名称和平均期末成绩。列出各门课程的课程名称和平均期末成绩。SELECT Cname,AVG(EndScore) 平均期末成绩平均期末成绩INTO #平均成绩表平均成绩表FROM Course join Score on Course.Cno=Score.CnoGROUP BY Cname【任务实施】【任务实

52、施】【练习【练习3】创建各门课程的选课情况临时表,要求表中列】创建各门课程的选课情况临时表,要求表中列出各门课程的课程编号、课程名称、学生的学号、平时成出各门课程的课程编号、课程名称、学生的学号、平时成绩和期末成绩。绩和期末成绩。【任务实施】【任务实施】4修改一条记录的值修改一条记录的值【例【例6】将】将Sno为为200931010100102、Cno为为0901170的期的期末成绩修改为末成绩修改为60分。分。UPDATE ScoreSET EndScore=60WHERE Sno=200931010100102 AND Cno=0901170【任务实施】【任务实施】【练习【练习4】增加】增

53、加Sno为为200931010100207、Cno为为0901170的期末成绩为的期末成绩为90分。分。【练习【练习5】增加】增加Sno为为200931010100322、Cno为为0901025的平时成绩为的平时成绩为80分,期末成绩为分,期末成绩为84分。分。【任务实施】【任务实施】5修改多条记录的值修改多条记录的值【例【例7】将修改了课程编号为】将修改了课程编号为2003003且期末成绩小于且期末成绩小于90分的学生的期末成绩统一加分的学生的期末成绩统一加10分。分。UPDATE ScoreSET EndScore=EndScore+10WHERE Cno=2003003 AND End

54、Score90【任务实施】【任务实施】6级联修改级联修改【练习【练习6】使用】使用UPDATE语句将学号语句将学号200931010100101修改为修改为201031010100150。设置好级联修改后,编写执行以下设置好级联修改后,编写执行以下UPDATE语句。语句。UPDATE StudentSET Sno=201031010100150WHERE Sno=200931010100101【任务实施】【任务实施】【练习【练习7】将课程编号】将课程编号2003003修改为修改为2003180。【思考题】将课程【思考题】将课程数据库技术与应用数据库技术与应用1的所有课程期末成的所有课程期末成绩

55、置为绩置为0分。分。【任务实施】【任务实施】7删除一条或多条记录删除一条或多条记录【例【例8】删除】删除Sno为为200931010100322的学生选修课程的学生选修课程编号为编号为0901025的课程的选课记录。的课程的选课记录。DELETE FROM ScoreWHERE Sno=200931010100322 AND Cno=0901025【练习【练习8】从课程表中删除课程名称为】从课程表中删除课程名称为思政概论思政概论的记录。的记录。【任务实施】【任务实施】8级联删除级联删除【练习【练习9】因学号为】因学号为200931010100102的学生退学,在的学生退学,在数据库中删除该学生

56、的所有相关记录。数据库中删除该学生的所有相关记录。设置好级联删除后,编写执行以下设置好级联删除后,编写执行以下DELETE语句。语句。DELETE FROM StudentWHERE Sno=200931010100102【任务实施】【任务实施】【练习【练习10】从课程表中删除课程名称为】从课程表中删除课程名称为数据库技术与应数据库技术与应用用2的记录。的记录。【思考题】删除课程【思考题】删除课程数据库技术与应用数据库技术与应用1的所有选课记录。的所有选课记录。【任务总结】【任务总结】数据更新包括插入记录、修改记录和删除记录。插入记录数据更新包括插入记录、修改记录和删除记录。插入记录的的SQL

57、语句为语句为INSERT语句,修改记录的语句为语句,修改记录的语句为UPDATE语句,删除记录的语句为语句,删除记录的语句为DELETE语句。语句。在进行数据更新时要保证数据库中数据的一致性,可使用在进行数据更新时要保证数据库中数据的一致性,可使用级联修改和级联删除。级联修改和级联删除。【拓展知识】【拓展知识】1带子查询的更新带子查询的更新【例【例1】将课程】将课程数据库技术与应用数据库技术与应用1的所有课程期末成绩的所有课程期末成绩置为置为0分。分。UPDATE ScoreSET EndScore=0WHERE Cno=(SELECT CnoFROM CourseWHERE Cname=数据

58、库技术与应用数据库技术与应用)【例【例2】将课程】将课程数据库技术与应用数据库技术与应用1的所有课程期末成绩的所有课程期末成绩置为空(置为空(NULL)。)。【拓展知识】【拓展知识】2带子查询的删除带子查询的删除【例【例3】删除课程】删除课程数据库技术与应用数据库技术与应用1的所有选课记录。的所有选课记录。DELETE FROM ScoreWHERE Cno=(SELECT CnoFROM CourseWHERE Cname=数据库技术与应用数据库技术与应用)【拓展练习】【拓展练习】1往宿舍表往宿舍表Dorm中添加你所在宿舍的信息。中添加你所在宿舍的信息。2往入住表往入住表Live中添加你入住宿舍的信息。中添加你入住宿舍的信息。3统计各个宿舍的现入住人数,将统计结果存放到临时统计各个宿舍的现入住人数,将统计结果存放到临时表中,表名为表中,表名为#LiveNum。4从从Dorm、Live、Student、Class表中查询表中查询计算机应计算机应用技术用技术专业所有学生的入住信息,结果包含学号专业所有学生的入住信息,结果包含学号Sno、姓、姓名名Sname、班级名称、班级名称ClassName、宿舍编号、宿舍编号DormNo、楼栋楼栋Build、房间号、房间号RoomNo、入住日期、入住日期InDate,并将查,并将查询结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论