【数据库】SQL之视图的作用
在一个项目的实际开发过程中牵涉到复杂业务的时候,我们不可避免的需要使用中间表来进行数据连接,有的同学就说了,我可以采用Hibernate进行主外键进行关联啊?多对多,多对一,一对一,等,采用主外键关联在数据的操作过程中具有很强的耦合性,尤其对于需要经常删改数据表而言,我们是不建议采用主外键关联这种模式,那么,如果我们采用中间表的话,当数据过大在性能上又面临严峻考验,sql视图的出现,在解决中间表的业务逻辑上是不错的选择。ok,首先我们了解什么是视图?
1、视图是表?没错,但是是一张虚拟表,视图的字段是由我们自定义的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。
2、使用视图的优势?视图可以将多个复杂关联表,提取出我们需要的信息,优化查询速度。
视图:是从一个或几个基本表(或视图)导出的虚拟表。
视图与查询的区别:
视图和查询都是用由sql语句组成,这是他们相同的地方,但是视图和查询有着本质区别:
它们的区别在于:
1:存储上的区别:视图存储为数据库设计的一部分,而查询则不是.
2:更新限制的要求不一样
要注意:因为视图来自于表,所以通过视图可以间接对表进行更新,我们也可以通过update语句对表进行更新,但是对视图和查询更新限制是不同的,以下我们会知道虽然通过视图可以间接更新表但是有很多限制.
3:排序结果:通过sql语句,可以对一个表进行排序,而视图则不行。比如:创建一个含有order by子句的视图,看一下可以成功吗?
视图的优缺点
1、视图能简化用户的操作
经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、视图机制可以使用户以不同的方式查询同一数据
通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。
数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。
通过视图,用户可以被限制在数据的不同子集上。
3、视图对数据库重构提供了一定程度的逻辑独立性
视图可帮助用户屏蔽真实表结构变化带来的影响
4、视图可以对机密的数据提供安全保护
视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:
1,在表中增加一个标志用户名的列;
2,建立视图,是用户只能看到标有自己用户名的行;
3,把视图授权给其他用户。
5、适当的利用视图可以更清晰的表达查询
以上就是SQL之视图_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!