`
booby325
  • 浏览: 386570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL VIEW(视图)

 
阅读更多

视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生


视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,有些则不能(仅仅能查询)。视图是不保存数据的,不占物理空间。

 

二 视图的作用

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

    * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:
      使用权限可被限制在基表的行的子集上。

      使用权限可被限制在基表的列的子集上。  

      使用权限可被限制在基表的行和列的子集上。  

      使用权限可被限制在多个基表的连接所限定的行上。  

      使用权限可被限制在基表中的数据的统计汇总上。

      使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

   * 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

  

三 视图的安全性

     视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:

    1 在表中增加一个标志用户名的列;

    2 建立视图,是用户只能看到标有自己用户名的行;

    3 把视图授权给其他用户。

 

四 逻辑数据独立性

    视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:

    1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。

    2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

    3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。

    4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。

 

 

视图可以将多个表中的列联接起来,使它们看起来象一个表,但这个表却不会占用你的存储空间。

视图还可以用作跨表及跨域,在两台数据库之间做桥梁链接的作用,毕竟完全开启数据库的权限是不安全的,如果只开放给另一台数据库中的用户创建视图的权限,就能避免此类问题。用户也能方便的查询另一台数据库的数据。非常方便和安全。

 

什么是视图,视图是从一个或几个基本表导出的表,是个虚表。视图是数据库中行和列数据的集合,数据的来源是视图对应的查询语句所包含的表或其他数据库对象,视图的数据不是真正存储在数据库的某个位置,是执行查询的时候动态生成,数据还是存储在表中。

视图优点:

1、聚焦特定的数据。
2、简化数据操作
3、定制用户数据
4、对重构数据库提供了一定程度的逻辑独立性
5、合并分离的数据
6、屏蔽数据库的复杂性
7、简化用户权限的管理
8、便于数据的共享

 

 

CREATE VIEW (Transact-SQL) 语法:

http://msdn.microsoft.com/zh-cn/library/ms187956.aspx

 

SQL CREATE VIEW 语句

什么是视图?

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。

SQL CREATE VIEW 语法

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

注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

SQL CREATE VIEW 实例

可以从某个查询内部、某个存储过程内部,或者从另一个视图内部来使用视图。通过向视图添加函数、join 等等,我们可以向用户精确地提交我们希望提交的数据。

样本数据库 Northwind 拥有一些被默认安装的视图。视图 "Current Product List" 会从 Products 表列出所有正在使用的产品。这个视图使用下列 SQL 创建:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

我们可以查询上面这个视图:

 

SELECT * FROM [Current Product List]

Northwind 样本数据库的另一个视图会选取 Products 表中所有单位价格高于平均单位价格的产品:

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products) 

我们可以像这样查询上面这个视图:

SELECT * FROM [Products Above Average Price]

另一个来自 Northwind 数据库的视图实例会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:

CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName 

我们可以像这样查询上面这个视图:

SELECT * FROM [Category Sales For 1997]

我们也可以向查询添加条件。现在,我们仅仅需要查看 "Beverages" 类的全部销量:

SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'

SQL 更新视图

您可以使用下面的语法来更新视图:

SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No

SQL 撤销视图

您可以通过 DROP VIEW 命令来删除视图。

SQL DROP VIEW Syntax
DROP VIEW view_name
分享到:
评论

相关推荐

    sql Server 视图管理

    3. **使用SQL命令创建视图**:这是最灵活也是最常用的方式,通过`CREATE VIEW`命令可以直接编写SQL查询来定义视图,这种方式可以实现更复杂的数据逻辑。 #### 三、视图与查询的区别 - **查询**是在数据库中临时...

    sql建立视图的过程

    在SQL语言中,视图(View)是一种虚拟表,它并不实际存储数据,而是通过一个SELECT语句来定义,这个语句可以从一个或多个实际存在的表中选择数据。视图的作用在于提供了一种数据抽象的方式,可以简化复杂的查询,...

    sql server视图详解

    在SQL Server数据库管理系统中,视图是数据库设计和数据查询中的一个重要概念。视图可以被理解为一个虚拟的表,它并不实际存储数据,而是基于一个或多个表或视图的SELECT语句结果集。视图是数据库对象,提供了一种...

    sql视图复制工具

    在SQL数据库管理中,视图(View)是一种虚拟表,它并不存储数据,而是基于一个或多个表的查询结果。视图的创建是为了提供数据的另一种访问方式,它可以简化复杂的查询,隐藏敏感信息,或者聚合来自不同表的数据。在...

    SQL Server2008修改视图-SQL语句方式.pptx

    在 SQL Server 2008 中,修改视图是通过使用 Alter View 语句来实现的。下面将详细介绍修改视图的语法、实例和注意事项。 修改视图语法 修改视图的基本语法格式为: Alter View <视图名> [<列名>[, …]] As 语句>...

    清除sqlserver无效的视图及存储过程

    在SQL Server数据库管理中,有时由于项目的持续优化和升级,可能会遗留一些无效的视图或存储过程。这些对象可能由于代码改动、表结构调整或者不再被引用而变得无用,但它们依然存在于数据库中,占用资源并可能导致...

    SQL_Server视图和索引

    - **使用T-SQL语句创建视图**:通过`CREATE VIEW`语句可以定义视图的结构和数据源。例如: ```sql CREATE VIEW VIEW_CP_PRICE2000 WITH ENCRYPTION AS SELECT * FROM dbo.产品 WHERE 价格 ; ``` 这里使用了...

    SQL 实验报告(视图)

    本次实验旨在通过实际操作加深对SQL视图的理解及应用。视图是数据库中的一种虚拟表,它并不实际存储数据,而是根据定义的查询结果动态展示数据。通过视图可以简化复杂的查询语句、保护数据、提供一致的数据展示方式...

    Delphi创建SQLserver数据库视图的例子.rar

    Delphi创建SQLserver数据库视图的例子,使用create View语句来生成视图,当然本程序创建好视图后,也可删除视图,下面是详细的代码:  //创建一个视图:  procedure TForm1.Button1Click(Sender: TObject);  ...

    跨服务器建立视图sql

    ### 跨服务器建立视图SQL #### 一、引言 在实际的数据库管理与开发过程中,经常会遇到需要从不同的数据库服务器中获取数据并进行整合的情况。为了方便地实现这一需求,可以采用跨服务器查询的方式来构建视图。本文...

    实验五SQL的视图.doc

    实验五 SQL 的视图实验旨在熟悉 SQL 支持的有关视图的操作,能够熟练使用 SQL 语句来创建需要的视图,对视图进行查询和取消视图。 知识点1:视图的定义 视图是一种基于基本表的虚拟表,通过 SELECT 语句从基本表中...

    通过SQL_Server_2005索引视图提高性能

    ### 通过SQL Server 2005索引视图提高性能 #### 一、什么是索引视图? 索引视图是一种特殊的视图,在SQL Server 2005 Enterprise Edition中得到了增强。传统上,视图是基于一个或多个表的虚拟表,主要用于实现数据...

    如何在Oracle或SQLServer中对视图(view)加密以保护视图中的SQL代码?

    因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。

    索引、视图、标准SQL测试方法

    创建视图的SQL语句类似于`CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition`。视图不存储实际数据,而是根据需要动态生成结果。 至于**标准SQL测试方法**,这是确保数据库操作的...

    sql server 视图开发

    在SQL Server数据库管理系统中,视图是数据库设计和开发中的一个重要组成部分,尤其在复杂的业务逻辑和数据查询场景下,视图能提供极大的便利性。视图可以被看作是虚拟表,它不存储实际的数据,而是基于一个或多个表...

    sql数据库视图、存储过程.doc

    在 SQL 语言中,创建视图的语法为:CREATE VIEW 视图名 AS SELECT 语句。例如,创建一个名为 grade_view1 的视图,检索学生的成绩信息: ```sql IF EXISTS(SELECT * FROM sysobjects WHERE name='grade_view1' AND ...

    SQL Server2008创建视图-SQL语句方式.pptx

    SQL Server 2008 创建视图 - SQL 语句方式 本资源主要介绍了在 SQL Server 2008 中使用 SQL 语句创建视图的方法和语法结构。视图是从一个或多个表中导出的虚拟表,通过视图可以简化复杂的查询操作,提高数据访问...

    sql 创建数据库表、视图语句

    创建视图的SQL语句是`CREATE VIEW`: ```sql CREATE VIEW 视图名 AS SELECT 列1, 列2, ... FROM 表1 WHERE 条件; ``` 比如,我们可能需要一个只显示激活用户的视图: ```sql CREATE VIEW ActiveUsers AS SELECT ...

    SQLServer 视图 事务 索引

    SQL Server中的视图、事务和索引是数据库管理中的核心概念,它们各自扮演着重要的角色,帮助用户更高效、安全地操作和查询数据。 视图,作为数据库的一种抽象,是基于一个或多个表的SELECT查询结果集的逻辑表示。在...

Global site tag (gtag.js) - Google Analytics