ms sql server 的视图有什么用?(100分)

B

BornKilled

Unregistered / Unconfirmed
GUEST, unregistred user!
大大的有用啊
做mis的时候可以建一大堆视图来满足客户不同的查询需求
还可以从视图去更新表

一般我做mis视图的数量是表数量的5倍以上
 
Y

yangkee

Unregistered / Unconfirmed
GUEST, unregistred user!
建议你补习一下数据库的基本概念
 

林沐

Unregistered / Unconfirmed
GUEST, unregistred user!
视图是一种很有用的数据库对象,用它可以创建一个自定义的结果集,其中包含来自一个
或多个数据库表中的字段。可以把视图看作是一个虚拟的数据库表,对它的操作与对实际
表的操作没有什么区别。通过视图,可以为一个或一组用户定义所需要的数据子集,同时
也限制了用户对视图外的数据的访问。要创建一个视图,可以使用C R E ATE VIEW语句。
在SQL Server2000中,有三种方式:
• 基于单一表创建横向子集。
例如教师的通讯信息可以这样定义一个视图:
SELECT name AS 姓名, tel AS 电话, address AS 地址, email AS 电子邮箱FROM
dbo.teacherinfo
• 基于单一表中部分行和列创建子集。
• 基于多个数据库表的行和列创建子集。下面的视图包含了stuinfo表的字段,同时也有来
自grade表的两个字段。对于客户程序而言,视图中的这些行和列就像来自同一个表一样:
SELECT TOP 100 PERCENT dbo.stuinfo.studentid AS 学号, dbo.stuinfo.name AS 姓名,
dbo.stuinfo.sex AS 性别, dbo.stuinfo.birthday AS 出生日期, dbo.stuinfo.photo AS 照片,
dbo.stuinfo.idcard AS 身份证号, dbo.stuinfo.nation AS 民族,
dbo.stuinfo.nativeplace AS 籍贯, dbo.stuinfo.comefrom AS 生源地,
dbo.stuinfo.politics AS 政治面目, dbo.stuinfo.family AS 家庭出身,
dbo.stuinfo.familyaddress AS 家庭地址, dbo.stuinfo.postalcode AS 邮政编码,
dbo.stuinfo.familytel AS 家庭电话, dbo.stuinfo.health AS 健康状况,
dbo.stuinfo.height AS 身高, dbo.stuinfo.scorce AS 入学成绩,
dbo.stuinfo.degree AS 学历, dbo.stuinfo.traintype AS 培养方式,
dbo.stuinfo.years AS 修业年限, dbo.stuinfo.indate AS 入学时间,
dbo.stuinfo.graduatedate AS 毕业时间, dbo.stuinfo.department AS 系别,
dbo.stuinfo.majorpro AS 主修专业, dbo.stuinfo.majorpro2 AS 第二专业,
dbo.stuinfo.minorpro AS 辅修专业, dbo.stuinfo.englishlevel AS 英语水平,
dbo.stuinfo.computerlevel AS 计算机水平, dbo.stuinfo.specialty AS 特长爱好,
dbo.stuinfo.rtdate AS 入团时间, dbo.stuinfo.rddate AS 入党时间,
dbo.stuinfo.studyplace AS 办学地点, dbo.stuinfo.entryway AS 入学方式,
dbo.stuinfo.studyform AS 办学形式, dbo.stuinfo.duty AS 曾任职务,
dbo.stuinfo.encourage AS 奖惩情况, dbo.stuinfo.goward AS 毕业去向,
dbo.grade.gradename AS 班级, dbo.stuinfo.tel AS 电话, dbo.stuinfo.email AS 电子邮箱,
dbo.stuinfo.addr AS 地址, dbo.stuinfo.gradeid, dbo.stuinfo.trainkind AS 培养类别,
dbo.stuinfo.trainlayer AS 培养层次
FROM dbo.stuinfo INNER JOIN
dbo.grade ON dbo.stuinfo.gradeid = dbo.grade.gradeid
对视图可以进行很多操作。这些视图则可以被更新。
 
P

panjf

Unregistered / Unconfirmed
GUEST, unregistred user!
能谈谈在DELPHI中的应用吗?
 
W

wys205

Unregistered / Unconfirmed
GUEST, unregistred user!
FT,视图跟DELPHI又没关系,只跟你的客户需求有关系,客户需求一般要求很灵活,而数据库
又不能老变,而视图可以满足客户的需求,而不用该表结构。
 
P

panjf

Unregistered / Unconfirmed
GUEST, unregistred user!
在D中如何用它?
 
F

flash6

Unregistered / Unconfirmed
GUEST, unregistred user!
和表的用法基本一样。
 
S

sportsman

Unregistered / Unconfirmed
GUEST, unregistred user!
补充:
用视图很大的一个原因是权限问题 :)
让用户select from 视图,而把真正的表隔离开来。
 

研志

Unregistered / Unconfirmed
GUEST, unregistred user!
视图是一种表,但是一种虚表,是建立在真正意义上的虚表。查询的时候可以字段可以有多种
情况,从而能满足不同用户的需要
 

栋栋

Unregistered / Unconfirmed
GUEST, unregistred user!
视图好像没有多少实际意义上的用处吧?

我从来不用视图
 
H

htw

Unregistered / Unconfirmed
GUEST, unregistred user!
视图怎么会没有用?

你可以使用视图作为安全机制
通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,
进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。无论在
基础表(一个或多个)上的权限集合有多大,都必须授予、拒绝或废除访问视图中数
据子集的权限。

例如,某个表的 salary 列中含有保密职员信息,但其余列中含有的信息可以由所有
用户使用。可以定义一个视图,它包含表中除敏感的 salary 列外所有的列。只要表
和视图的所有者相同,授予视图上的 SELECT 权限就使用户得以查看视图中的非保密
列而无须对表本身具有任何权限。

通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不
同的数据子集内。例如:

可以将访问限制在基表中行的子集内。例如,可以定义一个视图,其中只含有商业书籍
或心理书籍的行,并向用户隐藏有关其它类型书籍的信息。


可以将访问限制在基表中列的子集内。例如,可以定义一个视图,其中含有 titles 表
中的所有行,但省略了 royalty 和 advance 列,因为这些信息比较敏感。


可以将访问限制在基表中列和行的子集内。


可以将访问限制在符合多个基表联接的行内。例如,可以定义一个视图,它
联接表 titles、authors 和 titleauthor 表以显示作者姓名及其撰写的书籍。
该视图隐藏作者的个人信息以及著作的财务信息。


可以将访问限制在基表中数据的统计汇总内。例如,可以定义一个视图,其中只含有
每类书籍的平均价格。


可以将访问限制在另一个视图的子集内或视图和基表组合的子集内。
 
Y

yukuang

Unregistered / Unconfirmed
GUEST, unregistred user!
对,我觉得视图最重要的是限制权限问题
 
C

chenlh

Unregistered / Unconfirmed
GUEST, unregistred user!
同志们,程序写了一部分,变表结构的话,程序是不是要改变啊
用视图的话,as一下就可以了吧

多表连接的话,join....join的在程序里一大片,你不烦啊

另外是权限的问题,隐藏敏感数据。

我跟楼上的某位从不用视图的兄弟相反,我一般不直接在表中select数据
,而都是在视图中。
 
T

tkai

Unregistered / Unconfirmed
GUEST, unregistred user!
视图的功能太大了,主要是统计,查询
 
M

madm

Unregistered / Unconfirmed
GUEST, unregistred user!
在视图上再做查询好像效率很低,是不是用不到视图内表的索引
 

慕容乾坤

Unregistered / Unconfirmed
GUEST, unregistred user!
都让大家说了,我没什么说的了。
 
Q

Qiuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
做数据库应用,我一般很少使用 SQL 本身的安全机制,所以视图在限制权限方面的应用就
很少了。我一般将视图用在需要重复使用的复杂的查询上,这样,客户端就不需重复这些
查询了,维护起来也方便。
 
B

book523

Unregistered / Unconfirmed
GUEST, unregistred user!
视图能把多个表的关系连起来,从而实现复杂的查询要求,在程序中减轻很多工作量!
 
H

hbezwwl

Unregistered / Unconfirmed
GUEST, unregistred user!
楼上各位说的都有理,而PANJF应该多学习一些数据库方面的
基础知识,不然开发数据库系统时肯定多费力少办事.
 
顶部