视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。
优点:
(1)为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户的数据查询和处理。 (2)屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并且数据库表的更改也不影响用户对数据库的使用。 (3)简化用户权限的管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,也增加了安全性。 (4)便于数据共享。各用户不必都定义和存储自己所需的数据,可共享数据库的数据,这样同样的数据只需存储一次。 (5)可以重新组织数据以便输出到其他应用程序中。 缺点: (1)性能差 sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。 ( 2 )修改限制 当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。
结果:
3.1查询和正常表一样 3.2增删改的条件 详细参考该博客 注意:视图一般用于查询的,而不是更新的,所以具备以下特点的视图都不允许更新(插入、修改、删除) 1、包含以下关键字
分组函数 \ GROUP BY\ HAVING \UNION \UNION ALL 2、join
CREATE OR REPLACE VIEW myv4 AS SELECT last_name, department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;3、常量视图
CREATE OR REPLACE VIEW myv2 AS SELECT 'john' NAME; SELECT * FROM myv2;4、where后的子查询用到了from中的表
CREATE OR REPLACE VIEW myv6 AS SELECT last_name, email, salary FROM employees WHERE employee_id IN ( SELECT manager_id FROM employees WHERE manager_id IS NOT NULL );5、用到了不可更新的视图
CREATE OR REPLACE VIEW myv5 AS SELECT * FROM myv3;