数据库教案 项目二 数据库的查询.docx
《数据库教案 项目二 数据库的查询.docx》由会员分享,可在线阅读,更多相关《数据库教案 项目二 数据库的查询.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目二数据库的查询一、教学目标1 .掌握学习SQL基本查询。2 .辨析排序order by与分组group by。3 .学会聚合数据查询与分组统计数据。4 .掌握连接查询、组合查询。5 .了解插入、更新。二、课时分配6 项目共6个任务,安排6课时。三、教学重点通过本项目的学习,让学生了解学习SQL基本查询,掌握通配符“*”的使 用,学习多个字段拼接,掌握WHERE子句使用方法;辨析排序order by与分组 group by,学习INTO子句和TOP子句;掌握并学会在数据库information09da2 中,利用排序ORDER BY和分组GROUP BY进行SQL查询操作。按学生的姓名拼音
2、排序,显示学生的序号、姓名、性别、户口所在地。分别统计男女在校住宿生人 数和住宿生总数。统计户口在同一城市的学生人数,并按统计的人数从少到多排 序;学会聚合数据查询以及分组统计数据;学会对学生成绩的聚合数据查询,利 用数据库informationl0da5da6,根据数据表“信息10大5”,对表中的数据进 行聚合数据查询;利用数据库information09da2中的数据表“户口和住宿表”, 进行分组统计查询;掌握什么是连接查询,分清等值连接与非等值连接、自身连 接、外连接、嵌套查询;掌握在SQL Server 2005中,将多个查询的结果放在一起,以 一个查询结果的形式显示出来,则可以使用U
3、NION关键字把多个SELECT连接起来。每 个SELECT查询语句应当有相同数量的字段,若字段个数不等,可以使用NULL来代替; 每个查询语句中相应的字段的类型必须相互兼容,若不兼容,可使用类型转换函数、强 制转换字段类型;学会INSERT语句、批量插入数据,将成绩不及格的学生信息批量插 入到新建的数据表中。四、教学难点1 .掌握SQL基本查询。2 .辨析排序order by与分组group by的区别。表10-8教师工资表namesexsalary孙莉女1995李强男2598王明军男2196张丰波男3098吴伟林男2880程序清单如下:SELECT x. name AS 姓名,x. sal
4、ary AS 工资,y. salary AS 李强工资FROM TeacherSalary as x, TeacherSalary as yWHERE x. salaryy. salary AND y. name=李强需要给表起别名以示区别,由于所有属性都是同名属性,因此必须使用别名前缀。 查询结要如表10-9所示。表10-9比“李强”教师高的教师工资表姓名资李强工资张丰波30982598吴伟林28802598三、外连接普通连接操作只输出满足连接条件的元组;外连接操作以指定表为连接主体,将主体表 中不满足连接条件的元组一起输出。可以分为左外连接和右外连接,左外连接的结果集 包括LEFT OUT
5、ER子句或LEFT OUTER JOIN中指定的左表的所有行,而不仅仅是连接列 所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所 有选择列表列均为空值。右外连接RIGHT JOIN或RIGHT OUTER JOIN将返回右表的所 有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。【例6】在学生表10-1中增加两个学生,分别为“刘艳”和“刘希妍”,如表10-10 所示。选课表sc如表10-2所示。表10 - 10 学生表studentsnosnamessexsagesdept2012010101陈路男24计算机2012010102张亮男二23计算机20120
6、11102张月女22创意2012011103刘艳女23创意2012011104刘希妍女22创意左外连接查询学生表student各选课表sc。SELECT student.sno, sname, ssex, sage, sdept, eno, score FROM student LEFT OUTER JION sc ON (student.sno=sc.sno) 执行结果如表10-11所示。表10-11 左外连接查询snosnamessexsagesdeptenoscore2012010101陈路男24计算机1952012010101陈路男24计算机2982012010102张亮男23计算机2
7、962012011102张月女22创意3982012011102张月女22创意2802012011103刘艳女23创意NULLNULL2012011104刘希妍女22创意NULLNULL四、嵌套查询一个SELECT FROM WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的查询为嵌套查询。1 .带有IN的子查询子查询在上一级查询处理之前求解,子查询的结果用于建立父查询的查找条件。【例7】运用表10-1和表10-2,查询选修课程号为2的学生名单。SELECT snameFROM studentWHERE sno IN(SELECT sno
8、FROM scWHERE cno-2)【例8】查询与“陈路”同系的学生名单若用分步完成:(1)确定“陈路”所在的系名:SELECT sdeptFROM studentWHERE sname二陈路结果为“计算机”(2)查找所有在“计算机”学生名单:SELECT sno, sname, sdeptFROM studentWHERE sdept二计算机结果如表10-12所示。表10-12计算机系的学生snosnamesdept2012010101陈路计算机2012010102张亮计算机把前面两步合并在一起的查询为: SELECT sno, sname, sdept FROM studentWHERE
9、 sdept IN(SELECT sdeptFROM studentWHERE sname二陈路)本例的IN可以用“二”代替。2 .带有比较运算符的子查询【例9】查询超出课程平均成绩的学生号和课程号。SELECT sno, enoFROM SC xWHERE score = (SELECT avg (score)FROM SC yWHERE y. sno=x. sno)3 .带有ANY、SOME或ALL的子查询【例10】查询其他系中比计算机系所有学生年龄都要小的学生姓名和年龄。SELECT sname, sageFROM studentWHERE sage ALL (SELECT sageFR
10、OM studentWHERE sdept二计算机)AND sdept计算机运用上述的表101,可以查询出两位“张月”和“刘希妍”的符合条件,她们的年龄都 比计算机系所有学生的年龄都要小。用聚合函数改写为:SELECT sname, sageFROM studentWHERE sage ALL (SELECT MIN (sage)FROM studentWHERE sdept二计算机)AND sdept计算机4 .带EXISTS的子查询不需要返回具体的查询数据,而只关心是否有返回值,即返回True或False。【例11】运用表107和10-2,查询没有选修1号课程的学生姓名。SELECT sn
11、ameFROM studentWHERE NOT EXISTS (SELECT *FROM scWHERE sno=student, sno AND cno=l)任务十一、组合查询在SQL Server 2005中,将多个查询的结果放在一起,以一个查询结果的形式显示出来, 则可以使用UNION关键字把多个SELECT连接起来。每个SELECT查询语句应当有相同数 量的字段,若字段个数不等,可以使用NULL来代替;每个查询语句中相应的字段的类 型必须相互兼容,若不兼容,可使用类型转换函数强制转换字段类型。UNION缺省在合 并结果集后消除重复项,UNION ALL指定在合并结果集后保留重复项。U
12、NION结果集中 的列名总是等于UNION中第一个SELECT语句中的列名。【例1】 网络售书情况表Internetinfo如表11-1所示,实体店面售书表Storeinfo 如表11-2所示,现在需要查询所有售书的订单日期。表11-1网络售书情况网络名 InternetName)书名(BookName)订单日期(OrderDate)发货口期(OrderDate)当当网蛙2012-10-112012-10-12京东商城丰乳肥臀2012-10-122012-10-13表11-2实体店面情况实体店面名称(StoreName)书名(BookName)订单日期(OrderDate)发货日期(Order
13、Date)鼓楼新华书店蛀2012- 10-122012-10-14观前街新华书店丰乳肥臀2012-10-132012-10-15SELECT OrderDate FROM InternetinfoUNIONSELECT OrderDate FROM Storeinfo 操作结果如表11-3所示。表11 -3 售书UNION结果SELECT OrderDate FROM InternetinfoUNION ALLSELECT OrderDate FROM Storeinfo操作结果如表11-4所示。表11 -4 售书UNION ALL结果订单日期(OrderDate)2012-10-11 201
14、2 -10-12 2012-10-12 2012-10-13任务十二.插入.更新在SQL Server 2005中,有时为了方便,需要将查询结果保存起来。在SELECT子句的 后面,FROM子句的前面加上了一个INTO关键字,关键字的后面紧跟用于保存查询结果 的新表的名字。SELECT * (或字段列表)INTO新表名FROM表名一、INSERT 语句INSERT语句用于向数据库表或者视图中加入一行数据。INSERT语句的语法形式如下: INSERT INTO table_or_view (column_list) VALUES(data_values) 其中,table_or_view是指要
15、插入新记录的表或视图,column_list是可选项,指定待 添加数据的列,VALUES子句指定待添加数据的具体值。列名的排列顺序不一定要和表定 义时的顺序一致。但当指定列名表时,VALUES子句值的排列顺序必须和列名表中的列名 排列顺序一致,个数相等,数据类型一一对应。在进行数据插入操作时须注意以下2点:(1)在VALUES子句中,必须用逗号将各个数据分开,字符型数据要用单引号括起来。(2)有时并不需要向表中插入完整的行,而需要将数据只插入到几个指定的字段内, 则在表名后加上字段列表,且VALUES子句中值的排列顺序要和表中各属性列的排列顺 序一致。【例1】将姓名为夏总的相关信息插入到表中。
16、INSERT INTO student (sno, sname, sex, birth, depart)VALUES(0025,夏总,男,1958-10-01,信息工程系)(3)将VALUES子句中的值按照INTO子句中指定列名的顺序插入到表中。(4)对于INTO子句中没有出现的列,则插入的新记录在这些列上将取空值。但在表 定义时有NOT NULL约束的属性列不能取空值,例如学号不能为空。二、UPDATE 语句UPDATE语句用于修改数据库表或视图中特定记录或者字段的数据,其语法形式如下:UPDATE table_or_viewSET = , column二expression WHERE 其
17、中:table_or_view是指要修改的表或视图;SET子句给出要修改的列及其修改后的 值,其中column为要修改的列名,expression为其修改后的值;WHERE子句指定待修 改的记录应当满足的条件,WHERE子句省略时,则修改表中的所有记录。【例2带有WHERE条件的修改语句。UPDATE student, addressSET city=SuzhouWHERE student, address =1【例3】将所有学生年龄增加1岁。UPDATE S SET age=age+l【例4】把讲授C2课程的教师的工资增加500元。教师基本情况表是T表,其结构为T (tno, tn, sex
18、, age, prof, sal, dept),分别表示教师 的编号、姓名、性别、年龄、职称、工资和系别。教师授课表是TC表,其结构为TC(tno, eno) 分别表示教师的编号,课程编号。UPDATE TSET sal=sal+500WHERE tno IN(SELECT T. tnoFROM T, TCWHERE T.tno=TC. tno AND TC.cno=C2)例5在ssts数据库中,把课程“数据库”的学生成绩每人增加1分。 UPDATE选课表SET成绩=成绩+1WHERE课程号IN (SELECT选课表.课程号FROM选课表,课程表WHERE选课表,课程号二课程表.课程号AND课
19、程表.课程名二数据库)3 .掌握聚合数据查询与分组统计数据。4 .掌握连接查询、组合查询、插入与更新。五、教学内容任务七SQL基本查询在SQL Server 2005中,maste数据库是默认的当前数据库,所以在编写操作SQL语句 时,先使用USE语句打开要使用的表所在的数据库,否则就会出现“对象名无效”提示。 一、单表查询1 .通配符“*”的使用在SELECT语句中,可以使用通配符来显示所有的字段。【例1】查询学生信息表中所有学生的信息。USE information09da2SELECT *FROM学生信息表SELECT后面列出要查询的字段名,字段之间要用英文逗号”隔开。如果要去掉重复 的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库教案 项目二 数据库的查询 数据库 教案 项目 查询
限制150内