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

一、概述

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

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

二、分类

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

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

  分区视图:

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

三、优点和作用

3.1.简单化

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

3.2.安全性

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

3.3.逻辑数据独立性

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

四、

视图语法结构

--语法
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;

修改视图

alter view view_name
as select ......
where ......-

查看视图的信息

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

sqlserver——视图的更多相关文章

  1. sqlserver 视图能否有变量

    不能,sqlserver 视图一般不能有变量,也不能带存储过程

  2. SqlServer视图介绍以及创建方式

    1.,视图的介绍: (ps:学sqlServer视图是在面试问到之后学的,答不上来太low了,然后就去各种搜索操作对视图也有了自己的理解) 其实视图就是一张表,是一张表中或者多张表中经过某种筛选后显示 ...

  3. SqlServer视图查询效率测试

    一.  测试背景开发一个项目,数据库用的是sqlserver.帐号表数据有一两百万,不算大,也不算小.在考虑是否要使用视图,担心效率,百度了下资料,众说纷纭,好吧,实践是最好的证明,那么我们就来测试吧 ...

  4. SqlServer视图的创建与使用

    SqlServer系列之视图的创建与使用: 什么是视图? 视图的概述 在数据查询中,可以看到数据表设计过程中,考虑到数据的冗余度低.数据一致性等问题,通常对数据表的设计要满足范式的要求,因此也会造成一 ...

  5. SQLServer视图

    视图简介:通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图.SELECT 语句引用的数据表称为视图的基表.在SQL Server 2005系统中,可以把视图分为3种类型,即标准视图,索 ...

  6. mssql sqlserver 视图如何加密,让第三方用户查看不到其中的SQL语句

    转自:http://www.maomao365.com/?p=6719 摘要: 下文讲述视图加密的方法分享,通过此方法可以使视图只可使用,无法获取视图中sql脚本的内容,如下所示: 在创建视图的语法中 ...

  7. SQLserver视图修改sql

    语法: alter view dbo.视图名 as 更新后的视图SQL go 举个栗子: 原视图名为YOUR_VIEW其中SQL为:  select * form TableA 更新视图: alter ...

  8. sqlserver 视图用 case when

    视图用 case when 需要 用如下格式,[需要的列名]= case when...,而表里面的case 不用这样 [isNormal]=CASE WHENdbo.c_bdm_head.I_E_F ...

  9. SQLSERVER视图错位的解决办法

    原始需求如下: 有一个表T1 create table t1 (id int not null primary key ,v1 ) ) ,'aaa'); ,'bbb'); 有一个表TS,用于记录T1中 ...

随机推荐

  1. JS 模板引擎 Handlebars.js 中文说明

    Handlebars 为你提供了一个可以毫无挫折感的高效率书写 语义化的模板 所必需的一切. Mustache 模板和 Handlebars 是兼容的,所以你可以把Mustache模板拿来导入到Han ...

  2. CSS常识

    1.给一个div设置边框:border:1px #CCCCCC bold; 2.给DOM加小手:cursor:pointer; 取消小手:cursor:auto;

  3. Vue中data重置问题

    Object.assign() Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 目标对象有1个,后边可以有多个源对象.注意他只会拷贝源对 ...

  4. MARA 附加结构(增强字段)

  5. ThinkPHP利用数据库字段做栏目的无限分类

    一直以来对cms后台的栏目管理不太理解,尤其是子栏目顶级栏目这种关系,通过网上的搜索与自己的摸索,实现方法如下(原理是利用数据库的path字段): 1.建立简单的栏目表: CREATE TABLE ` ...

  6. 拓展gcd求不定方程通解

    void gcd(LL a,LL b,LL &d,LL &x,LL &y){ ){d=a;x=;y=;return;} gcd(b,a%b,d,x,y); int t=x; x ...

  7. BZOJ 2023 [Usaco2005 Nov]Ant Counting 数蚂蚁:dp【前缀和优化】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2023 题意: 有n个家族,共m只蚂蚁(n <= 1000, m <= 1000 ...

  8. PHP生成一个不重复随机数组的封装方法

    <?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...

  9. linux应用之mysql数据库指定版本的yum安装(centos)

    A Quick Guide to Using the MySQL Yum Repository Abstract The MySQL Yum repository provides RPM packa ...

  10. hdu-5734 Acperience(数学)

    题目链接: Acperience Time Limit: 4000/2000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others) ...