SQL创建视图
2017-12-05 09:18
204 查看
1、视图的理解
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据 。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表 。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表 一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。
2、视图的用途
– 筛选表中的行
– 防止未经许可的用户访问敏感数据
– 降低数据库的复杂程度
– 将多个物理数据库抽象为一个逻辑数据库
使用视图可以给用户和开发人员带来很多好处。具体为:
A. 对最终用户的好处
( 1 )结果更容易理解
创建视图时,可以将列名改为有意义的名称,使用户更容易理解列所代表的内容。在视图中修改列名不会影响基表的列名。
( 2 )获得数据更容易
很多人对 SQL 不太了解,因此对他们来说创建对多个表的复杂查询很困难。可以通过创建视图来方便用户访问多个表中的数据。
B. 对开发人员的好处
( 1 )限制数据检索更容易
开发人员有时需要隐藏某些行或列中的信息。通过使用视图,用户可以灵活地访问他们需要的数据,同时保证同一个表或其他表中的其他数据的安全性。要实现这一目标,可以在创建视图时将要对用户保密的列排除在外。
( 2 )维护应用程序更方便
调试视图比调试查询更容易。跟踪视图中过程的各个步骤中的错误更为容易,这是因为所有的步骤都是视图的组成部分
3、 如何创建使用视图
• 使用 T-SQL 语句创建视图的语法
[javascript] view plain copy
CREATE VIEW view_name
AS
<select语句>
IF EXISTS (SELECT * FROM sysobjects WHERE /*检测是否存在*/
name = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks /*删除视图*/
GO
CREATE VIEW view_stuInfo_stuMarks /*创建视图*/
AS
SELECT 姓名=stuName,学号=stuInfo.stuNo,
笔试成绩 =writtenExam, 机试成绩=labExam,
平均分=(writtenExam+labExam)/2
FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.stuNo=stuMarks.stuNo
GO
SELECT * FROM view_stuInfo_stuMarks /*使用视图*/
从一个或者多个表或视图中导出的虚拟表,其结构和数据是建立在对表的查询基础上的。
理论上它可以像普通的物理表一样使用,例如增、删、改、查等,修改视图中的数据实际上是修改
原始数据表。因为修改视图有许多限制,所以在实际开发中一般视图仅做查询使用。
4、
自己使用的小例子:
[c-sharp]
view plain
copy
use Power
GO
create view Test
as
select b.id as lineareaid,b.qymc as qymc,a.lineyear_month as lineyear_month from Linearea as b inner join LineLoss as a on a.lineareaid=b.id
union all
select b.id as lineareaid,b.qymc as qymc,c.lineyear_month as lineyear_month from Linearea as b inner join LineData as c on c.lineareaid=b.id
=====================================================
在SQL语句只直接使用视图和普通表一样使用:
select * from Test
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据 。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表 。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表 一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。
2、视图的用途
– 筛选表中的行
– 防止未经许可的用户访问敏感数据
– 降低数据库的复杂程度
– 将多个物理数据库抽象为一个逻辑数据库
使用视图可以给用户和开发人员带来很多好处。具体为:
A. 对最终用户的好处
( 1 )结果更容易理解
创建视图时,可以将列名改为有意义的名称,使用户更容易理解列所代表的内容。在视图中修改列名不会影响基表的列名。
( 2 )获得数据更容易
很多人对 SQL 不太了解,因此对他们来说创建对多个表的复杂查询很困难。可以通过创建视图来方便用户访问多个表中的数据。
B. 对开发人员的好处
( 1 )限制数据检索更容易
开发人员有时需要隐藏某些行或列中的信息。通过使用视图,用户可以灵活地访问他们需要的数据,同时保证同一个表或其他表中的其他数据的安全性。要实现这一目标,可以在创建视图时将要对用户保密的列排除在外。
( 2 )维护应用程序更方便
调试视图比调试查询更容易。跟踪视图中过程的各个步骤中的错误更为容易,这是因为所有的步骤都是视图的组成部分
3、 如何创建使用视图
• 使用 T-SQL 语句创建视图的语法
[javascript] view plain copy
CREATE VIEW view_name
AS
<select语句>
IF EXISTS (SELECT * FROM sysobjects WHERE /*检测是否存在*/
name = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks /*删除视图*/
GO
CREATE VIEW view_stuInfo_stuMarks /*创建视图*/
AS
SELECT 姓名=stuName,学号=stuInfo.stuNo,
笔试成绩 =writtenExam, 机试成绩=labExam,
平均分=(writtenExam+labExam)/2
FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.stuNo=stuMarks.stuNo
GO
SELECT * FROM view_stuInfo_stuMarks /*使用视图*/
从一个或者多个表或视图中导出的虚拟表,其结构和数据是建立在对表的查询基础上的。
理论上它可以像普通的物理表一样使用,例如增、删、改、查等,修改视图中的数据实际上是修改
原始数据表。因为修改视图有许多限制,所以在实际开发中一般视图仅做查询使用。
4、
自己使用的小例子:
[c-sharp]
view plain
copy
use Power
GO
create view Test
as
select b.id as lineareaid,b.qymc as qymc,a.lineyear_month as lineyear_month from Linearea as b inner join LineLoss as a on a.lineareaid=b.id
union all
select b.id as lineareaid,b.qymc as qymc,c.lineyear_month as lineyear_month from Linearea as b inner join LineData as c on c.lineareaid=b.id
=====================================================
在SQL语句只直接使用视图和普通表一样使用:
select * from Test
相关文章推荐
- sql 2000 分布式分区视图的创建步骤
- sql server2012重复执行创建表视图sql及带行号的视图
- T-SQL sqlServer 创建视图
- Scripts:创建物化视图例子example_create_materialized_view.sql
- oracle导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等
- 精通数据库SQL——索引与视图的创建
- 创建和触发sql2005视图中的触发器
- 创建和触发sql2005视图中的触发器
- SQL远程映射数据库创建视图
- 利用Sql Server Management Studio 创建视图的问题
- Oracle之SQL基础--创建数据库对象(序列 视图)及索引
- SQL视图的创建和使用
- Sql视图创建语句及修改视图
- SQL视图创建索引
- sql 视图创建
- VC++ 表格、完整性约束、视图、触发器、存储过程的创建SQL语句
- SQL学习之用命令方式创建、修改、删除视图
- SQL-Server-视图及索引的创建及使用word版
- 创建视图的sql、从视图中查询数据、视图的好处
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建