数据库实验3 表、ER图、索引和视图的基础操作

数据库实验3:创建数据库以及表,创建和使用视图

实验课教材(MySQL数据库技术与实验指导)第66页“实验内容与要求”1-3题

1 、实验内容与要求

( 1 )创建数据库及表

用己掌握的某种方法,创建订报管理子系统的数据库 DingBao ,在 DingBao 数据库中用交互式界面操作方法或 CREATETABLE 创建如下 3 张表所示的表结构(表名及字段名使用括号中给出的英文名,如表 3-1 ~ 3-2 )并完成 3 张表所示内容的输入,根据需要可自行设计输入更多的表记录。

报纸编号 ( pno ) 报纸名称 (pna) 单价 ( ppr )
000001 人民日报 12.5
000002 解放军报 14.5
000003 光明日报 10.5
000004 青年报 11.5
000005 扬子晚报 18.5

表 3-1 报纸编码表( PAPER ) 表 3-2 顾客编码表( CUSTOMER )

顾客编号 ( cno ) 顾客姓名 (cna) 顾客地址 ( adr )
0001 李涛 解放东路 123 号
0002 钱金浩 人民西路 234 号
0003 邓杰 惠河路 270 号
0004 朱海红 中山东路 432 号
0005 欧阳阳文 无锡市中山东路 532 号

表 3-3 报纸订阅表( CP )

顾客编号 ( cno ) 报纸编号 (pna) 订阅份淑 ( num )
0001 000001 2
0001 000005 6
0002 000003 2
0003 000003 2
0004 000001 1
0004 000005 1
0005 000002 1
0005 000005 5

创建表结构时要求满足:

● 报纸编码表( PAPER )以报纸编号( pno )为主键,并为报纸编码表( PAPER )定义一个单价不大于 30 的 CHECK 约束;

● 顾客编码表( CUSTOMER )以顾客编号( cno )为主键,并为身份证号 (id) 创建 UNIQUE 约束。

● 报纸订阅表( CP )以报纸编号( pno )与顾客编号( cno )为主键, pno 和 cno 分别引用报纸编码表( PAPER )的报纸编号( pno )和顾客编码表( CUSTOMER )的顾客编号( cno ),订阅份树的默认值为 1 。

创建一个 ACCESS 数据库 DingBao(DingBao.MDB 文件 ) ,把在 SQL SERVER 中创建的 3 表导出到 ACCESS 数据库中。

( 2 )创建与使用视图

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

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

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

● 删除视图 C_P_N 。

实验过程:

  1. 创建数据库以及表
    点击file,创建新的model.

    双击mydb将其重命名为DingBao,然后点击Add Diagram创建新的EER图

    然后拖动左边窗口的table创建新的table
    按照要求创建三个table,命名以及其中的数据元素类型如下所示:
    报纸编码表(paper)table:
    主键为pno,将其数据类型设置为VARCHAR,单价用DECIMAL(3,1)表示,报纸名称pna用VARCHAR表示
    paper
    顾客编码表(customer) table:
    顾客编码表以顾客编号cno为主键,在此用VARCHAR来存储。在此处顾客姓名和顾客地址均用VARCHAR存储。
    customer
    顾客订阅表(cp)table:
    顾客订阅表以报纸编号cno和顾客编号pno为主键,且num的默认值为1
    cp
    至此完成了三个表的创建。在这里通过正向工程将其生成为本地数据库
    通过正向工程,便可以在本地数据库看到名字为dingbao的数据库,且表均存在.
    之后插入数据:
    为paper表插入数据:
--逐一插入元素
 insert into paper
    values('000001','人民日报',12.5);
    insert into paper
    values('000002','解放军报',14.5);
    insert into paper
    values('000003','光明日报',10.5);
    insert into paper
    values('000004','青年报',11.5);
    insert into paper
    values('000005','扬子日报',18.5);

excute
运行select * from paper可知:

数据插入无误。
同理,完成另外两个表的数据插入
顾客订阅表的数据插入:

	insert into cp
    values('0001','000001',2);
    insert into cp
    values('0001','000002',4);
    insert into cp
    values('0001','000005',6);
    insert into cp
    values('0002','000001',2);
    insert into cp
    values('0002','000003',2);
    insert into cp
    values('0002','000005',2);
    insert into cp
    values('0003','000003',2);
    insert into cp
    values('0003','000004',4);
    insert into cp
    values('0004','000001',1);
    insert into cp
    values('0004','000003',3);
    insert into cp
    values('0004','000005',2);
    insert into cp
    values('0005','000003',4);
    insert into cp
    values('0005','000002',1);
    insert into cp
    values('0005','000004',3);
    insert into cp
    values('0005','000005',5);
    insert into cp
    values('0005','000001',4);

执行select * from cp可知插入数据正确无误:

对顾客编码表的数据插入:

insert into customer
    values('0001','李涛','无锡市解放东路123号');
    insert into customer
    values('0002','钱金浩','无锡市人民西路234号');
     insert into customer
    values('0003','邓杰','无锡市惠和路432号');
    insert into customer
    values('0004','朱海红','无锡市中山东路432号');
    insert into customer
    values('0005','欧阳阳文','无锡市中山东路532号');


故表的建立和数据的插入均无误。
2.创建和使用视图
(1)C_P_N视图的创建:

--通过create 语句进行view的创建
  create view C_P_N as
  select cno,cna,pno,pna,num
  from paper natural join cp natural join customer;

通过select * from C_N_P做检验:

故视图创建无误。
(2)通过alter语句进行修改视图:

  alter view C_P_N as
  select cno,cna,pno,pna,num,ppr
  from paper natural join cp natural join customer;

检验:

(3)查询人民日报的订阅情况:

select *
from c_p_n
where pna='人民日报';

尝试对视图的更新操作:
我输入了该语句:

    update c_p_n set num=5 where cna="李涛";

实现了视图中李涛的订报数量的更改:

然后我查看cp表中的数据,发现李涛对应的序号0001的num同样发生了修改:
故通过视图是可以完成修改的。
类似地,将“青年报”更改为“老年报”:
SQL语句:

update c_p_n set pna="老年报" where pno='000004';

结果:
(4)删除视图:
执行语句:

DROP  VIEW  IF  EXISTS  c_p_n;

然后c_p_n视图已经被删除;
3.创建数据库ER图
通过反向工程可以生成ER图(实际上我创建时就是用ER图进行创建的)

然后修改名称为db_diagram

实验感想:
通过此次实验对MYSQL的图形界面和命令行模式都有了一定的了解,并且掌握了基本的操作,实验总体来说是比较容易的,但由于对软件的不熟悉导致花费了一定的时间去熟悉。此次实验我通过界面模式和命令行模式均进行了一遍,对表、视图、ER图等基础操作都有了不错的掌握,相信自己在之后的实验会越来越顺手。

发布了68 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dingdingdodo/article/details/100927742
今日推荐