1、掌握数据更新语句的使用;
2、掌握视图操作的基本方法和应用,理解基于视图的查询和数据更新操作的过程。
1.在实验一创建的表中使用SQL语句完成以下操作:
(1)学生“宾兆琦”要退学,请删除该学生的所有记录。
delete
from sc
where sno in
(
select sno
from student
where sname='宾兆琦'
);
delete
from student
where sname='宾兆琦';
(2)将姓名为“朱安琪”同学的专业改为“软件工程”。同时创建转专业记录表change_major,表中包括编号属性列(ID),学号属性列(sno),姓名属性列(sname),转出专业属性列(cbefor),转入专业属性列(cafter)和转专业时间属性列(ctime),在change_major表中插入“朱安琪”同学的转专业信息。
update student
set major='软件工程'
where sname='朱安琪';
create tablechange_major
(
ID varchar2(40),
sno varchar2(40) primary key,
sname varchar2(40),
cbefor varchar2(40),
cafter varchar2(40),
ctime date
)
insert
intochange_major(ID,sno, sname, cbefor, cafter, ctime )
values(NULL,'101105','朱安琪','信息管理与信息系统','软件工程',NULL);
(3)删除选修了“计算机网络”但没有及格的选课记录。
delete
from sc
where sno in
(
select sno
from student
where major='计算机网络'
)
and grade<60;
(4)将(106559,路前元,男,汉族,共青团员,1995/11/8,null,null)插入学生关系。
insert
into student(sno,sname,sex,nation,political,birth,college,major)
values(106559,'路前元','男','汉族','共青团员',to_date('1995/11/08','yyyy/mm/dd'),null,null);
(5)在C表中插入以下元组:
“382,数据库原理与应用,3.5,选修,4”,
“383,JAVA语言程序设计,4.5,选修,6”
select *
from course;
insert
into course(cno,cname,credit,property,term)
values('382','数据库原理与应用',3.5,'选修',4);
insert
into course(cno,cname,credit,property,term)
values('383','JAVA语言程序设计',4.5,'选修',6);
(6)创建视图JSJ_VIEW,包括计算机科学与技术专业学生的学号,姓名,其选修的课程名及成绩属性列。
create viewjsj_view(sno,sname,cname,grade)
as
selectstudent.sno,sname,cname,grade
from student,course,sc
where student.sno=sc.sno and
sc.cno=course.cnoand
major='计算机科学与技术'
with check option;
(7)创建查询每个学生的修课学分的视图XF_VIEW,要求列出学生学号及总学分。
create view XF_VIEW(sno,credit)
as
select sno,sum(credit)
from sc,course
where sc.cno=course.cno
group by sno
with check option;
(8)在创建的视图中查询李洋洋和李向冲所修的学分数。
selectstudent.sno,sname,credit
from student,XF_VIEW
wherestudent.sno=XF_VIEW.sno and
(
sname='李洋洋' or
sname='李向冲'
);
2.在实验二创建的表中使用SQL语句完成以下操作:
(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库。
insert
into s
values ('S9','英特尔','西安',null);
insert
into spj
values('S9','P5','J7','600');
insert
into spj
values('S9','P4','J4','500');
(2)请将北京供应商的供应数量加150。
update spj
set qty=qty+150
where sno in
(
select sno
from s
where city='北京'
);
commit;
(3)把全部红色零件的颜色改为黑色。
update p
set color='黑'
where color='红';
commit;
(4)由S5供给J4的零件P6改为由S1供应。
update spj
set sno='S1'
where sno='S5' and
pno='P6' and
jno='J4';
commit;
(5)请将(S2,J7,P4,510)插入供应情况关系。
insert
into spj
values('S2','P4','J7','510');
commit;
(6)零件P3已经停产,请将P3的相关信息从数据库中删除。
delete
from spj
where pno='P3';
delete
from P
where pno='P3';
(7)创建零件名为螺丝刀的供应情况的视图P_ls,包括供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY).
create view P_ls(sname,pname,weight,jno,qty)
as
select sname,pname,weight,jno,qty
from p,s,spj
where spj.sno=s.sno and
spj.pno=p.pno
with check option;
(8)在视图P_ls中查询供应数量为500的供应商姓名。
select sname
from P_ls
where qty=500;
(9)请为三建工程项目建立一个供应情况的视图SJ_View,包括供应商编号,零件编号,供应数量。
create view SJ_View(sno,pno,qty)
as
select sno,pno,qty
from spj,j
where spj.jno=j.jno and
jname='三建'
with check option;
(10)在系统表user_updatable_columns中查看视图SJ_View是否可以更新,如果不能说明原因。
select *
fromuser_updatable_columns;
三,实验总结
1,本次试验主要进行表的删除,更新,插入操作,和视图的建立。
2,删除(create…from…),更新(update…set…),插入(insert into…values),创建视图(create view…as select…from…where…)
3,注意,操作过程中注意commit语句的使用
4,插入日期型(例如:to_date('1995/11/08','yyyy/mm/dd')),注意数据类型的转换
5,作删除操作时注意先后顺序,先删除SPJ表中符合条件的元组,再删除其他表中的元组
6,创建视图是加上withcheck option 字句可以提高视图的安全性
7,在修改基本表之后,最好删除由此基本表导出的视图,然后对该视图进行重建
8,可以像对基本表一样对视图进行增,删,查,改操作
9,可以在系统表user_updatable_columns中查看各个对象的使用权限