1:什么是视图?
试图是一种查看数据库中一个或多个表中数据的方法。视图是一种虚拟表,它并不是数据库中存储数据值的集合,它的行和列来自查询中引用的表。在执行时,它直接显示来自表中的数据。
通俗点说:
视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:
将用户限定在表中的特定行上。
例如,只允许雇员看见工作跟踪表内记录其工作的行。
将用户限定在特定列上。
例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。
将多个表中的列联接起来,使它们看起来象一个表。
2:视图的作用。
筛选表中的行,防止未经许可的用户访问表中的数据。将多个物理数据表抽象成一个逻辑数据表。
3:视图语法。
1)创建视图:
```
create view view_name
as
<select 语句>
```
2)修改视图:
```
alter view view_name
as
<select 语句>
```
3)删除视图:
```
drop view view_name
```
4)修改视图名称:
```
exec sp_rename view_oldname view_newname
```
5) 查看视图
```
select 列名 from view_name
```
4:注意事项:
1:每个视图中可以使用多张表。
2:与查询相似,一个视图可以嵌套另一个视图,但最好不要超过3层。
3:视图定义中 select 语句不能包括一下内容(
order by 字句,除非在select 语句的选择列中也有一个top字句
into 关键字
引用临时表或表变量
)
5:视图的优缺点:
优点: 简单、 安全、逻辑数据独立
缺点: 性能,修改限制
如果视图中存在函数或涉及复杂的多表查询,那么用户在查询视图的过程中会花费一定的时间。 对于简单的视图可以使用update 语句更新,如果对于复杂的视图可能就不能使用了。删除亦是如此。所以对于视图的用法最好只停留到查询上面。
6:视图与存储过程的区别:
1:存储过程是程序化的sql,可以实现一般sql所不能实现的功能。
如:先检索一些信息然后再更新到某表当中。这就可以用不带参数的存储过程实现。
2:视图是虚拟表,不存储数据,存储的是sql,检索视图的时候实际是在执行试视图中的sql。
3:存储过程中有全局变量和外部变量,它可以接受参数、输出参数、返回单个或多个结果集以及返回值等强大的功能。 可以简单的理解为“存储过程就是数据库中的程序”。