一.实验目的
1.掌握数据库表和视图的基础知识
2.掌握创建,修改,使用,删除表与视图的不同方法
3.创建表与视图的导入与导出方法
二.实验内容与要求
1.创建数据库和表
用你掌握的某种方法,创建订报管理子系统的数据库DngBao,在DingBao数据库中用交互式界面操作方法或创建如下三表的表结构(表名及字段名使用括号中给出的英文名),并完成三表所示内容的输入,根据需要可自行设计输入更多的表记录。
创建表结构时要求满足:①报纸编码表(PAPER)以报纸编号(pno)为主键,如表3-1所示;②顾客编码表以顾客编号为主键,如表3-2所示;③报纸订阅表(CP以报纸编号与顾客编号为主键,订阅份数(num)的缺省值为1,如表3-3所示。
创建一个ACCESS数据库,把在SQL Server 中创建的三表导出到ACCESS数据库中
2.创建和使用视图
①在数据库中,创建含有顾客编号、顾客名称、报纸编号、报纸名称、订阅份数等
信息的视图,视图名设定为CPN
②修改已创建的视图C_PN,使其含报纸单价信息。
③通过视图CPN,查询“人民日报”被订阅的情况,能通过视图CPN实现对数据的更
新操作吗?请尝试各种可行的更新操作,如修改某人订阅某报的份数,修改某报的名称等
④删除视图CPN.
在这里插入图片描述
二、实验结果
实验代码如下
create table paper
(pno varchar(10) primary key,
pna varchar(10) ,
ppr float , );
create table customer (
cno varchar(10)primary key,
cna varchar(10),
adr varchar(20), );
create table cp
( cno varchar(10),
pno varchar(10),
num int ,
primary key(pno,cno), );
insert into paper select '000001','人民日报', 12.5 union select '000002','解放军报', 14.5 union select '000003','光明日报', 10.5 union select '000004','青年报', 11.5 union select '000005','扬子晚报', 18.5 ;
insert into cp
select '10000001','000001', 2 union select '10000001','000002', 4 union select '10000001','000005', 6 union select '10000002','000001', 2 union select '10000002','000003', 2 union select '10000002','000005', 2 union select '10000003','000003', 2 union select '10000003','000004', 4 union select '10000004','000001', 1 union select '10000004','000003', 3 union select '10000004','000005', 2 union select '10000005','000003', 4 union select '10000005','000002', 1 union select '10000005','000004', 3 union select '10000005','000005', 5 union select '10000005','000001', 4 ;
insert into customer
select '10000001','李涛', '无锡市解放东路123号 ' union
'10000002','钱金浩', '无锡市人民西路234号' union
select '10000004','朱海红', '无锡市中山东路432号' union
select '10000003','邓杰', ' 无锡市惠河路270号'union
select '10000005','欧阳阳文', '无锡市中山东路532号' ;
create view cpn as select cp.cno,cp.pno,customer.cna,paper.pna,cp.num from cp,customer,paper where cp.pno=paper.pno and customer.cno=cp.cno;
select sum(num) from cpn where pna='人民日报';
update cpn set num=19 where cno='10000002';
select num from cpn where cno='10000002';
以下为实验结果截图
三、实验心得
本次实验可谓是一波三折,先是发现连接不了,后来重新下载还发现cp 表连接查询还是有问题,后来仔细检查发现是cno,pno的位置写反了……自己太不细心了,不知道18版本的是不是也是因为这个原因,以后建立表,插入记录的时候记得一定要按照顺序对上,不要要出大问题,解决了这个问题后面做的还算顺利。不管这个问题卡了多久时间,解决了就是值得的,因为以后这种错误就不会轻易再犯了,也挺值得的。