SQL Server 2005系列教学(8) 视图

本文深入探讨SQL视图的作用、创建方法、权限管理与数据操作,揭示视图作为数据管理和安全机制的高效工具。通过实例演示如何创建视图以查看特定数据集,以及如何通过SQL语句构建复杂视图。了解如何利用视图简化数据操作,实现数据安全与访问控制。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

视图的作用:
1.       将用户限定在表中的特定行上,例如,只允许雇员看到工作跟踪表内关于自己的行。
2.       将用户限定在特定列上。例如,对于那些不负责处理工资的员工,只允许他们看见雇员表中的姓名列、性别列,部门列,等等,但却看不到任何包含工资信息的列。
可以让不同的用户以不同的方式看到不同或者是相同的数据集,职位不同,权限不同,则看到的结果不同。
3.       将多个表中的列联接起来,使它们看起来像一个表。
4.       大大简化了用户对数据的操作,屏蔽了数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据。
5.实现安全机制。  视图通常用来集中、简化、和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。避免了用户直接操作原始表。
 
 
创建视图:
有两种方法:一是SSMS图形界面
            另一个是SQL语句

 

通过SSMS图形界面来创建,修改、重命名及删除视图
可以利用向导和SSMS图形界面来创建视图。
注意:视图的属性----加密浏览,以后就不能再进行更改,让别人无法看到具体SELECT

 

下面我们来做第一个视图,作用就是查看每个公司的员工。我们的这个例子用到的是我们前面用到的dufei 数据库。
我们选择员工表——打开视图节点,里面已经有了两个系统自带的视图我们不管它们。我们选择“新建视图”——打开了视图的设计界面。上面的灰色区域是我们在这个视图中要用到的表的存放区域(关系图),工具框上的按纽我们可以通过它们对这个区域进行订制。我们看一下最后一个“添加表”按纽。我们把人事表和公司表都添加到关系图中!想显示那个表的什么字段只需要选中前的复选框是不是就可以了。下面就出现相应的代码:在代码区域右击选择“验证SQL语法”,如果说不报错,应该说就没有问题的。我们就运行一下是不是我们想要的结果,结果正确了我们是不是应该保存下来吧。我们选择工具框上的“保存”输入一个名字(view1.就可以了。以后我再想看同样的记录,只要打开这个视图,运行就可以了。就算以后数据库中的数据发生了改变,这里得到的也是最新的结果。
下面我们看一下如何通过一个SQL语句来建立视图;
格式:
Create view 视图名  [(column1,column2…)]

 

[ with encryption ] [ column]
AS
Select 语句
[ with check option]
查询语句

 

AS 是视图要执行的操作。后面是SELECT语句,该语句可以使用多个
表或其他的视图。
只能在当前数据库中创建视图。
视图不必是具体某个表的行和列的简单子集,可以用具有任意复杂性的select语句对多个表或其他视图进行操作。
如果视图所依赖的基本表被删除,则再次访问视图时,会产生错误信息。如果创建了新表或视图(表的结构与有前的基本表的结构完全一样)则该视图可以继续使用,否则,只能重新创建视图
[column] 指定视图的列别名。
create view nan_view
(姓名,性别,年龄)
as
select  * from

 

WITH ENCRYPTION 是否要加密
[ with check option] 强制视图上执行的所有数据修改语句都必须符合select语句的准则
 
例如我们建一个视图,作用是;显示员工表中所有男性记录。
Create view yuangong
As
Select    * from 员工表 where 性别=’

 

视图通常被作为一个虚拟表,这就意味着视图看上去像表,也像表一样操作,但视图就不像表一样包含数据,视图是从表导出的数据,其结构和数据是建立在对表的查询基础上的。和真实的表一样,视图也包括几个被定义的数据列和多个数据行,但从本质上讲,这些数据列和数据行来源于其所引用的表。因此,视图不是真实存在的基础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。

如:SELECT * FROM yuangong
select * from yuangong
也可以像表一样插入记录,删除记录,同样数据也是保存在表里!
insert into  yuangong (编号,姓名,性别) values (8,'bb','')
delete from yuangong  where 姓名='bb'

 

显示视图:
获取关于视图的信息:
1.       使用sql语句:
使用sp_helptest显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
格式:sp_helptest   视图名
如:sp_helptest  nan_view
此命令在多个行中显示用来创建对象的文本,其中每行可以有255个字符。

 

使用SSMS图形界面获取视图信息:

 

删除视图:

 

修改视图:
Alter view 视图名

 

格式同  creae view 视图名 一模一样

 

例:修改男员工视图,去掉加密和限制。和以前的相反。
Alter view   男员工工资视图(男员工姓名,员工工资)
AS
Select  姓名,工资  from yuangong   where 性别=’’ with check option

 

Sp_helptext ‘男员工工资视图

 

删除:Drop view  名称

 

重命名:sp_rename  旧名,新名

 

通过视图:检索,插入,删除,更新数据
插入记录时应注意:
1.       权限问题
2.       由于视图通常只引用表中的部分字段,未引用的字段如何填充数据:如允许空,主键等。
3.       视图中不能包含多个字段的组合。
4.       不能包含distinctgroup by 子句。
5.       如使用了with check option,则须符合where 子句。
6.       若视图中引用了多个数据表,则一次只能向一个表插入记录。
分别举例!!!
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值