第五章数据查询.ppt

上传人:本田雅阁 文档编号:3118677 上传时间:2019-07-12 格式:PPT 页数:64 大小:1.18MB
返回 下载 相关 举报
第五章数据查询.ppt_第1页
第1页 / 共64页
第五章数据查询.ppt_第2页
第2页 / 共64页
第五章数据查询.ppt_第3页
第3页 / 共64页
第五章数据查询.ppt_第4页
第4页 / 共64页
第五章数据查询.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《第五章数据查询.ppt》由会员分享,可在线阅读,更多相关《第五章数据查询.ppt(64页珍藏版)》请在三一文库上搜索。

1、1,Wisdom in the mind is better than money in the hand. (脑中有知识,胜过手中有金钱。),好心情是学习的开始. 让我们一起进入查询语句的学习,2,假如有人提出这样的一些需求,我们如何处理呢,1、我希望将学生基本信息中的姓名,家庭住址,联系电话单独放入一个新表中保存 2、我想统计不同政治面貌的人数 3、后勤处想知道表中有几种少数民族,方便安排伙食. 4、我有个熟人叫马某某,是男同学,名字是两个字的,帮我查查,?,学 习 查 询 语 句,3,5.1 简单数据查询 5.2 分组查询 5.3 联接查询 5.4 子查询 5.5 联合查询 5.8 排名

2、函数 5.5 数据更新 5.10 事务,第五章 Transact-SQL数据查询与更新,4,5.1 SELECT语句基础,在数据库应用中,数据查询是通过SELECT语句来完成的 . SELECT语法提供了丰富的查询能力: Select - from - where,可以查询一个或多个表; 对查询列进行筛选、计算; 对查询行进行分组、分组过滤、排序; 甚至可以在一个SELECT语句中嵌套另一个SELECT语句。,5,学生基本信息表,6,成绩表,一个学生,各门课程,各门课程的成绩,7,系部表,课程信息表,40,38,8,5-1-1 SELECT语句的语法格式,SELECT select_list

3、INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC COMPUTE 子句,9,SELECT各子句执行顺序及功能简介: (1) SELECT子句:用于指定输出列(字段),也可求值输出。 (2) INTO子句:将检索结果存储到新表或视图中。 (3) FROM子句:用于指定检索数据的源表或视图。 (4) WHERE子句:指定选择行(记录)的过滤条件。 (5) GR

4、OUP BY:子句对检索到记录进行分组。 (6) HAVING子句:系指定记录辅助过滤条件,从分组的结果中筛选行,即选取满足条件的那些组。 (7) ORDER BY子句:是对检索到数据进行排序;ASC 和 DESC 关键字用于指定行是按升序还是按降序排序,默认升序。,5-1-1 SELECT语句的语法格式,10,(8) 其它几个子句功能: UNION 运算符:将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。 COMPUTE 子句:生成合计作为附加的汇总行附加在结果集的最后。当与 BY 一起

5、使用时,COMPUTE 子句在结果集内生成控制中断、明细和分类汇总。可在同一查询内指定 COMPUTE BY 和 COMPUTE。,5-1-1 SELECT语句的语法格式,11,5-2 简单查询,2通过查询分析器执行SELECT语句 Select - from - where 在关系数据库中,通常用选择、连接和投影三个术语来表示前三项,即SELECT、FROM和WHERE子句分别对应于关系数据库术语中的选择、连接和投影。 例:使用 SELECT 语句查找学生基本信息表中回族同学的姓名和家庭住址,按出生日期降序排列。 SELECT 姓名,家庭住址 FROM 学生基本信息表 WHERE 族别=回族

6、 ORDER BY 出生日期 DESC,12,工资表,档案表,5-2 简单查询,7,13,5-2-1 FROM 子句 1、1个表或视图 select * from 课程信息表 2、若干个表或视图 select * from 系部表,课程信息表 select * from 系部表,课程信息表 where 系部表.系部编号=课程信息表.系部编号 select * from 系部表 课程信息表 系部表.系部编号=课程信息表.系部编号,5-2 简单查询,7,Inner join,on,14,select 姓名,籍贯 from 学生基本信息表 union select 课程编号,课程名称 from 课程

7、信息表,别名使用,注:可用as子句为表/ 视图名称指定别名,也可为列指定别名 别名使用:查询各个系的任课教师情况(系部表和课程信息表) Select 系部名称,任课教师, from 系部表 as xb inner join 课程信息表 as kc on xb.系部编号=kc.系部编号,7,15,4、没有from子句的select子句 select abs(-12) select servername select 123+456,5-2 简单查询,select 学生基本信息表.学号,姓名,成绩二.总分 from 学生基本信息表 inner join on 学生基本信息表.学号=成绩二.学号,3

8、、 一个或多个派生表 (select 学号,sum(成绩) as 总分 from 成绩表 group by 学号) as 成绩二,16,关于from语句的课堂思考题,1.显示学生信息表中姓名和联系电话,存于新表“通讯薄” 2.显示“社会科学部”系的任课老师姓名,课程名称,学时,Select 姓名,联系电话 into 通讯薄 from 学生基本信息表 SELECT 任课教师, 课程名称, 学时 FROM 课程信息表 AS KC INNER JOIN 系部表 AS XB ON KC.系部编号 = XB.系部编号 WHERE (XB.系部名称 = 社会科学部),17,5-2-2 SELECT子句 1

9、、语法 SELECT ALL | DISTINCT TOP n PERCENT WITH TIES l ALL关键字:为默认设置,用于指定查询结果集的所有行,包括重复行。 l DISTINCT: 用于删除结果集中重复的行。 l TOP n PERCENT : 指定只返回查询结果集中的前n行。如果加了PERCENT,则表示只返回查询结果集中的前n%行。 WITH TIES 用于指定从基本结果集中返回附加的行。,5-2 简单查询,例:SELECT TOP 1 PERCENT WITH TIES * FROM 成绩表 ORDER BY 学号,18,2、选择列 (1)选择所有列* (2)选择指定列,各

10、列之间用逗号分隔。 3、在查询结果集中加入常量,字符“-”将名称的两个部分分开。 Select 课程编号+-+课程名称 as 课程信息 from 课程信息表 (说明:字段间用加号表示将字段值合并为一列,-也可改为其他) 4、选择列表中的计算表达式 (1)对数字列或常量使用算术运算或函数进行的运算。 Select 学号,round(成绩*1.02),2) as 期望成绩 from 成绩 (2)数据类型函数 Select 学号,(课程编号+cast (成绩 as char(4) as 课程成绩 from 成绩表,5-2 简单查询,19,5-3 分类汇总,( 3 ) Case 语句 USE TEST

11、 SELECT 学号, 等级= CASE WHEN 成绩=90 THEN 优 WHEN 成绩=80 THEN 良 WHEN 成绩=70 THEN 中 END FROM 成绩,(4)子查询 Select 学号,姓名,(select avg(成绩) from 成绩表 where 成绩表.学号=学生基本信息表.学号) as 平均成绩 from 学生基本信息表,SELECT 学号, avg(成绩), 等级= CASE WHEN avg(成绩)=90 THEN 优 WHEN avg(成绩)=80 THEN 良 WHEN avg(成绩)=70 THEN 中 END FROM 成绩表 group by 学号

12、,20,5、为选择列指定别名 列表达式 as 列别名 或 列表达式 列别名 或 列别名=列表达式 Select avg(成绩) as 平均成绩 from 成绩表 6、使用distinct消除重复行 Select distinct 族别 from 学生基本信息表 7、使用top和percent限制结果集 Select top 3 学号,姓名 from 学生 从学生基本信息表中只显示10%的信息 select top 10 percent * from 学生基本信息表,5-2 简单查询,21,关于select语句的课堂作业,1. 显示学生基本信息表的后10个学号的信息。 2. 显示不同政治面貌的人

13、数 3. 将学生的成绩上涨10%显示,该字段设为“期望成绩”,SELECT TOP 10 * FROM 学生基本信息表 ORDER BY 学号 DESC SELECT 政治面貌, COUNT(*) AS 人数 FROM 学生基本信息表 GROUP BY 政治面貌 SELECT 学号,成绩*1.1 AS 期望成绩 FROM 成绩表,22,5-2-3 WHERE子句 1、比较运算符(,等等) Select * from 课程 where 学分2 2、范围 (between 和not between) Select 姓名 from 成绩表 where 成绩 not between 60 and 80

14、 3、关键字in 与not in Select * from 学生 where 学分 not in(2,8,12) 4、模式匹配(like和not like) _表示任何单个字符,%表示任意多个字符 在指定范围内的任何单个字符。 不在指定范围内的任何单个字符,5-2 简单查询,23,5-2 简单查询,Like通配符的运用 搜索以张开头的姓名 搜索有个“丽”字的姓名 搜索姓名最后一个字是勇 搜索以5结尾的两位数学号 搜索姓张,王,李,赵的姓名 搜索除了张,王,李,赵的姓名 搜索以m开头,第二字母不是c的所有名称,like 张% like %丽% like %勇 like _5 like 张王李赵

15、% like 张王李赵% like mc%,24,5、空值(is null和is not null) 例:查询testdb库的成绩表中补考成绩空值情况 Select * from 成绩 where 补考成绩 is null 6、所有记录(=all,all,300) or (区域=西北 and 学号 like03%),5-2 简单查询,25,select * from 学生基本信息表 where 姓名 like 赵钱孙李% select * from 学生基本信息表 where 性别=男 and 姓名 like 马_,关于where语句的课堂作业,1、 显示学生中姓名赵钱孙李的学生信息 2、 查

16、询马(二字组成的姓名)的男同学信息。,26,5-3 分类汇总,5-3-1 常用统计函数,在SELECT 语句中,可以使用统计函数、GROUP BY 子句和COMPUTE BY 子句对查询结果进行分类汇总,27,5-2 GROUP BY 子句的语法格式为: GROUP BY ALL group_by_expression ,.n HAVING search_condition 例:显示不同政治面貌的人数 SELECT 政治面貌, COUNT(*) AS 人数 FROM 学生表 GROUP BY 政治面貌 思考:显示不同族别的人数 例:显示成绩表每个学生的成绩总分 SELECT 学号,SUM(成绩

17、) AS 总分 FROM 成绩表 GROUP BY 学号 思考:统计职工档案表不同职称的工资平均情况,第5章 分类汇总,28,第5章 分类汇总,提高: 统计成绩表中每门课的及格人数 SELECT 课程编号, COUNT(*) AS 人数 FROM 成绩表 WHERE (成绩 60) GROUP BY 课程编号 提高:显示总成绩大于等于520分以上的学生情况。 SELECT 学号,SUM(成绩) FROM 成绩表 GROUP BY学号 HAVING SUM(成绩)=520,29,5-2 使用COMPUTE BY汇总 1、而COMPUTE子句使用户得以用同一SELECT 语句既查看明细行,又查看总

18、计行。 2、COMPUTE BY 子句使用户得以用同一SELECT 语句既查看明细行,又查看分类总行; 3、COMPUTE 子句需要下列信息: 可选的 BY 关键字,该关键字可对一列计算指定的行统计; 行统计函数名称:例如,SUM、AVG、MIN、MAX 或 COUNT; 要对其执行行统计函数的列。,第5章 分类汇总,30,例:查询所有职工的工资总和,并显示明细记录。 不显示明细记录: SELECT SUM (工资) FROM 职工档案表 SELECT * FROM 职工档案表 COMPUTE SUM(工资) 例:按学号显示学生成绩,并计算每人的平均分.并显示每个分组的明细记录内容。 不显示明

19、细记录: SELECT 学号,AVG(成绩) FROM 成绩表 GROUP BY 学号 SELECT * FROM 成绩表 ORDER BY 学号 COMPUTE AVG(成绩) BY 学号,第5章 分类汇总,31,5.4 联接,* 联接,可以根据各个表之间的逻辑关系从两个或多个表中检索数据。联接表示如何使用一个表中的数据来选择另一个表中的行。 * 联接条件通过以下方法定义两个表在查询中的关联方式: (1) 指定每个表中要用于联接的列。典型的联接条件在一个表中指定外键,在另一个表中指定与其关联的键。 (2) 指定比较各列的值时要使用的逻辑运算符(=、 等)。 说明: 1. 联接条件可在 FRO

20、M 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件,有助于将联接条件与 WHERE 子句中可能指定的其它搜索条件分开。 2. 引用多表字段时,任何重复的列名都必须用表名限定,32,5.4 联接,1、内联接(inner join) 使用比较运算符根据每个表共有的列的值匹配两个表的行。包括:相等联接和自然联接 2、外联接 左外联接(left outer join):通过左向外联接引用左表的所有行。如果左表的某行在右表中没有匹配行,则将为右表返回空值。 右向外联接( right outer join):通过右向外联接引用右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回

21、空值。 完整外部联接( full outer join):返回两个表的所有行。凡对应表中没有匹配行,则返回付回空值,则整个结果集行包含基表的数据值。 3.交叉联接:左表每一行与右表中所有行组合。,33,交叉联接,34,5.4 内联接例题,5-4-1 内联接 (1)相等联接 例1: 查询学生基本信息表和成绩表的所有信息,按学号联接. select * from 学生基本信息表 AS XS inner join 成绩表 on XS.学号=成绩表.学号 注:两个表中都有学号字段,因此显示结果中有两个学号字段. (2)自然联接 例2:更改选择列表消除两个相同列中的一个(学号),即自然联接 select

22、 XS.* ,课程编号,成绩 from 学生基本信息表 AS XS inner join 成绩表 AS CJ on XS.学号=CJ.学号,35,5.4 内联接例题,普通题:利用“系部表”和“课程信息表”,查询任课教师所在系。 select 任课教师,系部名称 from 系部表 inner join 课程信息表 on 系部表.系部编号=课程信息表.系部编号 增强:利用“系部表”和“课程信息表”,查询“基础科学部”和“信息与计算机科学”的课程名称,输出系部名称和课程名称,按系部名称升序排列。 select 系部名称,课程名称 from 系部表 inner join 课程信息表 on 系部表.系部

23、编号=课程信息表.系部编号 where 系部名称 in(基础科学部,信息与计算机科学) order by 系部名称,36,5.4 内联接例题,(select 学号,sum(成绩) as 总分 from 成绩表 group by 学号) as 成绩二,select 学生基本信息表.学号,姓名,总分 from 学生基本信息表 inner join on 学生基本信息表.学号=成绩二.学号,复习: 利用成绩表,学生基本信息表显示学号,姓名,总分(用派生表的方法),37,提高: 利用“系部表”和“课程信息表”,统计不同系的课程安排数目,显示输出系部名称和课程数目(参照课件中from中派生表的用法) (

24、select 系部编号,count(*) as 课程数 from 课程信息表 group by 系部编号) as 课程表,5.4 内联接例题,select 系部名称,课程数 from 系部表 inner join on 系部表.系部编号=课程表.系部编号,38,5.4 内联接例题,提高:利用“成绩表”和“学生基本信息表”,统计平均分大于 80的学生名单和平均分(参照课件中from中派生表的用法) (select 学号,avg(成绩) as 平均分 from 成绩表 group by 学号 having(avg(成绩)80) as 成绩二,select 姓名,成绩二.平均分 from 学生表 i

25、nner join on 成绩二.学号=学生表.学号,select 姓名,成绩二.平均分 from 学生表 inner join (select 学号,avg(成绩) as 平均分 from 成绩表 group by 学号) as 成绩二 on 成绩二.学号=学生表.学号 WHERE 平均分80,39,5.4 自联接,(3)使用等号以外的运算符的联接 select * from 课程信息表,成绩表 where 课程信息表.课程编号成绩表.课程编号 自联接: 例 查学生表中,同名同姓的情况 Select a1.* from 学生表 as a1,学生表 as a2 Where a1.姓名=a2.姓

26、名 and a1.学号a2.学号 思考:查询课程信息表中同一门课程任课教师情况 select a.* from 课程信息表 a inner join 课程信息表 b on a.课程名称=b.课程名称 and a.课程编号b.课程编号,40,思考:查询上同一门课程任课教师情况. Select a.任课教师,a.课程名称 from 课程信息表 a inner join 课程信息表 b on a.课程名称=b.课程名称 and a.课程编号b.课程编号 交叉联接 例:交叉联接系部表和课程信息表 Select * from 系部表,课程信息表 Select * from 系部表 cross join

27、课程信息表 注:如果在交叉联接后面添加一个where子句,它的作用就跟内联接一样了.,5.4 自联接,41,成绩表,档案表,5.4 外联接例题,查询学生的学号,姓名,成绩,通过三种联接方式,请说出左联接,右联接,完整外部联接的结果,42,5.4 外联接例题,例:用DAN表和CJ表分别左联接、右联接、完整联接。 左联接 SELECT DAN.学号,姓名,成绩 FROM DAN LEFT OUTER JOIN CJ ON DAN.学号=CJ.学号,右联接 SELECT CJ.学号,姓名,成绩 FROM DAN RIGHT OUTER JOIN CJ ON DAN.学号=CJ.学号,43,完整外部联

28、接 SELECT DAN.学号,姓名,成绩 FROM DAN FULL OUTER JOIN CJ ON DAN.学号=CJ.学号,5.4 外联接例题,44,5.5 嵌套查询的使用,5-5-1 子查询基础 子查询是一个 SELECT 查询,它返回单个值且嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。 1、单表使用子查询 例题:查询比“陈倩”年龄大的学生姓名 SELECT 姓名 FROM 学生表 WHERE 出生日期 陈倩,(SELECT 出生日期 FROM 学生表 WHERE 姓名=陈倩) 课堂作业:查询与王巧玲同龄的学生信息 (select year(出

29、生日期) from 学生表 where 姓名=王巧玲),select * from 学生表 where year(出生日期)=,45,select 姓名 from 学生表 where 出生日期all,5.5 嵌套查询的使用,例题:使用子查询从学生表中显示年龄比所有蒙古学生 都小的学生姓名 ( select 出生日期 from 学生表 where 族别=蒙古),思考题:显示比所有男生年龄都大的女生姓名 SELECT 姓名 FROM 学生表 WHERE 性别=女AND 出生日期 ALL(SELECT 出生日期 FROM 学生表 WHERE 性别=男),46,5.5 嵌套查询的使用,提高:找出年龄高

30、于平均年龄的所有学生的姓名(人数) (SELECT AVG(DATEDIFF(YEAR,出生日期,GETDATE() FROM 学生表),SELECT 姓名 FROM 学生表 WHERE DATEDIFF(YEAR,出生日期,GETDATE(),COUNT(*),课堂作业:查询成绩表中大于学生总评平均分的学号 select 学号 from 成绩表 group by 学号 having avg(成绩) (select avg(每人平均分) from (select avg(成绩) as 每人平 均分 from 成绩表 group by 学号) as cj),47,5.5 嵌套查询的使用,例题:利

31、用成绩表,查看总分最高的学生学号,select top 1 学号,sum(成绩) AS 总分 from 成绩表 group by 学号 order by sum(成绩) DESC,课堂作业:统计大学英语即课程编号为001,成绩低于 001课程平均分的人数 select count(*) from 成绩表 where 课程编号=001 and 成绩 (select avg(成绩) from 成绩表 where 课程编号=001),48, 5.4 子查询,一个子查询能够返回一个由行和列构成的数据集,我们可以将这个数据集再看作一个表来处理,这个由子查询得出的新表就是我们说的“派生表” 派生表有利于提

32、高查询速度、简化操作 派生表不是存储在数据库中的对象,它只在查询期间有效。,49,5.5 嵌套查询的使用,2、多表使用子查询 例:显示成绩表中有不及格科目的学生姓名.(相当于内联接) Select 姓名 from 学生表 where 学号 in,( select distinct 学号 from 成绩表 where 成绩60),EXIST是引入存在测试,子查询实际不产生任何数据,只返回TRUE或FALSE值。 例:显示成绩表中有不及格科目的学生姓名. Select 姓名 from 学生表 where exists( select 学号 from 成绩表 where 学号=学生表.学号 and

33、成绩60),50,例:用子查询的形式,显示学生的姓名和平均分。 Select 姓名,(select avg(成绩) from 成绩表 where 成绩表.学号=学生表.学号) as 平均分 from 学生表,5.5 嵌套查询的使用,思考题:用子查询的方式,显示“社会科学部”系的任课教师,课程名称,学时。 select 任课教师,课程名称,学时 from 课程信息表 where 系部编号=(select 系部编号 from 系部表 where 系部名称=社会科学部),51,5.5 嵌套查询的使用,例:显示古丽努尔的总分成绩 select 姓名,(select sum(成绩) from 成绩表 w

34、here 学号=学 生表.学号) as 总分 from 学生表 where 姓名=古丽努尔 例:显示平均分大于80分的学生姓名 Select 姓名 from 学生表 where 学号 in (select 学号 from 成绩表 group by 学号 having avg(成绩)80 ),52,5.5 嵌套查询的使用,课堂作业:查询004课程超过60分(含60)成绩的学生姓名 select 姓名 from 学生表 where 学号 in (select 学号 from 成绩表 where 课程编号=004 and 成绩=60) 课堂作业:查询000001学号的学生所选课程的名称 select

35、 课程名称 from 课程信息表 where 课程编号 in (select 课程编号 from 成绩表 where 学号=000001),53, 5.6 联合查询,UNION关键字可以将两个或更多相互独立的SELECT语句的查询结果合并成一个集合,即执行联合查询。 联合查询要求合并的几个数据集之间应该具有相同的字段数目和类型。 例:显示学生基本信息表中的姓名和籍贯以及课程信息表中的课程编号和课程名称。 select 姓名,籍贯 from 学生基本信息表 union select 课程编号,课程名称 from 课程信息表,54,-显示“罗小花”的各个科目成绩和平均分 select 课程名称,成

36、绩 from 课程信息表 as kc inner join 成绩表as cj on kc.课程编号=cj.课程编号 where cj.学号=(select 学号from 学生基本信息表 where 姓名=罗小花) union select 课程名称=平均分,avg(成绩) from 成绩表 where 学号 =(select 学号from 学生基本信息表where 姓名=罗小花), 5.6 联合查询提高,55,5.7 联接,5-7-1 多表联接 虽然每个联接规范只联接两个表,但 FROM 子句可包含多个联接规范。这样一个查询可以联接若干个表。 例:利用课程信息表,成绩表, 学生基本信息表显示学

37、生的学号,姓名,课程名称,成绩 select 成绩表.学号, 课程名称,成绩 from 课程信息表 inner join 成绩表 on 课程信息表.课程编号 = 成绩表.课程编号 inner join 学生基本信息表 on 成绩表.学号=学生基本信息表.学号,利用班级表、学生表、成绩表显示班级名称,姓名,成绩,思考:,姓名,56,5.8 排名函数,5.8.1 ROW_NUMBER 如果希望返回的结果集每一行都有一个行号,可以控制显示某行到某行之间的多条记录就十分方便. ROW_NUMBER产生一组行号,OVER后面用来确定分配唯一行号的顺序. 例:按学号升序显示学生表的第8条到第22条的记录.

38、 select * from (select row_number() over(order by 学号) as 行号,* from xs) as xs2 where 行号=8 and 行号=22,57,5.8 排名函数,5.8.2 RANK与DENSE_RANK RANK与DENSE_RANK函数都用来进行名次的排列,它们的不同之处在于当前面出现相同名次后对后面名次的影响. 例:检索每人学生的总分,并排列出名次 select 学号, rank() over(order by sum(成绩) desc )as 名次, sum(成绩) as 总分 from 成绩表 group by 学号 观察两

39、种排名次函数的结果,58,使用 INSERT 将查询的结果插入到表 1.使用insert values插入行 例: SQL语句在“班级表”中插入一个新班级,班级编号“20051004”,系部编号“02”,班级名称是“05信息管理” insert into 班级表 values(20051004,02,05信息管理) 课程作业:(1)在系部表中插入一个新系部,信息自定义. (2)在学生表中插入000107,张鹏信息.,5.9 数据插入的运用,59,使用 INSERT 将查询的结果插入到表 2.使用select into 插入行到新表中 例: 用“学生表”将“党员”信息单独生成新表“党员表” se

40、lect * from 学生表 where 政治面貌=党员,into 党员表,5.9 数据插入的运用,课堂作业(1)将学生通讯信息存放“TXB”新表中。 (2)将学生的学号、总分和平均分存于“期末总评”表,60,使用 INSERT 将查询的结果插入到表 3.使用 insert select插入行 例: 新建一个表:成绩总表(学号,课程编号,成绩),自定义记录存于表中。将成绩及格的所有行插入到成绩总表中。 create table 成绩总表(学号 char(6), 课程编号 char(3),成绩 numeric(3,1) select * from 成绩表 where 成绩=60,insert

41、into 成绩总表 课堂作业:自定义一个统计表,将01系的班级存入其中,5.9 数据插入的运用,61,使用 UPDATE更新数据 【例】修改期末成绩表的总分字段值为0 update 期末成绩表 set 总分=0 【例】将成绩表中不及格的成绩加5分 update 成绩表 set 成绩=成绩+5 where 成绩60 课堂作业: 将“大学英语”和“高等数学”的学分改为5 修改课程表(KC)中01系考试课程的学时比原来多10个,5.9 数据更新的运用,62,使用 UPDATE更新数据 【例】使用from子句更改:将“社会科学部”的学时加10 update 课程信息表 set 学时=学时+10 fro

42、m 系部表 inner join 课程信息表 on 系部表.系部编号=课程信息表.系部编号 where 系部名称=社会科学部 或者: update 课程信息表 set 学时=学时+10 where 系部编号=(select 系部编号 from 系部表 where 系部名称=社会科学部),5.9 数据更新的运用,63,DELETE删除行 DELETE 语句可删除表或视图中的一行或多行,不带参数则将删除表中所有行。 【例】删除学时低于50的课程信息 DELETE FROM KC WHERE 学时50 课堂作业: 删除“王丽萍”老师的课程信息 删除来自贵州姓杨的同学信息,5.9 数据删除的运用,64,DELETE删除行 【例】删除陈倩的成绩信息。 DELETE FROM CJ WHERE 学号=(SEELCT 学号 FROM XS WHERE 姓名=陈倩) 【例】删除社会科学部的课程信息 DELETE FROM KC WHERE 系部编号=(SELECT 系部编号 FROM XB WHERE 系部名称=社会科学部) 课堂作业:删除有课程不及格的学生信息。,5.9 数据删除的运用,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1