数据操纵和视图

来源:百度文库 编辑:神马文学网 时间:2024/10/02 18:49:40
一、实验目的
熟练掌握DML语句,insert,update,delete访问数据记录
能够在企业管理器和查询分析器中创建并使用视图
说明更新视图时的注意事项
二、实验内容
1.使用insert语句插入一条或多条记录
2.使用update delete语句更新一条或多条记录
3.使用create view语句创建多个视图
4.视图更新,并注明更新视图过程中需要注意的事项
三、实验任务
(一)insert语句
①向表s中插入一条完整的记录数据 ('s7','机床厂','河南新乡建设路48,'0371-1234567')
insert  into s values('s7','机床厂','河南新乡建设路48','0371-1234567')
②向s中插入多条不完整的记录 ('s10','机床厂') ( 's12','净水厂')( 's13','玩具厂')
insert into s(sno,sname) select 's10','机床厂' union  select  's12','净水厂' union select  's13','玩具厂'
③使用select into语句新建一个临时表#ss, 临时表#ss和表s 具有相同的结构,但是表中没有数据。向表#ss中插入多条记录
select * into #ss from s where 1<>1
insert into #ss select * from s
④修改临时表#ss,添加一个字段sid (identity(1,1)),并设置为primary key.并为#ss表添加一条记录('s1','shuini','新乡','0371-4567891')
alter table #ss add sid int identity(1,1)  primary key
insert into #ss values ('s1','shuini','新乡','0371-4567891')
⑤设置#ss表,设置 set identity_insert #ss on, 插入一条记录 ('s1','shuini','新乡',-100)
set identity_insert #ss on
insert into #ss(sno,sname,saddr,sid) values ('s1','shuini','新乡',-100)
(二)update语句
①更新表#ss,将sname为”机床厂”的值更改为“机床”
update #ss set sname='机床'where sname='机床厂'
②在update语句中使用来自另一个表的信息
update #ss
set sname=s.sname
from s,#ss
where #ss.sno=s.sno
③在update语句中使用select...top语句
将供应零件最少的供应商的供应商名称改为“差”
update  s  set sname=  '差'  where sno in  ( select top 1 sno from spj group by sno
order by count(pno) asc)
(三)delete语句
①删除名字有“差”字的供应商信息
select * into #s from s
select * from #s
delete  from #s
where sname='差'
②删除名字有“差”字的供应商供应的零件信息
select * into #pp from p
select * from #pp
delete from #pp
where pno in
(
select pno from spj
where pno=spj.pno and sno in
(
select sno from s
where sno=spj.sno and sname like '%差%'
))
③比较truncate,delete,drop table的区别
(四)视图操作
(1)①创建项目表j的视图view_j
create view view_j as select * from j
②更新视图view_j,插入记录('j8','长江大桥','南京',10000),('j9','淮河大桥','淮滨',10)
insert into  view_j
select 'j8','长江大桥','南京',10000
union select 'j9','淮河大桥','淮滨',10
③更新视图view_j,将balance的值都加上5000
update view_j set balance=balance+5000
④更新视图view_j,删除项目编号为j8的项目信息
delete view_j
where jno='j8'
(2)①创建一个工程试图view_part_j,显示工程名和所在城市
create view view_part_j
as
select jname,jcity from j
②向视图插入一条不完整的记录('胖东来超市','新乡'),若不能插入,则说明原因。
insert into view_part_j values('胖东来超市','新乡')
③修改视图,将工程名为”淮河大桥”所在的城市改为“信阳”。说明原因。
update  view_part_j set jcity='信阳'where jname='淮河大桥'
④修改视图,删除城市名为“信阳”的项目信息。说明原因。
delete view_part_j where jcity='信阳'
(3) ①创建一个视图view_count_spj,该视图用来显示供应商编号,供应零件总数
create  view view_count_spj as select sno, count(qty) 供应零件总数 from spj group by sno
②向视图插入一条不完整的记录('s6',4'),若不能插入,则说明原因。
insert into view_count_spj values('s6',4)
③修改视图,将供应商编号为‘s5’的零件种类数改为7。说明原因。
④修改视图,删除编号为“S5”的信息。说明原因。
delete view_count_spj where sno='s5'
(4) ①创建一个视图view_spj,该视图用于显示工程项目所使用的零件(j.jno,jname,p.pno,pname,s.sno,sname,qty)
create view view_spj  as select j.jno,jname,p.pno,pname,s.sno,sname,qty from spj,p,j,s
②向视图插入一条记录('j10','实验室','p20','小螺丝','s30','河师大',100),若不能插入,则说明原因。
insert into view_spj values ('j10','实验室','p20','小螺丝','s30','河师大',100)
③修改视图,将项目名称为’明珠线’的qty提高到1.5倍。说明原因。
update view_spj set qty=1.5*qty where jname='明珠线'
④修改视图,删除项目名称为’明珠线’的信息。说明原因。
delete view_spj where jname='明珠线'