数据库原理与应用课程 实验指导书(附答案)

数据库原理与应用课程实验指导书

select 客户名称 from XSS where not exists (

select * from CP where exists (

select * from CPXSB x

where x.产品编号=CP.产品编号 and x.客户编号='' and not exists (

select * from CPXSB y

where y.客户编号=XSS.客户编号 and y.产品编号=CP.产品编号 ) ) )

and 客户编号 !=''

实验七

(1)启动企业管理器,在产品销售数据库CPXS中创建价格小于2000的产品视图VIEW_CP_PRICE2000,

要求加密并保证对该视图的更新都要符合价格小于2000这个条件, 写出创建过程和对应的T-SQL语句: create view VIEW_CP_PRICE2000 with encryption as

select* from CP where 价格<2000 with check option

(2)打开查询分析器,用T-SQL语句创建各客户购买产品的情况VIEW_GMQK视图,包括客户编号、

客户名称、产品编号、产品名称、价格,购买日期、购买数量。 create view VIEW_GMQK as

select XSS.客户编号,客户名称,CP.产品编号,产品名称,价格,销售日期 as '购买日期',数量 as'购买数量'

from CP,XSS,CPXSB

where CP.产品编号=CPXSB.产品编号 and XSS.客户编号=CPXSB.客户编号

41

(3)创建分区视图:在CPXS数据库中创建CP1和CP2两个表,CP1表中为编号小于等于’’

产品数据,CP1表中为编号大于‘’产品数据,以分区列为产品编号, 创建可更新的分区视图VIEW_CP12。 create table CP1

(产品编号 char(6) primary key check(产品编号<=''), 产品名称 char(30) not null, 价格 real, 库存量 int,

产品简列 varchar(50) )

create table CP2

(产品编号 char(6) primary key check(产品编号>''), 产品名称 char(30) not null, 价格 real, 库存量 int,

产品简列 varchar(50) )

create view VIEW_CP12 as

select * from CP1 union all

select * from CP2

2、查询视图

(1)基于VIEW_CP_PRICE2000视图,查询价格在2000以下产品的产品编号、名称和价格。

select 产品编号,产品名称,价格 from VIEW_CP_PRICE2000

(2)基于VIEW_GMQK视图,查询各客户在20004年3月18日购买产品的情况。 select * from VIEW_GMQK where 购买日期='2004-3-18'

3、更新视图

利用T-SQL语句对于视图VIEW_12进行以下数据更新。 (1) 插入一条CP记录(’ '','数码相机',3500,2)。

42

数据库原理与应用课程实验指导书

insert into VIEW_CP12

values('','数码相机',3500,2,null)

(2) 将产品编号为’’的价格改为3000。 update VIEW_CP12 set 价格=3000 where 产品编号=''

(3) 删除产品编号为’’的产品。

delete VIEW_CP12 where 产品编号=''

4、修改视图

将VIEW_CP_PRICE2000视图不加密。 alter view VIEW_CP_PRICE2000 as

select* from CP where 价格<2000 with check option

5、删除视图

将VIEW-GMQK视图删除。 drop view VIEW_GMQK

实验八

1、声明游标

(1)使用SQL-92语法声明一只进只读游标CUR1:要求结果集2004年3月18日销售情况。

declare CUR1 insensitive cursor for

select *from CPXSB where 销售日期='2004-3-18' for read only

43

(2)使用T-SQL扩展声明一滚动动态游标CUR2:要求结果集为客户信息,并能通过该游标修改客户名称列。 declare CUR2 cursor scroll for

select * from XSS

for update of 客户名称

2、打开游标

打开CUR2游标。 open CUR2

3、读取游标中数据

编写程序,实现依次读取游标CUR2中各行数据。

fetch next from CUR2

while @@FETCH_STATUS=0 begin

fetch next from CUR2 end

4、关闭游标

关闭CUR2游标。 close CUR2

5、释放游标

释放CUR2游标。 deallocate CUR2

实验九

1、变量的定义和赋值

创建一名为 Customer_name的局部变量,并在SELECT语句中使用该变量查找“广电公司”购买产品的情况。

declare @Customer_name varchar(20) set @Customer_name='广电公司'

select 客户名称,CPXSB.*from CPXSB,XSS

where 客户名称=@Customer_name and XSS.客户编号=CPXSB.客户编号

44

联系客服:779662525#qq.com(#替换为@)