数据库应用程序设计解答
最新问答
- 多啦X梦521
二、 更新teachers_courses表:请写出符合下列要求的SQL语句(不要仅针对给出的),把所有SQL语句放入文本文件Exam02.SQL中提交。
1. 目前的teachers_courses中只包含了必修课的教师任课情况,假设所有编号IT开始的都上了所有编号开始为SPE的选修课,请在teachers_courses插入相应的记录,写出insert语句。
insert into teachers_courses
select teachers.teacherid,courses.courseid, ‘’ from teachers,courses
where teachers.teacherid like 'IT%' and courses.courseid like 'SPE%' and courses.attri=1
2. 假设学校规定年龄小于25岁(当前年份-出生年份)的教师不能上必修课,请删除teachers_courses中的相应记录,写出delete语句。
Delete from teachers_courses where teacherid in (select teacherid from teachers where year(getdate())-year(birthday)<25) and courseid in (select courseid from courses where attri=1)
3. 教师的工作量为其担任教学课程的学分总和,写出更新teachers.workload的update语句。
update teachers set workload=(select sum(courses.grade)
from teachers_courses,courses
where teachers_courses.courseid=courses.courseid
and teachers_courses.teacherid=teachers.teacherid)
三、 写出select语句,实现下列查询:把所有SQL语句放入文本文件Exam03.SQL中提交。
1. 查询所有教师的任课情况,包括教师编号、教师姓名、性别、任课课程名、学分,按教师性别排序,女教师在前。(没有任课的教师可以不显示)。性别显示“男”和“女”。
select a.teacherid,a.teachername,
case when a.sex=0 then '男' when a.sex=1 then '女' end,
b.coursename,b.grade
from teachers a,courses b,teachers_courses c
where a.teacherid=c.teacherid and b.courseid=c.courseid order by 3 desc
2. 上述查询要求包括没有任课的教师编号和姓名,在任课课程名中显示“未任课”,学分列显示为0。
select a.teacherid,a.teachername,
case when a.sex=0 then '男' when a.sex=1 then '女' end,
isnull(c.coursename,'未任课'),isnull(c.grade,0)
from (teachers a left join teachers_courses b on a.teacherid=b.teacherid) left join courses c on b.courseid=c.courseid
order by 3 desc
3. 查询所有没有任课的教师编号、姓名和性别。
select teacherid,teachername,sex from teachers where teacherid not in (select teacherid from teachers_courses)
4. 查询每个教师的总的学时数,包括教师编号、姓名、性别、年龄(当前年份-出生年份)和总学时
select a.teacherid,a.teachername,a.sex,year(getdate())-year(a.birthday), sum(b.grade) from teachers a,courses b,teachers_courses c
where a.teacherid=c.teacherid and b.courseid=c.courseid
group by a.teacherid,a.teachername,a.sex,year(getdate())-year(a.birthday)
5. 对上述查询,仅查询总学时数小于8的并且年龄小于50岁的教师的编号、姓名、性别、年龄和总学时。
select a.teacherid,a.teachername,a.sex,year(getdate())-year(a.birthday), sum(b.grade) from teachers a,courses b,teachers_courses c
where a.teacherid=c.teacherid and b.courseid=c.courseid and year(getdate())-year(a.birthday)<50
group by a.teacherid,a.teachername,a.sex,year(getdate())-year(a.birthday)
having sum(b.grade)<8
6. 查询总学时最多的教师编号,姓名和总学时(可使用视图)。
create view sumgrade (teacherid,grade)
as
select c.teacherid,sum(b.grade) from courses b,teachers_courses c
where b.courseid=c.courseid
group by a.teacherid
select teacherid,teachername,grade from teschers,sumgrade
where teachers.teacherid=sumgrade.teacherid and grade=(select max(grade) from sumgrade)
或
select a.teacherid,a.teachername,sum(b.grade)
from teachers a,courses b,teachers_courses c
where a.teacherid=c.teacherid and b.courseid=c.courseid
group by a.teacherid,a.teachername
having sum(b.grade)=(select max(grade) from sumgrade)
四、 编写表值函数dept_teachlist,参数为部门编号,返回该部门所有教师的教师编号、教师姓名、必修课总学时、选修课总学时(不包括未任课的教师)。写出验证该函数的select语句(参数为‘IT01’)。把完成的程序放入文本文件Exam04.SQL中提交。
CREATE FUNCTION dept_teachlist (@deptid CHAR(6)) RETURNS @tb_deptlist TABLE (teacherid1 CHAR(6) PRIMARY KEY,teachername varchar(10),num1 INT,num2 INT) AS
BEGIN
--插入该部门教师信息
INSERT into @tb_deptlist
SELECT teacherid,teachername,0,0 FROM teachers WHERE departmentid=@deptid
--计算必修课总学时数
UPDATE @tb_deptlist SET num1=(SELECT sum(b.grade) FROM courses b,teachers_courses c
WHERE b.courseid=c.courseid and b.attri=0 and b.teacherid=teacherid1)
--计算选修课总学时数
UPDATE @tb_deptlist SET num2=(SELECT sum(b.grade) FROM teachers a,courses b,teachers_courses c
WHERE a.teacherid=c.teacherid and b.courseid=c.courseid and b.attri=1 and a.teacherid=teacherid1)
RETURN
END
select * from dept_teachlist('IT01')浏览 290赞 156时间 2023-07-12
相关问答
-
数据库应用程序设计解答
-
数据库应用程序 所有电脑上都要装数据库吗
-
数据库课程设计。
-
急~!跪求 数据库设计 程序+论文 3000-4000字
-
会员订单管理程序数据库如何设计
-
求数据库课程设计。
-
急需一份SQL数据库的程序跟设计论文
-
数据库课程设计论文
-
亲!急求电大数据库应用课程设计毕业论文?
-
VF数据库课程设计论文
-
数据库应用论文
-
Access数据库技术与应用的Access数据库技术与应用
-
如何设计制作课程管理数据库应用系统的菜单论文
-
毕设系统数据库设计
-
求SQL SEREVER 2000 数据库论文 和VB程序设计论文 题目不限....
-
《数据库应用》课程主讲老师是谁?
-
access数据库实际应用
-
access数据库应用难吗?
-
MySql数据库课程设计(学生管理系统)
-
Access数据库应用的介绍