项目3 “学生管理系统”中查询的应用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
P3
教学重难点及自主学习
教学重难点
单表查询和多表查询; 子查询和分组查询; 查询在修改信息页面和登录页面中的应用。
自主学习
设计邮箱系统的“用户登录”页面,编写代码实现登
录功能,登录后页面转向主页面。
数据库开发与案例教材
教师
目录
P4
任务1 单表查询和多表查询 1.1 查询数据介绍
sno
sname sex 男 男 男
001 张三 002 李四 003 王五
85
student
stu_course
course
数据库开发与案例教材
教师
目录
P 17
任务2 子查询和分组查询
2.1 子查询
1、基本语法格式
select 字段名列表 from 表名列表 where 字段名 in|not in|关 系表达式 any|关系表达式 all(select 字段名 from 表名列表 where 条件表达式) 当一个查询作为另一个查询的条件时,称为子查询
4、完全连接(full
5、交叉连接(cross
数据库开发与案例教材
教师
目录
P 16
任务2 子查询和分组查询
2.1 子查询
找出没有选课的学生的姓名、性别
sno cno score 001 001 96 002 002 69 003 001 85 cno 001 001 002 cname SQL C tea 96 69
7)保存查询结果到数据表(into
表名) by)
Select * into stu_new from stu where sex=‘男’
Select * from stu order by age Select * from stu order by birthday desc
教师
8)对查询结果进行排序(order
数据库开发与案例教材
教师
目录
P 10
任务1 单表查询和多表查询 1.4 多表查询
当from后表名多于1个时称为多表查询,是数据库中最主
要的查询方式 为了保证数据的准确性,多表查询需要带上连接条件,连 接条件是使用表之间的关联字段将表逻辑上串联成一串 连接条件有内连接,左连接,右连接,完全连接、交叉连 接等形式
教师
10)in查询
数据库开发与案例教材
目录
P9
任务1 单表查询和多表查询 1.3 单表查询示例及查询其他关键字的使用 11)集合函数的统计功能
sum():求和,avg():平均,max():最大,min():最 小,count():计数 select sum(score),avg(score),max(score),min (score),count(*) from stu_course 查询stu_course表中score的和、平均、最高分、最低分以 及记录条数 select count(*),max(birthday) from student where sex=‘男’ 统计出student表中男生的人数和birthday的最大值
目录
P 13
任务1 单表查询和多表查询 1.4 多表查询
1、内连接(inner
j生的姓名及所选课程课程名、分数和教师姓名(数据来自 4张表) select sname,cname,score,tname from student ,stu_course ,course ,teacher where student .sno =stu_course .sno and course .cno=stu_course .cno and teacher .tno=course .tno 等价于 select sname,cname,score,tname from student inner join stu_course on student .sno =stu_course .sno inner join course on stu_o =o inner join teacher on teacher.tno=course.tno
teacher表结构及数据 course表结构及数据
student表结构及数据
stu_course表结构及数据
数据库开发与案例教材
教师
目录
P5
任务1 单表查询和多表查询 1.1 查询数据介绍
student与stu_course表通过sno course与stu_course表通过cno course与teacher表通过tno
数据库开发与案例教材 教师
目录
P6
任务1 单表查询和多表查询 1.2、 查询语句的基本格式
SELECT
<字段列表> FROM <表名/视图名列表> [WHERE 条件表达式]
1.3 单表查询示例及查询其他关键字的使用
1)查询部分列:select
sno,sname from stu 2)查询全部列(*):select * from course 3)设置字段别名(as 别名)
网络数据库案例与应用
授课教师: 联系电话: E – Mail:
项目三 “学生管理系统”中查询的应用
任务1 单表查询和多表查询 任务2 子查询和分组查询
任务3 使用视图
任务4 设计并实现“修改学生基本信息页面”
任务5 设计并实现“管理员用户登录页面”
任务6 存储过程设计
数据库开发与案例教材
数据库开发与案例教材
教师
目录
P 14
任务1 单表查询和多表查询 1.4 多表查询
2、左连接(left
join)
将左表数据全部显示,右表在左表中有对应值则显示,没有显示 NULL select * from student left join stu_course on student .sno=stu_course .sno
2、解决问题:
select sname,sex from student where sno not in (select sno from stu_course) 同类问题:查询没有学生选修的课程信息
数据库开发与案例教材
教师
目录
P 18
任务2 子查询和分组查询
2.2 分组查询(GROUP BY)
select sno as 学号, 姓名 =sname from stu
4)查询经过计算的值 Select
sno,sname,age+1 from stu
数据库开发与案例教材
教师
目录
P7
任务1 单表查询和多表查询 1.3 单表查询示例及查询其他关键字的使用
5)去除重复记录(DISTINCT)
等价于
select sname,cname,score from student inner join stu_course on student.sno =stu_course .sno inner join
course on stu_course .cno=course .cno
数据库开发与案例教材 教师
数据库开发与案例教材
教师
目录
P 11
任务1 单表查询和多表查询 1.4 多表查询
1、内连接(inner
join)
最简单的内连接条件表示 where 表1.连接字段=表2.连接字段 正规内连接条件表示 表1 inner join 表2 on 表1.连接字段=表2.连接字段 示例:查询“彭佳乐”同学选修课程的分数 (数据来自2张表) select score from student,stu_course where sname=‘彭佳 乐’ and student.sno=stu_course.sno 等价于 select score from student inner join stu_course on student .sno= stu_course .sno where sname='彭佳乐'
1、GROUP
BY 字段或计算字段 [HAVING 条件]
按照字段分割表中数据,将值相同的分成一组 select count(sno) from stu_course group by sno 统计各学号在stu_course表中出现的次数 select sno, count(sno) as 选修门数 from stu_course group by sno having COUNT(sno)>=2 分组后条件限制,不可用where实现 查询选课最多的学生的选课门数 查询每门课程的选修量
sno任务1单表查询和多表查询14多表查询3右连接rightjoin4完全连接fulljoin是左连接与右连接的综合会将左表右表的数据全部显示有对应的就显示无对应的以null填充5交叉连接crossjoinfromteachercrossjoincoursefromteachercourse任务1单表查询和多表查询任务2子查询和分组查询21子查询找出没有选课的学生的姓名性别snosnamesex001张三002李四snocnoscore001001960020026900300185cnocnametea001sql9600169002aspnet85studentstucoursecourse任务2子查询和分组查询21子查询select字段名列表from表名列表where字段名系表达式any关系表达式allselect字段名from表名列表where条件表达式selectsnamesexfromstudentwheresnoselectsnofromstucourse任务2子查询和分组查询22分组查询group字段或计算字段having条件selectcountsnofromstucoursegroupselectsnocountsno选修门数fromstucoursegroupsnohavingcountsno2任务3使用视图31视图概念视图是基于一个或多个基本数据表而生成的一个虚拟表仅存储了视图的定义没有存储实际数据数据存储在基32创建视图任务3使用视图32创建视图任务3使用视图32创建视图createview视图名视图字段名1视图字段名2
数据库开发与案例教材
教师
目录
P 12
任务1 单表查询和多表查询 1.4 多表查询
1、内连接(inner
join)
在多表查询时,表数量越多,连接条件也越多,总之需要将表在 逻辑上串成一串 查询学生的姓名及所选课程课程名和分数 (数据来自3张表) select sname,cname,score from student ,stu_course ,course where student .sno =stu_course .sno and course .cno=stu_course .cno
数据库开发与案例教材
目录
P8
任务1 单表查询和多表查询 1.3 单表查询示例及查询其他关键字的使用
9)模糊查询(like)
%:表示若干个任意字符。 _:表示单个任意字符。 [] :表示方括号里列出的任意一个字符。 [^]:任意一个没有在方括号里列出的字符。 select sno,sname FROM stu where sname like '张%' select sno,sname FROM stu where sname like ‘%张%' select * from student where sno in(‘2012001’,’2012002’) 等价于select * from student where sno=‘2012001’ or sno=‘2012002’
Select distinct sno from stu_course Select sno from stu_course 2条语句执行后有何不同
6)返回前面若干条记录
(TOP n ︱TOP n PERCENT)
Select top 2 * from stu Select top percent 2 * from stu
3.2 创建视图
1、图形化方式
数据库开发与案例教材
教师
目录
P 21
任务3 使用视图
3.2 创建视图
2、命令方式
CREATE VIEW 视图名[(视图字段名1,视图字段名2,…)] [WITH ENCRYPTION] AS SELECT 查询语句 [WITH CHECK OPTION] 说明:WITH ENCRYPTION关键字表示对视图加密 create view VIEW_stu1 as select student.*,score from student inner join stu_course on stu_course .sno=student .sno where score <60
教师
P2
教学目标
能够使用语句完成单表、多表数据的查询; 对于各种查询任务,能够用分组、集合函数等查 询选项来实现; 能够结合查询技术完成修改信息页面的代码书写; 能够根据登录流程,结合查询完成登录页面代码 的书写; 能够设计必要的存储过程、触发器和函数。
数据库开发与案例教材
教师
2、课堂案例
数据库开发与案例教材
教师
目录
P 19
任务3 使用视图
3.1 视图概念
视图是基于一个或多个基本数据表而生成的一个虚拟表,
仅存储了视图的定义,没有存储实际数据,数据存储在基 本表中。
3.2 创建视图
1、图形化方式
数据库开发与案例教材
教师
目录
P 20
任务3 使用视图
数据库开发与案例教材
教师
目录
P 15
任务1 单表查询和多表查询 1.4 多表查询
3、右连接(right
join)
join) join)
是左连接的逆运算 是左连接与右连接的综合,会将左表、右表的数据全部显示,有 对应的就显示,无对应的以NULL填充 是表中数据的所有组合可能。 select * from teacher cross join course 等价于 select * from teacher , course