视图是一种很有用的数据库对象,用它可以创建一个自定义的结果集,其中包含来自一个
或多个数据库表中的字段。可以把视图看作是一个虚拟的数据库表,对它的操作与对实际
表的操作没有什么区别。通过视图,可以为一个或一组用户定义所需要的数据子集,同时
也限制了用户对视图外的数据的访问。要创建一个视图,可以使用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
对视图可以进行很多操作。这些视图则可以被更新。