MySQL简单应用之视图(view)
2016-10-11 13:13
435 查看
1、建立数据库,并包含paper,customer和cp三个表格
1)建立数据库
我们首先是需要先建立数据库的:drop database if exists DingBao; create database DingBao;
这个是我们创建一个数据库,命名为DingBao,如果先前存在,则需要删除掉数据库。
![](http://p1.bqimg.com/567571/27199a72cd17edef.png)
这里就多了一个数据库dingbao,就是我们建立的数据库。
2) 建立表格
创建好数据库之后,我们进行表格的创建:use DingBao; create table paper(pno varchar(6), pna varchar(8), ppr numeric(3,1), primary key(pno)); create table customer( cno varchar(10), cna varchar(20), adr varchar(2000), primary key(cno)); create table cp( cno varchar(4), pno varchar(6), num numeric(1) default 1, foreign key(cno) references customer(cno), foreign key(pno) references paper(pno));
3) 查看相关信息
首先,我们需要使用这一个数据库,不然无法进行下面的操作,然后,再进行表格的 建立,新建了三个表格,其中分别为paper,cp和customer,我们可以看下这些表格中的 元素。![](http://p1.bqimg.com/567571/9b3a0de919cc792d.png)
这是我们数据库中的表格,可以看到为三个我们建立的表格,我们再看下我们建立的表格 中的元素:
![](http://p1.bqimg.com/567571/7a6524dc9a8849fb.png)
这些就可以看到我们建立的数据库中的一些形式了,我们看到的是pno和cno分别是paper 和customer的主键,而cp中的主键为cno和pno,也就是说,后面的两个主键为前面的 table的外键,所以,和题目中的定义是符合的,因此,我们的表格创建是正确的。
4) 插入数据
在确定了数据库之后,我们可以进行的是数据的插入,由于有了外键的关系,所以, 我们的插入,需要注意的是cp的应该放在最后面:insert into customer values("0001","李涛","无锡市解放东路123号"), ("0002","钱金浩","无锡市人民西路234号"),("0003","邓杰","无锡市惠河路432号"), ("0004","朱海红","无锡市中山东路432号"),("0005","欧阳阳文","无锡市中山东路532号"); 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); insert into cp values("0001","000001",2),("0001","000002",4), ("0001","000005",6),("0002","000001",2),("0002","000003",2), ("0002","000005",2),("0003","000003",2),("0003","000004",4), ("0004","000001",1),("0004","000003",3),("0004","000005",2), ("0005","000003",4),("0005","000002",1),("0005","000004",3), ("0005","000005",5),("0005","000001",4);
我们可以看到cp的数据如下所示:
![](http://p1.bqimg.com/567571/fc1667689a85c87d.png)
我们看到customer的数据和paper的数据分别如下所示:
![](http://p1.bqimg.com/567571/e7a3e4a29d6d631a.png)
![](http://p1.bqimg.com/567571/890bc79f794e2f6d.png)
所以,我们看到自己建立的数据库是正确的。
2、使用视图:
1)建立视图
create view C_P_N(cno,cna,pno,pna,num) as select customer.cno,cna,paper.pno,pna,num from paper,cp,customer where paper.pno = cp.pno and cp.cno = customer.cno;
我们看到的是得到的结果如下所示,所以,是正确的。
![](http://p1.bqimg.com/567571/1600c10fcdc79012.png)
2) 增加额外的功能
通过新建如一句话,可以实现,加入单价的功能:create view C_P_N(cno,cna,pno,pna,ppr,num) as select customer.cno,cna,paper.pno,pna,ppr,cp.num from paper,cp,customer where paper.pno = cp.pno and cp.cno = customer.cno;
![](http://p1.bqimg.com/567571/79ec7a2cbab12b3b.png)
3) 查询人名日报的订阅情况:
Create view C_P_N(cno,cna,pno,pna,ppr,num) as select customer.cno,cna,paper.pno,pna,ppr,cp.num from paper,cp,customer where paper.pno = cp.pno and cp.cno = customer.cno and paper.pna = "人民日报";
![](http://p1.bqimg.com/567571/932f8d223daa22a4.png)
4) 对视图的修改
我们可以看到,修改对应的人员的参数,比如说,我们修改cno为0004的人员的订 购数目,全部都在原来的基础上加1,所以,我们看到的是和上一幅图相比,我们下面加 了1,这个是对表的修改而造成的视图的变动,我们需要做的是进行视图的直接修改:update cp S set num = num + 1 where S.cno = "0004";
![](http://p1.bqimg.com/567571/ad1f48a64b624116.png)
修改视图:
set SQL_SAFE_UPDATES = 0; update C_P_N set pna = "人民" where pna = "人民日报"; select * from C_P_N;
我们看到,这个里面是我们把“人民日报”,全部换为“人民”,可以看下结果为:
![](http://p1.bqimg.com/567571/d0583c6b7ae28af9.png)
所以,结果是正确的。
这里,我们需要注意的是,SQL的数据库的安全等级是有要求的,如果,我们不加入前面的将安全等级设定为0的话,我们的系统就会报错,所以,我们需要加入设定安全等级为0的语句,由于这个是一个设定,所以,我们只需要设定一次就可以了,在下次重新启动数据库之前都是有效的。因此,我们需要注意这一个地方,在以后的实验中就不会出问题了。
5) 删除表格:
drop view c_p_n;我们看到的是view那一栏是没有数据的:
![](http://p1.bqimg.com/567571/036eafc41692718f.png)
![](http://p1.bqimg.com/567571/39644ac4ae6076d0.png)
上图中,左边是删除前的全部表格,右边的数据是删除后的全部表格。
3、创建ER图:
我们再写好了代码之后,首先点击我们的数据库,也就是dingbao,然后选择Databases的Reverse Engineer,然后,我们皆可以按照提示进行点击,在选择数据库的时候,选择我们自己的数据库dingbao,最后完成,就可以得到我们的ER图形了。![](http://p1.bqimg.com/567571/66c1dbd5d7e279c9.png)
相关文章推荐
- iOS 6编程-UIScrollView滚动视图和UIPageControl分页控件的简单应用
- IOS 滚动视图UIScrollView的简单应用(九)
- MYSQL简单应用
- SQL Server视图索引(Indexed View)应用实例
- 应用的启动视图 LauchView
- 超级简单RecycleViewAdapter的封装-支持多视图,多点击回调
- MySql视图简单说明
- IOS xib在tableview上的简单应用(通过xib自定义cell)
- ViewPager的简单应用
- 通过JDBC驱动MySQL的简单应用
- Mysql备份-简单应用篇
- mysql高级语法- view视图操作
- 基于mysql事务、视图、存储过程、触发器的应用分析
- Android WebView简单应用
- MySQL命令简单应用
- UI开发----UIScrollView和UIPageControl简单模拟滚动视图
- mysql 视图的简单使用
- iOS使用WebView简单地应用内显示网页
- MySQL高级应用--视图
- [转]asp.net core视图组件(ViewComponent)简单使用