数据库 视图和表

数据库中表的概念很好理解,就是数据的一种组织存放形式。表中是包含真正的数据的。比如我有一张表如下
在这里插入图片描述
在磁盘中我可以找到表定义文件(.frm),由于我这里没有设置独立表空间,数据在共享表空间里
在这里插入图片描述
在共享表空间(或对应独立表空间)中你可以看见类似这样的数据。表空间就是表数据在磁盘中的保存位置
在这里插入图片描述

而视图。本质上是sql语句(或者说和 指针 的概念有点像)。
我这里创建了一个视图
在这里插入图片描述
在这里插入图片描述
我这里创建视图的语法是

create view view_table as select * from table1;

这和创建表的语法

create table view_table as select * from table1;

很像,但是实际本质完全不一样。创建表时,实际上时创建了一个空表,然后将数据插入空表。而创建视图时,实际上只是产生了一个“指针”指向了table1的列,虽然最后的结果看起来一样。
我们可以做个实验,向table1中插入数据
在这里插入图片描述
我们再查看视图
在这里插入图片描述
发现多了视图中同样多了一条数据。我们可以看一下视图在磁盘中的文件
在这里插入图片描述
因为视图文件不包含数据,为文本格式的,可以直接cat
在这里插入图片描述
我们可以直观看见视图在磁盘中就是一段sql代码和一些参数。
所以我们常说 数据库中的表是“物理表”(包含实际数据),视图是逻辑表(不包含数据),视图必须依赖实际的物理表。

另外:
视图是可以修改的
执行语句

create or replace view view_table as select name as name1,age as age1 from table1;

在这里插入图片描述

视图可以插入数据
执行语句

insert into view_table(name1,age1) values('bird',6);
--上面我将视图列名修改成name1,age1。这里不能再用原名了

在这里插入图片描述
而实际上对视图的插入是对原表的插入
在这里插入图片描述
删除数据同理
但是删除视图,原表并不会删除。

总结:实际上create view不过是将sql语句保存到了磁盘。视图就是sql代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值