zoukankan      html  css  js  c++  java
  • SQL Server基础之《视图的概述和基本操作》

     数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的列和行数据,行和列数据用来自由定义视图和查询所引用的表,并且在引用视图时动态产生。本篇将通过一些实例来介绍视图的概念,视图的作用,创建视图,查看视图,修改视图,更新和删除视图等SQL Server的数据库知识。

    一:视图的概述

     视图是从一个或者多个表导出的,它的行为与表非常相似,但视图是一个虚拟表,在视图中可以使用SELECT语句查询数据,以及使用insert、update和delete语句修改记录,对于视图的操作最终转化为对基本数据表的操作。视图不仅可以方便操作,而且可以保障数据库系统的安全性。

     视图一经定义便存储在数据库中,与其相对应的数据并没有像表数据那样在数据库中在存储一份,通过视图看到的数据只是存放在基本表中的数据。可以对其进行增删该查,通过视图对数据修改,基本表数据也对应变化,反之亦然。

    二:视图的分类

     SQL Server的视图可以分为3类,分别是:标准视图,索引视图,分区视图

    2.1.标准视图

     标准视图组合了一个或多个表中的数据,可以获得使用视图中的大多数好处,包括重点将放在特定的数据上及简化数据操作。

    2.2.索引视图

     索引视图是被具体化了的视图,即它已经经过计算并存储。可以为视图创建索引,对视图创建一个唯一的聚集索引。索引视图可以显著提高某些类型查询的性能,索引视图尤其适于聚合许多行的查询,但它们不太适于经常更新的基本数据集。

    2.3.分区视图

     分区视图在一台多多台服务器间水平连接一组成员表的分区数据,这样,数据看上去如同来自一个表。连接本地同一个SQL Server实例中的成员表的视图是一个本地区分视图。

    三:视图的优点和作用

    与直接从表中读取数据相比,视图具有一下优点

    3.1.简单化

     看到的就是需要的,视图不仅可以简化用户对数据的理解,也可以简化对它们的操作,那些经常使用的查询可以被定义为视图,从而使得用户不必为以后的每次操作指定全部的条件。

    3.2.安全性

     视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它或表既不可见也不可以访问。如果某一用户想要访问视图的,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。

    3.3.逻辑数据独立性

     视图可以帮助用户屏蔽真实表结构变化带来的影响。

    四:视图的基本操作和语法

    4.1.创建视图

    --语法
    CREATE VIEW view_name
     AS
        SELECT column_name(s) FROM table_name
    WHERE condition

    测试数据准备:

    复制代码
    use sample_db;
    create table studentTable(
        id int identity(1,1)primary key,
        name varchar(20),
        gender char(2),
        age int,
    )
    insert into studentTable (name,gender,age)
    values
        ('刘备','',28),
        ('张飞','',24),
        ('关羽','',26); 
    复制代码
    复制代码
    --创建视图
    if (exists (select * from sys.objects where name = 'student_view'))
        drop view student_view
    go
    --student_view()不实用参数,默认为基础表中的列名称
    create view student_view 
    as
    select name,age from studentTable where age>24;
    --执行视图
    select * from student_view;
    复制代码

    查看视图的信息

    • 使用sp_help存储过程查看视图的定义信息
    • 使用sp_helptext系统存储过程使用来显示规则,默认值,未加密的存储过程,用户定义函数,触发器或视图的文本,语法
    exec  sp_help 'student_view';
    exec sp_helptext 'student_view';

    创建加密视图:

    复制代码
    --加密视图
    if (exists (select * from sys.objects where name = 'student_encryption'))
        drop view student_encryption
    go
    create view student_encryption
    with encryption --加密
    as
        select id, name, age from studentTable
    go
    --view_definition is null
    --查看加密视图
    select * from information_schema.views 
    where table_name like 'student_encryption';
    复制代码

     

      从执行结果可看出view_definition字段为 NULL

    4.2.使用视图修改基本表数据

    (1).通过视图向基本表中插入数据

    复制代码
    --(1).通过视图向基本表中插入数据
    create view stu_insert_view(编号,姓名,性别,年龄)
    as
    select id,name,gender,age from studentTable;
    go
    select * from studentTable;
    ---插入一条数据
    insert into stu_insert_view values('曹操','',40);
    ----查看插入记录之后表中的内容。
    select * from studentTable;   
    复制代码

    (2).通过视图修改基本表的数据

    复制代码
    --(2).通过视图修改基本表的数据
    --查看修改之前的数据
    select * from studentTable;
    --修改数据
    update student_view set age=30
    where name='刘备';
    --查看修改后的数据
    select * from studentTable;
    复制代码

    (3).通过视图删除基本表的数据

    复制代码
    --语法
    delete view_name where condition;
    --例子
    delete student_view where name ='张飞';
    select * from student_view;
    select * from studentTable;
    复制代码

     4.3.修该视图

    --修改视图
    alter view student_view 
    as
    select * from studentTable where age>26;

    4.4.删除视图

    --语法
    drop view view_name1,view_name2,......,view_nameN;
    --该语句可以同时删除多个视图,只要在删除各视图名称之间用逗号分隔即可。
    drop view studentTable;

    五:视图和表的区别

    1. 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化表,而表不是;
    2. 视图(除过索引视图)没有实际的物理记录,而基本表有;
    3. 表示内容,视图是窗口;
    4. 表占物理空间,而视图不占物理空间,视图只是逻辑概念的存在;
    5. 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全角度说,视图可以防止用户接触数据表,从而不知表结构;
    6. 表属于全局模式的表,是实表;视图数据局部模式的表,是虚表;
    7. 视图的建立和删除只影响视图本身,不影响对应的基本表。

    转自:http://www.cnblogs.com/selene/p/4490503.html

  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/wyt007/p/9432215.html
Copyright © 2011-2022 走看看