系列文章目录
数据库实验5
数据库实验6
文章目录
- 数据库实验5
- 数据库实验6
1.实验目的
(1)掌握SQL插入、修改、删除语法。
(2)掌握SQL Server查询分析器的使用方法;
2.实验内容
1. 创建1门课程“CS-001”,其名称为“Weekly Seminar”,学分为0.5
2.创建课程“CS-001”在2009年秋季学期的一个课程段,sec_id设置为1
3.让Comp. Sci.系的每个学生选修上述课程段
4.给Comp. Sci.系每位教师涨10%的工资
5.把每个tol_cred属性上取值超过100的学生作为同系的教师插入,工资为10000美元
6.删除所有未开设过(未出现在section表中)的课程
7.删除所有在Taylor教学楼工作的教师信息
8.删除工资低于大学平均工资的教师信息
三、实验步骤
1. SQL查询语句分析与设计。
2. 查询分析器中撰写语句
3. 查询并观察执行结果
4. 撰写查询报告
5. 完成上述8个查询实验(截图并说明,有SQL语句,有运行结果)
四、实验设备及软件环境:
PC机,SQL Server 2019
五、实验过程及结果:
名称:DXJG数据库。
实验结果:
1..创建1门课程“CS-001”,其名称为“Weekly Seminar”,学分为0.5
insert into course
value('001','Weekly Seminar',NULL,0.5);
2.创建课程“CS-001”在2009年秋季学期的一个课程段,sec_id设置为1
insert into section
values('001','1','Fall',2009,NULL,NULL,NULL);
3.让Comp. Sci.系的每个学生选修上述课程段
insert into takes
select ID,'001','1','Fall',2009,NULL
from student
where dept_name='Comp.Sci.';
4.给Comp. Sci.系每位教师涨10%的工资
update instructor
set salary=salary*1.1
where dept_name='Comp.Sci.';
5.把每个tol_cred属性上取值超过100的学生作为同系的教师插入,工资为10000美元
insert into instructor(ID,name,dept_name,salary)
select ID,name,dept_name,10000.00
from student
where tot_cred>=100;
6.删除所有未开设过(未出现在section表中)的课程
delete from course
where course_id not in(select course_id
from section);
7.删除所有在Taylor教学楼工作的教师信息
delete from instructor
where dept_name in(select dept_name from department where building='Taylor');
8.删除工资低于大学平均工资的教师信息
delete from instructor
where salary<(select avg(salary)
from instructor);
一、实验目的:
(1)掌握SQL函数、过程、触发器语法;
(2)掌握SQL函数、过程、触发器的使用方法。
二、实验内容:
1.创建一个SQL函数,用于统计特定年度和学期,讲授课程的每个教师,所教授不同学生的总人数。
2.创建一个SQL存储过程,实现上述函数表达的内容
3.为了维护关系student的tot_cred属性,创建与关系takes的插入操作相关的触发器,在takes更新时,使其对于能够影响tot_cred值的所有更新都有效
三、实验设备及软件环境:
SQL Server Management Studio 18
- 实验过程及结果:
1.创建一个SQL函数,用于统计特定年度和学期,讲授课程的每个教师,所
教授不同学生的总人数。
2.创建一个SQL存储过程,实现上述函数表达的内容
3.为了维护关系student的tot_cred属性,创建与关系takes的插入操作相关的触发器,在takes更新时,使其对于能够影响tot_cred值的所有更新都有效
create TRIGGER Statistics_count ON takes
FOR UPDATE
AS
--声明变量
DECLARE @ID varchar(5)
DECLARE @cridit numeric(2,0)
DECLARE @COURSE_ID varchar(8)
declare @ograde varchar(2)
declare @ngrade varchar(2)
--提取插入的数据
SELECT @ID=ID,@COURSE_ID=course_id,@ngrade=grade FROM inserted
select @ograde=grade from deleted
--提取课程学分
SELECT @cridit = course.credits
FROM takes join course ON (TAKES.course_id = Course.course_id)
WHERE TAKES.ID = @ID and course.course_id=@COURSE_ID
--更新总学分
if (@ograde = 'F' or @ograde is null) and (@ngrade != 'F' and @ngrade is not null)
begin
UPDATE Student SET tot_cred = tot_cred + @cridit
WHERE ID = @ID
end
GO
总结
以上是数据库56的实验,仅供参考。。。