视图是从一个或者多个表中查询数据的另一种方式。利用视图可以集中、简化定制数据库,同时还能保障安全。

  视图其结构和数据是建立在对应的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但本质而言,这些数据列和数据行来源于他所引用的表。所以试图不是真是存在的基础表,而是一张虚表。我们也可以对师徒中的数据进行增删查改(有一定限制)。

  当然视图也有一定的优缺点:

  ● 简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。
  ● 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。
  ● 逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

  视图也存在一些缺点,主要如下。
  ● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。
  ● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。

  一、为整表创建视图并查看其信息

--------创建一个与Student表对应的视图
CREATE VIEW Student_view
AS
select * from Student --------查询这个视图
select * from student_view

  二、为视图创建视图并查看其信息

--------为Student_view视图创建一个所有男同学的视图Boy_View
create view Boy_View
as
select * from Student_view where Ssex='男' --------查询这个视图
select * from Boy_View

  

  三、为列创建视图并查看其信息

--------为列创建视图并查看其信息
create view NameAge_View
as
select Sname,Sage from Student --------查询这个视图
select * from NameAge_View

  四、为表创建具有不同字段名的视图并查看其信息

--------为表创建具有不同字段名的视图并查看其信息
--------Student表中所有男同学的姓名和性别
CREATE VIEW NewCloumnName_View(Name,Age)
AS
select Sname,Ssex from Student
where Ssex='男' --------查询这个视图
select * from NewCloumnName_View

   五、为表创建具有不同字段名的视图并查看其信息

--------利用视图简化表的链接
--------Student,Teacher,Course表关联显示,学生的语文成绩
CREATE VIEW join_View(XM,KC,CJ)
AS
select Sname,Cname,score from Student,Course,Sc
where Sc.S#=Student.S#
and Sc.C#=Course.C# and Course.Cname='语文' --------查询这个视图
select * from join_View

  六、修改视图

-------修改join_View视图中的数据
---------将王五同学的成绩改成999999
update join_View set CJ='' where XM='王五' --------查询这个视图
select * from join_View -----数据已经变为999999
--------查询原表数据
select Sname,Cname,score from Student,Course,Sc
where Sc.S#=Student.S#
and Sc.C#=Course.C# and Course.Cname='语文' -----数据已经变为999999

  网上有些人说,视图只能查看删除,不能修改,但是个人实际操作发现,修改后,原表数据会跟着修改。

  对于以上就是对视图的讲解基本操作,其中AS 后面的SQL语句是可以添加任意条件查询的,复杂查询就不做操作了,可以自行扩展。

  七、删除销毁视图

DROP VIEW join_View

  删除视图对实际表中的数据是不会有影响的。

  八、视图的存放位置

  

   九、注意事项

  

  使用视图的几点原则:

  1. 和表一样,视图也有唯一的名字。不仅视图之间不允许 有相同的名字,并且视图与表业不允许拥有相同的名字。
  2. 视图的创建 个数不受限制,用户可以创建任意多个视图。
  3. 用户要创建试图,必须从数据库管理员那里得到权限。
  4. 视图可以嵌套,即可以创建视图的视图。(也就是第二条)
  5. 一些数据库管理系统(SQL Service)禁止用户在查询语句中使用Order By字句。(也就是第九条)

Sql Server的艺术(一) 视图的增删查改的更多相关文章

  1. CATransition:视图替换动画:子视图的增删查改

    CATransition通常用于通过CALayer控制UIView内子控件的过渡动画,比如删除子控件,添加子控件,切换两个子控件等. 用于子视图的增删查改:

  2. SQL Server索引 - 索引(物化)视图 <第九篇>

    一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum( ...

  3. SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...

  4. SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...

  5. sql server中如何修改视图中的数据?

    sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...

  6. SQL Server跨服务器建立视图

    create view View_AppCus as select dwmch,zjm from ksoa.dbo.mchk SQL Server跨服务器操作经常需要用到,下面就为你介绍的是SQL S ...

  7. 常用SQL语句(增删查改、合并统计、模糊搜索)

    转自:http://www.cnblogs.com/ljianhui/archive/2012/08/13/2695906.html 常用SQL语句 首行当然是最基本的增删查改啦,其中最重要的是查. ...

  8. EF各版本增删查改及执行Sql语句

    自从我开始使用Visual Studio 也已经经历了好几个版本了,而且这中间EF等框架的改变也算是比较多的.本篇文章记录下各个版本EF执行Sql语句和直接进行增删查改操作的区别,方便自己随时切换版本 ...

  9. EF增删查改加执行存储过程和sql语句,多种方法汇总

    ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubTim ...

随机推荐

  1. 【C#系列】浅谈委托和委托

    本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章主要采用理论和代码实例相结合方法来论述委托和事件,涉及到一些边界技术,如软件架构的OCP原则(开-闭原则), 软件架 ...

  2. Linux(常用命令) 中常用的压缩丶解压缩格式命令和参数详解

    Linux中常用的压缩格式后缀名有:①.zip  ②.gz  ③.bz2  ④.tar.gz  ⑤.tar.bz2 ①.zip后缀名格式 1.压缩 语法: ①zip 压缩文件名 源文件 (压缩文件) ...

  3. BZOJ 1293: [SCOI2009]生日礼物【单调队列】

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2534  Solved: 1383[Submit][Stat ...

  4. Kruskal求最小生成树

    #include<bits/stdc++.h> using namespace std; ; ; const int inf = 0x3f3f3f3f; ; typedef long lo ...

  5. python笔记一(正则表达式)

    #!/usr/bin/env python # -*- coding: utf-8 -*- # 1 如果直接给出字符,则表示精确匹配 # 2 \d 表示数字, \w 表示字母或数字, . 可以匹配任意 ...

  6. 慕课网-前端JavaScrpt基础面试技巧-学习笔记

    章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作 ...

  7. md5加密以及可逆的加密解密算法

    md5加密 package gov.mof.fasp2.gcfr.adjustoffset.adjust; import java.security.MessageDigest; public cla ...

  8. mysql中使用show table status 查看表信息

    学习标签: mysql 本文导读:在使用mysql数据库时,经常需要对mysql进行维护,查询每个库.每个表的具体使用情况,Mysql数据库可以通过执行SHOW TABLE STATUS命令来获取每个 ...

  9. GBK,UTF8是什么?有什么区别,做网站选择哪种好?

    GBK包含全部中文字符: UTF-8则包含全世界所有国家需要用到的字符. GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准) UTF-8编码的文字可以在各国各种支持 ...

  10. JVM核心之JVM运行和类加载全过程

    为什么研究类加载全过程? 有助于连接JVM运行过程 更深入了解java动态性(解热部署,动态加载),提高程序的灵活性 类加载机制 JVM把class文件加载到内存,并对数据进行校验.解析和初始化,最终 ...