一、什么是mysql视图?有什么作用?
视图:存储的查询语句,可以理解为虚拟表。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。行
和列数据来自由定义视图的查询所引用的表,并且在引用视
图时动态生成。
ps:因为视图时虚拟表,所以对于视图的插入操作是不成立的。
二、mysql视图会提高查询效率吗?
mysql的视图不会建立中间表,也就是无法缓存视图查询的数据,
这样每次用视图都得重新查一次,速度很慢。
而微软的sql server数据库的视图由于建立中间表,每次使用视图
都不用去查询,确实提高了速度
三、创建视图
create view v1 as select * from student where sid>1;
--v1是视图名称
四、查询视图
select * from v1;
注意:
数据库视图是动态的,当表的数据发生变化时,视图也反映了这些
数据的变化
例如:
执行update student set sname = '小山炮' where sname = '山炮';,
修改student表的数据,再查看视图select * from v1;发现,视图里
的数据也变化了(这里就说明了视图是动态的)
ps:查看当前数据库下所有视图:
show full tables where table_type like ‘VIEW’;
五、基于视图来创建视图
create view v2 as select sid,sname from v1;
六、修改视图
(其实修改视图就是修改存储的SQL语句)
alter view 视图名称 as SQL
七、视图的优缺点?
优点:
(1)数据库视图允许简化复杂查询:
数据库视图由许多基础表相关联的SQL语句定义。
通过数据库视图,您只需要使用简单的SQL语句,而不是使用具有多个连接的复杂的SQL语句
(2)数据库视图有助于限制对特定用户的数据访问。
您可能不希望所有用户都可以查询敏感数据的子集。可以使用数据库视图将非敏感数据仅显示给特定用户组。
(3)数据库视图提供额外的安全层。
安全是任何关系数据库管理系统的重要组成部分。数据库视图为数据库管理系统提供了额外的安全性。数据库视图
允许您创建只读视图,以将只读数据公开给特定用户。用户只能以只读视图检索数据,但无法更新
(4)数据库视图实现向后兼容。
假设你有一个中央数据库,许多应用程序正在使用它。有一天,您决定重新设计数据库以适应新的业务需求。删除
一些表并创建新的表,并且不希望更改影响其他应用程序。在这种情况下,可以创建与将要删除的旧表相同的模式的数据库视图
缺点:
性能:从数据库视图查询数据可能很慢,特别是如果视图是基于其他视图创建的
表依赖关系:
将根据数据库的基础表创建一个视图。每当更改与其相关联的表结构时,都必须更改视图。
(为什么说要修改视图呢?因为,假如说,一个表增加了一个字段,视图中是不会把刚刚添加
的字段假如进去的,所以说要修改视图)