视图的创建和使用

  • 格式:doc
  • 大小:40.00 KB
  • 文档页数:3

视图的创建和管理

 视图的概念

 创建视图

 查询视图

 更新视图

一.视图的概念

1.基本表(Base Table):是本身独立存在的表,如:学生表,课程表

2.视图(View):是从一个或者多个基本表导出的表

 视图的结构和数据是对数据表进行查询的结果。

 视图是一种数据库对象,不是真实存在的基础表而是一个虚拟表。用户可以像对基本表一样对它进行操作。

 使用视图的优点和作用:简化数据操作,提高数据安全性。

二.创建视图

1、使用企业管理器创建视图

选择数据库,在“视图”上点右键,选“新建视图”->“添加表”选用户表和视图,->”关闭”。在表格中复选框划勾,第2个窗格中,输出框选中,可以在“所在院系”准则中输入“=’计算机’”,准则对应WHERE子句。

右键窗格,选属性,选“顶端”可以限制视图最多输出多少条记录,“DISTINCT值”可以选择不输出值相同的记录,”加密浏览”对视图定义加密。

点“!”可输出视图的结果,最后保存。

2、使用企业管理器的“向导”创建视图

“工具”->“向导”->“视图向导”->选数据库->选表->选字段->输入条件“WHERE 入学年份<’2006-1-1’”

3、 用T-SQL语句创建与管理视图

1)使用CREATE VIEW 创建视图

格式: CREATE VIEW <视图名>[(<字段名>[,<字段名>]….)]

AS <子查询>

[WITH CHECK OPTION ]

(1)行列子集视图-去掉了基本表的某些字段,保留了主键

【例1】创建一个行列子集视图<计算机学生>

CREATE VIEW 计算机学生

AS

SELECT 学号,姓名,年龄,性别,所在院系

FROM 学生表 WHERE 所在院系=’计算机’

(2)建立在多个表上的视图

【例2】创建计算机系中选修了“C801”课程的学生视图

CREATE VIEW 选课学生(学号,姓名,性别,所在院系,课程号,成绩)

AS

SELECT S.学号, 姓名, 性别,所在院系, 课程号, 成绩 FROM 学生表 S ,成绩表 C

WHERE S.学号=C.学号 AND 所在院系=’计算机’ AND 课程号=’C801’

(3)在视图上的操作

【例3】创建计算机系中选修了“C801”课程并且性别为女的学生视图

CREATE VIEW 选课女学生

AS

SELECT *

FROM 选课学生

WHERE 性别=’女’

2)表达式视图

可以根据需要,增加一些字段列,在实际表中并不存在,称为虚拟字段,带虚拟字段的视图为带表达式的视图。

【例4】创建一个学生出生年份的视图

CREATE VIEW birthday(学号,姓名,出生年份)

AS

SELECT 学号,姓名,2007-年龄

FROM 学生表

3)使用集合函数创建视图

【例5】将学生的学号和平均成绩定义为一个视图。

CREATE VIEW average(学号,平均成绩)

AS

SELECT 学号,AVG(成绩) FROM 成绩表 GROUP BY 学号

三.查询视图

【例7】在计算机学生的视图上,列出年龄大于20的所有学生

SELECT 学号,姓名,性别,年龄

FROM 计算机学生

WHERE 年龄>20

【例8】在average视图上查询平均成绩大于80分的学生和平均成绩

SELECT * FROM average WHERE 平均成绩>80

四.更新视图

更新视图的同时,相应的基表的数据也会发生变化

1、插入操作[INSERT ]

【例9】向计算机学生视图中插入一条新记录,其中学号为“408013101”,姓名为“张成”,性别“男”,年龄为19岁,所在院系为计算机

INSERT INTO 计算机学生

VALUES(‘408013101’,’张成’,’男’,’19’, ’计算机’)

2、修改操作[UPDATE]

【例10】将计算机学生视图中学号为“408013101”的学生姓名改为“张成成”

UPDATE 计算机学生

SET 姓名=’张成成’ WHERE 学号=’408013101’

3、删除操作[DELETE]

注意:WHERE子句中的字段应该是在视图中定义过的;

视图引用多个表时,无法用DELETE命令删除数据。

【例11】删除视图计算机学生中学号为408013101的记录

DELETE

FROM 计算机学生

WHERE 学号=’ 408013101 ’

说明:不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义的转换成相应基本表的更新,如对平均成绩的更新。

行列子集视图是可更新的。