视图的创建与销毁
1创建语法:
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement [ ; ]
[ WITH CHECK OPTION ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ] }
注意的两点:
1、视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
2、只有当用户对视图进行操作时,才按照视图的定义将数据从基本表中取出。
2创建简单的视图
create view StudentInfo_View
as
select * from studentinfo
查看刚才创建的视图
select * from StudentInfo_View
运行结果如下:
3为视图创建视图
实际上,可以把视图也看成是一个表,也可以视图创建视图。
为视图StudentInfo_View包含的所有男同学的信息创建一个视图Boy_View
实例代码:
create view Boy_View
as
select * from StudentInfo_View where sex='男'
select * from Boy_View
运行结果如下:
由于视图是一个"虚表",当表被删除时,由该表创建的视图,或视图的视图都不可用。
4为表中的一列,或者几列信息创建视图
create view NameAddress_View
as
select sname,address from StudentInfo
查看视图
select * from NameAddress_View
运行结果:
5创建与表具有不同字段名的视图
create view NewColumnName_View(Boy_name,Boy_Address,Sex)
as
select sname,address,sex
from studentinfo where sex='男'
查看视图NewColumnName_View
select * from NewColumnName_View
运行结果如下:
5 利用视图简化表的复杂连接
视图的一个重要用途就是进行复杂的SQL数据处理。
create view Join_View
as
select sname,dname,score
from Studentinfo ,department,recruitinfo
where studentinfo.dno=department.dno and studentinfo.address=recruitinfo.address
select * from Join_View
运行结果:
6 利用视图简化复杂查询
7 视图的销毁
drop view view_name
视图在物理上是不存在的,它实际上是不存在的。只是一个查询结果,是一个被存储的查询。与create table语句
不同,create table语句在系统目录中保存表,而create view 语句只保存视图的定义。所以Drop view语句删除视图时,删除的也是视图的定义,对实际表中的数据并没有影响。
8 使用视图时的几点注意
1、和表一样,视图必须有惟一的名字,不仅视图之间不允许有相同的名字,并且视图与表也不允许拥有相同的名字。
2、视图创建个数不受限制,用户可以创建任意多个视图。
3、用户要创建视图,必须从数据库管理员得到创建权限。
4、视图可以嵌套,即可以创建视图的视图。
5、一些数据库管理系统(如 SQL SERVER)禁止用户在查询语句中使用order by 子句。