mysql关于视图的用法以及做用

2021年09月15日 阅读数:1
这篇文章主要向大家介绍mysql关于视图的用法以及做用,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

关于视图的用法以及做用。php

做用一:sql

提升了重用性,就像一个函数。若是要频繁获取user的name和goods的name。就应该使用如下sql语言。示例:数据库

select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;安全

但有了视图就不同了,建立视图other。示例ide

create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;函数

建立好视图后,就能够这样获取user的name和goods的name。示例:性能

select * from other;测试

以上sql语句,就能获取user的name和goods的name了。url

做用二:spa

对数据库重构,却不影响程序的运行。假如由于某种需求,须要将user拆房表usera和表userb,该两张表的结构以下:

测试表:usera有id,name,age字段

测试表:userb有id,name,sex字段

这时若是php端使用sql语句:select * from user;那就会提示该表不存在,这时该如何解决呢。解决方案:建立视图。如下sql语句建立视图:

create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;

以上假设name都是惟一的。此时php端使用sql语句:select * from user;就不会报错什么的。这就实现了更改数据库结构,不更改脚本程序的功能了。

做用三:

提升了安全性能。能够对不一样的用户,设定不一样的视图。例如:某用户只能获取user表的name和age数据,不能获取sex数据。则能够这样建立视图。示例以下:

create view other as select a.name, a.age from user as a;

这样的话,使用sql语句:select * from other; 最多就只能获取name和age的数据,其余的数据就获取不了了。

转自http://baijiahao.baidu.com/s?id=1598694746553095044&wfr=spider&for=pc