MySQL视图特性

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表基表的数据变化也会影响到视图

基表是实际存储数据的物理表,而视图是基于查询结果定义的虚拟表,用于简化数据访问和管理,增强数据安全性和灵活性。在实际应用中,基表和视图通常结合使用

基本使用

创建视图

create view 视图名 as select语句;

案例

 比如我们使用员工表,想要查看员工姓名和职位;我们之前使用表内连形成一张临时表,但是我们如果高频繁地使用员工姓名和职位的话,我们得一直内连很不方便,所以我们可以使用视图方便;

内连操作:

mysql> select ename,dname from emp inner join dept on emp.deptno=dept.deptno;


每次都是这的话太麻烦了,不妨创建视图:

mysql> create view myview as select ename,dname from emp inner join dept on emp.deptno=dept.deptno;

再次查看数据库的表:发现多了视图表,可以理解为将筛选的数据重新放到一个新表里


那么此时可以对这张进行操作:
说白了myview就是把刚才select查出来的东西最终变成了临时表结构放到一个表叫做视图,好处就是未来我高频繁查员工姓名和职位的时候不用多表查询而是直接视图查询即可;他的数据都是从基表(emp,dept)来的

修改了视图,对基表数据有影响  

简单粗暴直接对视图做修改:mysql> update myview set ename='smith' where ename='SMITH';
查看修改结果:发现视图表数据被修改了
我们重新查询基表emp表:发现基表也被修改了

 修改了基表,对视图有影响

直接对基表dept进行数据更新:mysql> update dept set dname='sssss' where deptno=30;
查找数据:发现基表dept被修改了
那么此时看视图是否有改变:发现视图表也被修改了

 删除视图

语法:drop view 视图名;


再次查看发现没有视图表了:

视图规则和限制 

1. 与表一样,必须唯一命名(不能出现同名视图或表名,因为视图在数据库中被当作表不能重名

2. 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响

3. 视图不能添加索引,也不能有关联的触发器或者默认值

4. 视图可以提高安全性,必须具有足够的访问权限

5. order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖

6. 视图可以和表一起使用(视图就是表,可以做内连外联等操作)

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangsir.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值