视图的创建与销毁

视图的创建与销毁

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 子句。

原文地址:https://www.cnblogs.com/abcdwxc/p/973582.html