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,ProductNameFROM
ProductsWHERE
Discontinued=No
我们可以查询上面这个视图:
SELECT * FROM [Current Product List]
Northwind 样本数据库的另一个视图会选取 Products 表中所有单位价格高于平均单位价格的产品:
CREATE VIEW
[Products Above Average Price]AS
SELECT
ProductName,UnitPriceFROM
ProductsWHERE
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
CategorySalesFROM
[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
发表评论
-
Android中SQLiteOpenHelper类的onUpgrade方法的作用
2012-02-09 11:50 4601Android中SQLiteOpenHelper类的onUpg ... -
在线升级Android应用程序的思路
2012-02-07 11:34 880在线升级Android应用程序的思路 http://www. ... -
Android数据库内容变化的监听
2012-02-07 11:31 6033Android数据库内容变化的监听 首先介绍内容监 ... -
android中的数据库操作
2012-02-07 10:50 1451android中的数据库操作 ... -
SQLiteOpenHelper类与自动升级数据库
2012-02-07 10:31 2283SQLiteOpenHelper类与自动升级数据库 S ... -
SQLite外键的实现
2012-02-07 10:30 1717SQLite外键的实现 SQLite现在的版本还不支持 ... -
29日修改数据库设计
2012-01-29 15:24 0数据表设计: 账号信息表account ... -
最新数据库设计
2012-01-28 21:21 0数据表设计: 工资管理 账号信息表Acc ... -
数据库设计
2012-01-11 15:27 0数据库设计 信息表:infotypecreate ta ... -
cmd下操作mysql
2011-12-20 14:11 986cmd下操作mysql 连接mysql服务器 mysql ... -
你能说出SQL聚集索引和非聚集索引的区别吗?
2011-12-07 15:18 0你能说出SQL聚集索引和非聚集索引的区别吗? http ... -
打造自己的数据访问层
2011-12-07 15:01 1287打造自己的数据访问层 http://database. ... -
MySQL数据库新特性之存储过程入门教程
2011-12-07 14:38 893MySQL数据库新特性之存储过程入门教程 http:/ ... -
论MySQL何时使用索引,何时不使用索引
2011-12-07 14:03 935论MySQL何时使用索引, ... -
详细讲解如何将数据模型转换成数据库设计
2011-12-07 12:42 1120详细讲解如何将数据模 ... -
讲解SQL与Oracle外键约束中的级联删除
2011-12-07 12:33 0讲解SQL与Oracle外键约束中的级联删除 当代 ... -
SQLite-CREATE TRIGGER
2011-12-07 09:07 1369SQLite-CREATE TRIGGER http: ... -
主键与外键的关系、级联保存、更新、删除
2011-12-06 14:16 7248主键与外键的关系、级联保存、更新、删除 http://www ... -
MySQL 数据类型
2011-12-06 10:18 792MySQL 数据类型 数值类型 MySQL 的数 ... -
MyISAM InnoDB 区别
2011-12-02 17:03 767MyISAM InnoDB 区别 http://www.ph ...
相关推荐
3. **使用SQL命令创建视图**:这是最灵活也是最常用的方式,通过`CREATE VIEW`命令可以直接编写SQL查询来定义视图,这种方式可以实现更复杂的数据逻辑。 #### 三、视图与查询的区别 - **查询**是在数据库中临时...
在SQL语言中,视图(View)是一种虚拟表,它并不实际存储数据,而是通过一个SELECT语句来定义,这个语句可以从一个或多个实际存在的表中选择数据。视图的作用在于提供了一种数据抽象的方式,可以简化复杂的查询,...
在SQL Server数据库管理系统中,视图是数据库设计和数据查询中的一个重要概念。视图可以被理解为一个虚拟的表,它并不实际存储数据,而是基于一个或多个表或视图的SELECT语句结果集。视图是数据库对象,提供了一种...
在SQL数据库管理中,视图(View)是一种虚拟表,它并不存储数据,而是基于一个或多个表的查询结果。视图的创建是为了提供数据的另一种访问方式,它可以简化复杂的查询,隐藏敏感信息,或者聚合来自不同表的数据。在...
在 SQL Server 2008 中,修改视图是通过使用 Alter View 语句来实现的。下面将详细介绍修改视图的语法、实例和注意事项。 修改视图语法 修改视图的基本语法格式为: Alter View <视图名> [<列名>[, …]] As 语句>...
在SQL Server数据库管理中,有时由于项目的持续优化和升级,可能会遗留一些无效的视图或存储过程。这些对象可能由于代码改动、表结构调整或者不再被引用而变得无用,但它们依然存在于数据库中,占用资源并可能导致...
因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。
- **使用T-SQL语句创建视图**:通过`CREATE VIEW`语句可以定义视图的结构和数据源。例如: ```sql CREATE VIEW VIEW_CP_PRICE2000 WITH ENCRYPTION AS SELECT * FROM dbo.产品 WHERE 价格 ; ``` 这里使用了...
本次实验旨在通过实际操作加深对SQL视图的理解及应用。视图是数据库中的一种虚拟表,它并不实际存储数据,而是根据定义的查询结果动态展示数据。通过视图可以简化复杂的查询语句、保护数据、提供一致的数据展示方式...
Delphi创建SQLserver数据库视图的例子,使用create View语句来生成视图,当然本程序创建好视图后,也可删除视图,下面是详细的代码: //创建一个视图: procedure TForm1.Button1Click(Sender: TObject); ...
### 跨服务器建立视图SQL #### 一、引言 在实际的数据库管理与开发过程中,经常会遇到需要从不同的数据库服务器中获取数据并进行整合的情况。为了方便地实现这一需求,可以采用跨服务器查询的方式来构建视图。本文...
实验五 SQL 的视图实验旨在熟悉 SQL 支持的有关视图的操作,能够熟练使用 SQL 语句来创建需要的视图,对视图进行查询和取消视图。 知识点1:视图的定义 视图是一种基于基本表的虚拟表,通过 SELECT 语句从基本表中...
### 通过SQL Server 2005索引视图提高性能 #### 一、什么是索引视图? 索引视图是一种特殊的视图,在SQL Server 2005 Enterprise Edition中得到了增强。传统上,视图是基于一个或多个表的虚拟表,主要用于实现数据...
创建视图的SQL语句类似于`CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition`。视图不存储实际数据,而是根据需要动态生成结果。 至于**标准SQL测试方法**,这是确保数据库操作的...
在SQL Server数据库管理系统中,视图是数据库设计和开发中的一个重要组成部分,尤其在复杂的业务逻辑和数据查询场景下,视图能提供极大的便利性。视图可以被看作是虚拟表,它不存储实际的数据,而是基于一个或多个表...
在 SQL 语言中,创建视图的语法为:CREATE VIEW 视图名 AS SELECT 语句。例如,创建一个名为 grade_view1 的视图,检索学生的成绩信息: ```sql IF EXISTS(SELECT * FROM sysobjects WHERE name='grade_view1' AND ...
SQL Server 2008 创建视图 - SQL 语句方式 本资源主要介绍了在 SQL Server 2008 中使用 SQL 语句创建视图的方法和语法结构。视图是从一个或多个表中导出的虚拟表,通过视图可以简化复杂的查询操作,提高数据访问...
创建视图的SQL语句是`CREATE VIEW`: ```sql CREATE VIEW 视图名 AS SELECT 列1, 列2, ... FROM 表1 WHERE 条件; ``` 比如,我们可能需要一个只显示激活用户的视图: ```sql CREATE VIEW ActiveUsers AS SELECT ...
在SQL Server中,视图是一种虚拟表,它是由SQL SELECT语句创建的,可以用来封装复杂的查询逻辑,简化数据访问,并提供一定程度的数据安全性。视图并不实际存储数据,而是当查询视图时,根据其定义的SELECT语句动态...