数据库实习三数据更新

文章描述了一系列数据库操作,包括学生刘家顺的退学记录删除、田小亮同学的专业转换、删除不及格选课、教师信息插入、课程表更新、创建视图展示教学和供应数据等,涉及SQL语句和数据库管理的各个环节。
摘要由CSDN通过智能技术生成

实验内容

(1)学生“刘家顺”要退学,请删除该学生的所有记录,包括选课记录和学生记录。

delete from sc
where sno in 
(select sno 
from student
where sname='刘家顺');

delete from student
where sname='刘家顺';
commit;
//原stduent表中共有459条记录,执行删除操作后,现Student表中还剩458条记录;在删除时需要先删除sc表,因为sc表选课信息参照了student表中的sno,并且需要一起执行commit强制执行;

(2)田小亮同学要转专业,他的学号为103465,将该同学的专业由原来的“软件工程”改为“计算机科学与技术”,班级由原来的“软工3班”修改为“计算机1班”。

update student
set smajor='计算机科学与技术',sclass='计算机1班'
where sno='103465';
commit;

 (3)删除选修了“嵌入式系统与应用”但没有及格的选课记录。

delete from sc
where cno in
(select cno
from course
where cname='嵌入式系统与应用') and grade<60;
commit;

(4)将元组(1203076,吕一鸣,男,1985/11/8,讲师,体育部)插入教师关系。

insert into teacher
values ('1203076','吕一鸣','男',to_date('1985/11/8','yyyy/mm/dd'),'讲师','体育部');

((5)在course表中插入以下两门课程信息:

课程号:3094217,课程名:图与网络,课程学分:2,课程性质:选修,课程学时:32,开课学期:6

课程号:3094215,课程名:智能搜索与推荐技术,课程学分:2,课程性质:选修,课程学时:32,开课学期:7

insert all 
into course values ('3094217','图与网络','2','选修','32','6')
into course values ('3094215','智能搜索与推荐技术','2','选修','32','7')
select * from dual;
commit;
//多条语句插入

(6)创建名为xg_view的视图,在视图中显示所有信息工程学院教师的授课信息,包括教师姓名,职称,所授课程名称,授课班级,授课学期。 

create or replace view xg_view
as
select tname,ttitle,cname,sclass,semester
from teacher,course,tc
where teacher.tno=tc.tno and tc.cno=course.cno ;
commit; 

(7)创建每个学生已修课程总学分的视图,视图名为xf_view,要求在视图中显示学生学号、姓名和总学分。

create or replace view xf_view
as
select sc.sno,sname,sum(credit)sum_credit
from student,sc,course
where sc.sno=student.sno and sc.cno=course.cno and grade>60
group by sc.sno,sname;
commit;

(8)在创建的视图中查询大数据2班每位学生已修的总学分。

select sum_credit
from xf_view,student
where xf_view.sno=student.sno and sclass='大数据2班'; 

 (9)在系统表user_updatable_columns中查看视图xf_view是否可以更新,如果不能分析并写出不能更新的原因。

select *
from user_updatable_columns
where table_name='XF_VIEW';
执行结果:
//不能更新的原因是:xf_view视图是基于3个基本表导出的,并且在视图中有包含关系表达式的属性列,若在视图中进行更新,在基本表中无法找到对应的属性列进行更新;

2.(1)现有一供应商,代码为s9、姓名为英特尔、所在城市西安,供应情况如下:供应零件p5给工程j7数量为600,供应零件p4给工程j4数量为500,请将此供应商的信息和供应信息插入数据库。

insert into s values('s9','英特尔','西安',null);

(2)请将北京供应商的供应数量加150。

update spj
set qty=qty+150
where sno in
(select sno
from s
where city='北京');

(3)删除零件表中所有颜色为红的颜色信息(只删除color属性列的值,不删除整行元组)。

update p
set color=null
where color='红';
//实际是更新操作

(4)由s5供给j4的零件p6改为由s1供应。

update spj
set sno='s1'
where sno='s5' and jno='j4' and pno='p6';

(5)请将(s2,j7,p4,510)插入供应情况关系。

insert into spj
values('s2','p4','j7',510);
//属性要和表格顺序对应

 (6)零件p1已经停产,请将p1的相关信息从数据库中删除。

delete from spj
where pno='p1';

delete from p
where pno='p1';
//注意删除顺序,先删除外键表在删除主键表

(7) 创建零件名为螺丝刀的供应情况的视图sd_view,视图中显示供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY)。

create or replace view sd_view
as
select sname,pname,weight,jno,qty
from s,p,spj
where s.sno=spj.sno and p.pno= spj.pno and pname='螺丝刀';
执行结果:

(8)在视图sd_view中查询供应数量在400到600之间的供应商姓名。

select sname
from sd_view
where qty>=400 and qty <=600;

(9)请为三建工程项目建立一个供应情况的视图SJ_View,包括供应商编号,零件编号,供应数量。

create or replace view sj_view
as
select sno,pno,qty
from spj,j 
where spj.jno=j.jno and jname='三建';

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值