SQL数据库-第一次试验-表与视图的基本操作

课程名称:  数据库原理   实验名称:    表与视图的基本操作        

班级学号:                       姓名:            同组人:                              

指导教师评定:                                      签名:                      

  • 实验环境
    1. Windows2000或以上版本;
    2. SQLServer 2005或以上版本。
  • 实验目的
  1. 掌握数据库表与视图的基础知识;
  2. 掌握创建、修改、使用、删除表与视图的不同方法。
  • 实验内容

完成实验指导书中p60-61页 “实验内容与要求”。

  • 实验步骤、源代码及实验结果
  1. 创建报纸编码表(PAPER)
CREATE TABLE PAPER

(

Pno CHAR(20) PRIMARY KEY, /*列级完整性约束条件,Pno为主码*/

Pna CHAR(20) UNIQUE, /*Pname取唯一值*/

Ppr CHAR(20)

);
  1. 创建顾客编码表(CUSTOMER)
CREATE TABLE CUSTOMER

(

Cno CHAR(20)PRIMARY KEY, /*列级完整性约束条件,Cno为主码*/

Cna CHAR(20),

Adr CHAR(40),

);
  1. 创建报纸订阅表(CP)
CREATE TABLE CP
(
Cno CHAR(20),
Pno CHAR(20),
Num CHAR(20),
PRIMARY KEY(Pno,Cno) 
);

所建表截图如下:

其中主键图表如下:

  1. 创建与使用视图

①在DingBao数据库中,创建含有顾客编号、顾客名称、报纸编号报纸名称、订阅份数等信息的视图,视图名设定为C_P_N。

代码如下:

CREATE VIEW C_P_N

AS 

SELECT customer.cno,customer.cna,paper.pna,paper.pno,cp.num

FROM cp,paper,customer

WHERE cp.pno=paper.pno and

      customer.cno=cp.cno;

②修改已创建的视图C_P_N,使其含报纸单价信息。

代码如下:

ALTER VIEW C_P_N

AS

SELECT CUSTOMER.cno,cna,PAPER.pno,pna,ppr,num

FROM CUSTOMER,PAPER,CP

WHERE CP.cno=CUSTOMER.cno AND CP.pno=PAPER.pno

WITH CHECK OPTION;

③通过视图C. P _N,查询“人民日报”被订阅的情况,能通过视图C P. N实现对数据的更新操作吗?请尝试各种可行的更新操作,如修改某人订阅某报的份数,修改某报的名称等。

代码如下:

select *

from C_P_N

WHERE pna='人民日报'and

      num>0;

或者将扬子晚报改为江西新闻

代码如下:

update C_P_N

set cna='江西新闻'

where pno=000005;

④删除视图C_ P_N。

代码如下:

DROP VIEW C_P_N;

  • 实验体会

1.该此次试验较为基础,无困难的地方,基本就是关于SQL的操作指令

其中注意的地方有Insert语句必须为不允许空值并且没有DEFAULT定义的基础表中的所有列指定值。

2.修改的数据必须符合对这些列的约束,删除时也要符合这些要求才可以成功。

3.对于视图的使用有了一个初步的认识

附:实验准备代码

insert into paper(pno,pna,ppr)

   values('000001','人民日报',12.5) ;

   insert into paper(pno,pna,ppr)

   values('000002','解放军报',14.5) ;

insert into paper(pno,pna,ppr)

   values('000003','光明日报',10.5) ;

insert into paper(pno,pna,ppr)

   values('000004','青年报',11.5) ;

insert into paper(pno,pna,ppr)

   values('000005','扬子晚报',18.5) ;

insert into customer(cno,cna,adr)

   values('10000001','李涛','无锡市解放东路123号') ;

insert into customer(cno,cna,adr)

   values('10000002','钱金浩','无锡市人民西路234号') ;

insert into customer(cno,cna,adr)

   values('10000003','邓杰','无锡市惠河路270号') ;

insert into customer(cno,cna,adr)

   values('10000004','朱海红','无锡市中山东路432号') ;

insert into customer(cno,cna,adr)

   values('10000005','欧阳阳文','无锡市中山东路532号') ;

insert into cp(cno,pno,num)

   values('10000001','000001',2) ;

insert into cp(cno,pno,num)

   values('10000001','000005',6) ;

insert into cp(cno,pno,num)

   values('10000002','000003',2) ;

insert into cp(cno,pno,num)

   values('10000003','000003',2) ;

insert into cp(cno,pno,num)

   values('10000004','000001',1) ;

insert into cp(cno,pno,num)

   values('10000004','000005',2) ;

insert into cp(cno,pno,num)

   values('10000005','000002',1) ;

insert into cp(cno,pno,num)

   values('10000005','000005',5) ;

insert into cp(cno,pno,num)

   values('10000001','000002',4) ;

insert into cp(cno,pno,num)

   values('10000002','000001',2) ;

insert into cp(cno,pno,num)

   values('10000002','000005',2) ;

insert into cp(cno,pno,num)

   values('10000003','000004',4) ;

insert into cp(cno,pno,num)

   values('10000004','000003',3) ;

insert into cp(cno,pno,num)

   values('10000005','000003',4) ;

insert into cp(cno,pno,num)

   values('10000005','000004',3) ;

insert into cp(cno,pno,num)

   values('10000005','000001',4) ;

一、建立以下五个表: 教师表:Teacher,学生表:Student, 课程表:Course,选课表:SC,授课表:TC 二、完成以下查询: 1.查询成绩在80-90之间的记录。 2.查询至少4个同学选修的课程名。 3.查询其他系中比“信息系”所有学生年龄都大的学生名单及年龄,并按年龄降序输出: 4.查询与学生张建国同岁的所有学生的学号。姓名和系别。 5.查询选修了2门以上课程的学生名单。 6.查询至少有一门与“张建国”选课相同的学生的姓名,课程号,系别 7.查询成绩比该课程平均成绩高的学生的成绩表。 8.查询选课号为01001课程且成绩高于课程01002学生的姓名,此两门课的课程名和成绩。 9.查询所有没选修01001号课程的学生名单 10、查询每个同学各门课程的平均成绩和最高成绩,按降序输出姓名、平均成绩、最高成绩; 11、查询所有学生都选修了的课程号和课程名; 12、查询选修了991102号学生选修了的课程的学生学号和姓名。 三、使用SQL创建视图,修改记录 1.创建成绩视图SCORE_VIEW,包含学号sno,姓名sn,课程名cn,成绩score; 2.创建一个计算机系学生名单视图S_VIEW,包含学号sno,姓名sn,性别sex; 3.通过上面的视图,修改学号为991102,课程号01001的成绩记录; 4,创建一个视图,计算机系学生的成绩单score_view_CDEPT,包含学号sno,姓名sn,课程名cn,成绩score
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值