SQL视图创建

SQL Server创建视图——视图的作用
视图简介:

视图可以看作定义在SQL Server上的虚拟表。视图正如其名字的含义一样,是另一种查看数据的入口。

常规视图本身并不存储实际的数据,而仅仅是由SELECT语句组成的查询定义的虚拟表 。

从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图。

例如查询,插入,修改,删除操作等,但插入、修改、删除等的操作其实对于原始数据表的操作。

视图的作用:

1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。

2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

3、从而加强了安全性,使用户只能看到视图所显示的数据。

4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。

 

语法:

复制代码
 1 CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]   
 2 [ WITH <view_attribute> [ ,...n ] ]   
 3 AS select_statement   
 4 [ WITH CHECK OPTION ]   
 5 [ ; ]  
 6 
 7 <view_attribute> ::=   
 8 {  
 9     [ ENCRYPTION ]  
10     [ SCHEMABINDING ]  
11     [ VIEW_METADATA ]       
12 }   
13 <select_statement> ::=  
14     [ WITH <common_table_expression> [ ,...n ] ]  
15     SELECT <select_criteria>  
复制代码
参数:

schema_name:是视图所有者的名称,一般为 dbo。(指定视图所有者名称是可选的。)

view_name:是视图的名称。

column:是视图中用于列的名称。仅当列从算术表达式,函数或常数派生时,才需要列名称; 当两个或多个列可能具有相同的名称时,通常是因为连接; 或者当视图中的列被指定与其派生的列的名称不同的名称时。列名也可以在 SELECT 语句中分配。如果列未指定,则视图列获得相同的名称作为 SELECT 语句中的列。

AS:指定视图要执行的操作。

select_statement:是定义视图的 SELECT 语句。该语句可以使用多个表和其他视图。需要适当的权限才能从创建的视图的 SELECT 子句中引用的对象进行选择。

ENCRYPTION:对加密进行加密,加密之后不可修改。使用 WITH ENCRYPTION 可以防止将视图作为 SQL Server 复制的一部分进行发布。

SCHEMABINDING:将视图绑定到底层所应用到的表。指定 SCHEMABINDING 时,不能以影响视图定义的方式修改表。必须首先修改或删除视图定义,以删除要修改的表的依赖关系。使用 SCHEMABINDING 子句创建的视图的视图或表不能删除,除非该视图被删除或更改,以使其不再具有绑定。

VIEW_METADATA:当使用 WITH VIEW_METADATA 创建视图时,返回的是视图的元数据,否则返回的元数据是视图所引用表的元数据。
    
    1、视图的作用

视图的作用:
    第一点:使用视图,可以定制用户数据,聚焦特定的数据。

    解释:
        在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,
        采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没
        有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视
        图,以后他在查询数据时,只需select * from view_caigou 就
        可以啦。

    第二点:使用视图,可以简化数据操作。

        解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要
        显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能
        会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我
        们只需要select * from view1就可以啦~,是不是很方便呀~

    第三点:使用视图,基表中的数据就有了一定的安全性

      解释:
        因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以
        将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集
        合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改
        和删除,可以保证数据的安全性。

    第四点:可以合并分离的数据,创建分区视图(//目前我没用到)

        解释:
        随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很
        多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务
        情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些
        数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字,
        将各分公司的数据合并为一个视图。

    2、Sql server中创建视图和创建表是一样的

    2.1)创建表是这样的


    --------创建表-------
    --判断是否存在--
    if exists (select * from sysobjects where name = 'Tab_EdsProd')
     drop table Tab_EdsProd
     go
     --创建表
    create table Tab_EdsProd 
    (
        Mid int identity(1,1) primary key,
        Code varchar(10) null,
        Name varchar(20) null    
    )
    --添加数据--
    insert into Tab_EdsProd(Code,Name) values('001','张三');
    insert into Tab_EdsProd(Code,Name) values('002','李四')
    --查询数据--
    select * from Tab_EdsProd

    2.3)创建视图是这样的

    --------创建视图-------
    --判断是否存在--
    if exists (select * from sysobjects where name = 'View_EdsProd')
     drop view View_EdsProd
     go
     --创建视图
    create view View_EdsProd 
    as
       select * from Tab_EdsProd where Mid>1
    go
    --使用视图--
    select *from View_EdsProd

    如何创建的视图不允许更改,可以加上 with encryption

    --------创建加密视图-------
    --判断是否存在--
    if exists (select * from sysobjects where name = 'View_Jm_EdsProd')
     drop view View_Jm_EdsProd
     go
     --创建视图
    create view View_Jm_EdsProd 
    with encryption
    as
       select * from Tab_EdsProd where Mid>1
    go
    --使用视图--
    select *from  View_Jm_EdsProd 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值