视图是从一个或多个表中导出来的,它的行为与表非常相似,但视图是一个虚表。在视图中可以使用SELECT、INSERT、UPDATE和DELETE语句,对视图的操作最终都会转换对基本表的操作。
视图的概念:视图是原始数据库数据的一种转换,是查看表中数据的另一种方式。可以将视图看作一个移动的窗口,通过它可以看到想要的数据。
一.视图的作用
(1)简单化:看到的就是需要的。简化用户对数据的理解及操作。经常被查询的可以定义成视图,可以不用每次都设置查询条件。
(2)安全性:通过视图的用户只能查看和修改他们所能见到的数据。
(3)独立性:视图可帮助用户屏蔽真实表结构变化带来的影响。
二.视图分类
SQL Server的视图可分为三类,分别是:标准视图、索引视图和分区视图。
(1)标准视图:组合了一个或多个表中的数据。
(2)索引视图:索引视图是被具体化了的视图,即他已经经过计算并存储。索引视图可以显著提高某些类型查询的性能。
(3)分区视图:分区视图在一台或多台服务器间水平连接一组成员表中的分区数据。
三.创建视图
(1)创建视图的语法规则
- 视图定义中的SELECT子句不能包括下列内容:
- COMPUTE或COMPUTE BY子句。
- ORDER BY 子句,除非在SELECT语句的选择列表中也有一个TOP子句。
- INTO关键字。
- OPTION子句。
- 引用临时表或变量表。
CREATE VIEW view_name
AS
SELECT * FROM table
--单表创建视图
CREATE VIEW view_dept
AS
SELECT * FROM dept
--多表创建视图
CREATE VIEW view_dept
AS
SELECT * FROM dept d
RIGHT JOIN employee e ON d.d_no=e.dept_no
(2)修改视图
修改视图的语法和创建视图的语法非常相似,就是将CREATE语句改为ALTER语句。
ALTER VIEW view_dept
AS
SELECT * FROM dept WHERE d_no<50
(3)重命名视图名称
--sp_rename 'old_name','new_name'
sp_rename 'view_dept','view_dept_employee'
(4)使用系统存储过程查看视图信息
sp_help view_dept_employee
四.通过视图更新数据
通过视图更新的时候都是转到基本表进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或删除记录。
通过视图更新数据的方法有三种,分别是INSERT、UPDATE、DELETE。通过视图更新数据需要注意以下三点。
- 修改视图中的数据时,不能同时修改两个或多个基本表。
- 不能修改视图中通过计算得到的字段。
3.执行UPDATE或DELETE命令时,无法用DELETE命令删除数据,若使用UPDATE命令则应当与INSERT命令一样,被更新的列必须属于同一个表。
--更新
UPDATE view_dept SET d_name = 'gou' WHERE d_no=50
--插入
INSERT INTO view_dept VALUES(60,'SSSS','DongGuan')
--删除
DELETE FROM view_dept WHERE d_no=60
五.删除视图
--语法
DROP VIEW view_name
DROP VIEW view_dept