php mysql 视图_MySQL——视图(下)

之前我们已经介绍了MySQL视图的基本概念,以及如何创建视图和查看视图,今天继续介绍视图的其他操作。今天的例子中涉及到的数据表和视图,均为MySQL——视图(上)创建的表跟视图,这里就不再重复创建。

视图创建之后,可以对其进行修改,也可以删除,不过这需要另外两个权限,alter_priv 跟 drop_priv,查询是否有权限的语句,同前面查询是否有创建和查看视图权限的语句相同。

如果查询结果如下,表明当前用户(这里为'root')拥有修改、删除数据表或视图的权限。

bfda7fb841633c71f42cf5a9337e32e4.png

视图像普通的数据表一样,也可以进行修改,当基础表的字段发生变化时,就需要对视图进行修改或者重新定义,修改视图的语句有 CREATE OR REPLACE VIEW 跟 ALTER VIEW 两种,下面分别进行介绍。

CREATE OR REPLACE VIEW 语句可以用来修改视图,如果视图不存在则创建视图。修改之前先用 DESC VIEW 语句查看一下视图 view_1 的结构。

修改前:

0306319d54acba88490a3c550d5e876e.png

修改语句如下:

8c8c5e540190f8226b1312281523fa2c.png

这里修改的是视图的字段名,查看修改后的视图:

0dfe70525b7fbc0d6a3ee74878e27976.png

由于定义视图 view_2 的基础表是视图 view_1,view_1 中的字段名字改变后,需要修改 view_2 的定义,这次我们用 ALTER VIEW 语句来修改视图。

13624d24b53cab36ed036d3abd396343.png

删除视图是指删除视图的定义,不会对基础表及表中的数据造成影响。可以使用 DROP VIEW 语句来删除视图。删除前先用 CREATE OR REPLACE VIEW 语句创建一个新的视图。

29d006509398c2090957bffe35366ce2.png

2de3ce197d7baa31b2258c0beebd4b1a.png

然后用 DROP VIEW 语句删除它。

85690c36853467d20e948aede12889c7.png

删除之后再用 DESC VIEW 语句查看,显示不存在,说明删除成功。

1317a69e26859b30a852c293556311f8.png

更新视图是指通过视图来插入(insert)、更新(update)和删除(delete)数据。因为视图是一个虚拟表,里面没有数据,通过视图更新时,都是转换到基础表来执行更新的操作。

先通过视图对 ‘grade’ 基础表进行更新数据操作,在这之前先看下表里现有的数据:

b4bb0e8bf59305135a85d974ab292c73.png

然后进行更新操作:

9cd4b60613ed57de33a6e357afad0f3a.png

更新之后的 ‘grade’ 表中的数据:

454ef3ccec14738e3b313b96a649e9ec.png

如果视图里的字段来自多个表或者视图,进行更新操作的时候,只可以对来自同一个表的字段进行更新。若同时更新多个表的字段,则会出错。

更新语句及结果如下:

此外,假如定义视图的基础表中的某个字段不可为空,且没有默认值,那么如果视图中没从基础表中取这个字段的话,那么就不可以对视图进行更新操作。如果定义视图的语句中包含GROUP BY、UNION、聚合函数(例如 : SUM、COUNT)、子查询等,即视图中的字段不是直接取自基础表,这种情况也不可对视图进行更新数据操作。

虽然可以通过视图来更新数据,但有诸多限制,如果没有考虑全面就对视图进行更新数据的操作,可能会更新失败。所以,最好将视图作为查询数据的虚拟表,而不要通过视图来更新数据表中的数据。

关于 MySQL 视图的介绍就到这里,如有错误或者不足,欢迎留言指正,有补充也可留言,相互学习~

不懂的留言,每天一篇分享,玩转我们共同的爱好!

你也来投搞!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值