视图可以像正常表似的进行查询,但是不能对视图进行添加删除但是可以修改,在数据库不也能添加和删除??
发布网友
发布时间:2022-03-22 17:06
我来回答
共2个回答
热心网友
时间:2022-03-22 18:35
建议你看看视图的定义,以及为什么要建视图。
视图查询可以,但操作是受限的,不同的DBMS对视图的*规则也不尽相同,所以在编程中,尽量不要试图去通过改变视图来改变数据库的数据。
举个例子,你的一个视图里的字段是由表中的几个字段作运算得来的,那么当你修改视图时,这时会导致原表的内容不一致了,这是不允许的。
热心网友
时间:2022-03-22 19:53
使用视图作为安全机制
通过*可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。无论在基础表(一个或多个)上的权限集合有多大,都必须授予、拒绝或废除访问视图中数据子集的权限。
例如,某个表的 salary 列中含有保密职员信息,但其余列中含有的信息可以由所有用户使用。可以定义一个视图,它包含表中除敏感的 salary 列外所有的列。只要表和视图的所有者相同,授予视图上的 SELECT 权限就使用户得以查看视图中的非保密列而无须对表本身具有任何权限。
通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色*在不同的数据子集内。例如:
可以将访问*在基表中行的子集内。例如,可以定义一个视图,其中只含有商业书籍或心理书籍的行,并向用户隐藏有关其它类型书籍的信息。
可以将访问*在基表中列的子集内。例如,可以定义一个视图,其中含有 titles 表中的所有行,但省略了 royalty 和 advance 列,因为这些信息比较敏感。
可以将访问*在基表中列和行的子集内。
可以将访问*在符合多个基表联接的行内。例如,可以定义一个视图,它联接表 titles、authors 和 titleauthor 表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著作的财务信息。
可以将访问*在基表中数据的统计汇总内。例如,可以定义一个视图,其中只含有每类书籍的平均价格。
可以将访问*在另一个视图的子集内或视图和基表组合的子集内