视图的创建和使用
- 格式: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 ’
说明:不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义的转换成相应基本表的更新,如对平均成绩的更新。
行列子集视图是可更新的。