数据更新与视图

实验三   数据更新与视图

一、实验目的

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中查看各个对象的使用权限

 

你可能感兴趣的:(数据库)