SQL语句组合
教师(编号,姓名,出生日期,学历) 课程(编号,名称,学分)
工资(教师编号,日期,应发工资,扣款) 授课安排(授课ID,教师编号,授课课程,扣款)
--1查询年龄在35岁以下教授“数据库原理”的教师有几位 select count(*) as 教师个数 from 授课安排 join 教师
on 授课安排.教师编号=教师.编号 join 课程
on 课程.编号=授课安排.授课课程 where year(getdate())-year(出生日期)<35 and 课程.名称='数据库原理'
--2将“张哓晖”老师教授课程“数据库原理”的教室由原来的“H1210”调整到“H3210” update 授课安排 set 教室='H3210'
where 授课课程='数据库原理' and 教师.姓名=
(select 教师.姓名
from 教师 join 授课安排
on 教师.编号=授课安排.教师编号 where 教室='H1210')
--3查询教授数据库相关课程的教师信息,即课程名称含有“数据库”的课程,先按出生日期降序、再按学历升序显示教师编号、姓名、出生日期、学历,教师信息相同的只显示一次 select 教师编号,姓名,出生日期,学历 from 教师 join 授课安排
on 授课安排.教师编号=教师.编号 join 课程
on 授课安排.授课课程=课程.编号 where 课程.名称 like '%数据库%' order by 出生日期 desc,学历
--4查询教授“C语言程序设计”和“数据库原理”两门课程的教师工资信息,显示教师编号,日期,实发工资,其中实发工资为应发工资为应发工资减去扣款。 select 教师编号,日期,实发工资 as 应发工资-扣款 from 授课安排 join 工资
on 授课安排.教师编号=工资.教师编号
where 授课课程='C语言程序设计'or 授课课程= '数据库原理'
--5为“张哓晖”老师安排编码为“C105”课程的授课教室在“H1104” update 授课安排 set 教室='H1104' from 授课安排,教师
1
where 课程.编号='C105' and 教师.姓名='张哓晖' and 授课安排.教师编号=教师.编号 --6查询每门课程的最小授课ID号,显示课程的编号、名称和最小授课ID select 课程.编号,名称,min(授课ID) as 最小授课ID from 授课安排,课程
where 授课安排.授课课程=课程.编号
group by 名称,编号 --7为讲授课程编号为“C105”的教师制作本月工资表,[日期]取当前时间,[应发工资]和[扣款]取‘2011-01-01’对应“工资”表数据。 select 教师编号,getdate() as 日期,应发工资= (select 应发工资 from 工资 where 日期='2011-01-01'),扣款= (select 应发工资 from 工资 where 日期='2011-01-01') from 工资 join 授课课程
on 工资.教师编号=授课安排.教师编号 join 课程
on 课程.编号=授课安排.授课课程 where 课程.编号='C105'
--8删除教授课程编号为“C101”的教师对应于2011年1月1日的工资数据。 delete from 工资 where应发工资=
(select 应发工资 from 工资 where 日期='2011-01-01') and 扣款=
(select 应发工资 from 工资 where 日期='2011-01-01') and 课程.编号='C105'
2