1.概念:
--CRUD select id,user_name,email from `user`; --创建视图 create VIEW user_view as select id,user_name,email from `user`;
desc user_view; --查看创建的视图语法 show create view user_view; --查询视图内容 select * from user_view;
>注意:视图查询的数据实则来自与源数据中的内容,而它本质是一个存储了一个结构,并不是存储真实的数据。
5.视图缺点:
6.视图IUD:表是可以更新数据的,这里的更新,指的是”增删改”,但是对于视图来说不一定。
update `user` set email = ‘247301260@qq.com‘ where id = 1; select * from user_view; --删除视图 DROP VIEW user_view_2;
--如果要频繁获取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。 --示例: 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了。
--假如因为某种需求,需要将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的数据,其他的数据就获取不了了。
原文:https://www.cnblogs.com/XiaKang/p/13198038.html