任务四 使用与修改视图
知识点
1. 视图可以执行哪些操作?
答:视图定义好后,可以像使用基本表一样进行以下操作:
- 查询数据:通过SELECT语句从视图中查询数据
- 更新数据:通过UPDATE语句经视图更新基本表中的数据
- 插入数据:通过INSERT语句经视图向基本表插入数据
- 删除数据:通过DELETE语句经视图删除基本表中的数据
2. 通过视图查询数据的语法和示例是什么?
答:通过视图查询数据与查询基本表的语法完全相同。例如:
SELECT 姓名, 分数 FROM view_xscj WHERE 姓名='李桂花';
由于视图view_xscj中已经包含了所需的学号、姓名、课程号和分数信息(来源于SCORE表和student表的连接查询),因此可以直接从该视图中获取数据,无需再编写复杂的多表连接查询。
3. 通过视图更新数据的语法是什么?
答:使用UPDATE语句通过更新视图来更新基本表中的数据,语法格式:
UPDATE 视图名
SET 列名1=值1, 列名2=值2, ..., 列名n=值n
WHERE 条件表达式;
例如:UPDATE view_teacher SET 年龄=30 WHERE 姓名='李博'; 通过view_teacher视图将教师"李博"的年龄修改为30,实际上修改的是teacher表中对应记录的Age字段。
4. 通过视图插入数据的语法是什么?
答:使用INSERT语句通过视图向基本表插入数据,语法格式:
INSERT [INTO] 视图名[(列名列表)]
VALUES(值列表1)[, (值列表2), ..., (值列表n)];
例如:INSERT INTO view_teacher(工号, 姓名, 年龄) VALUES('2004', '杨柳', 27); 通过view_teacher视图向teacher表插入一条新记录。
5. 通过视图删除数据的语法是什么?
答:使用DELETE语句通过视图删除基本表中的数据,语法格式:
DELETE FROM 视图名
[WHERE 条件表达式];
例如:DELETE FROM view_teacher WHERE 姓名='杨柳'; 通过view_teacher视图删除teacher表中姓名为"杨柳"的记录。
6. 通过视图更新数据有什么限制?
答:通过视图更新(插入/修改/删除)数据的限制:
- 多表视图不能插入和删除:当视图所依赖的基本表有多个时,不能通过视图插入和删除数据
- 计算列限制:如果视图包含聚合函数、数学计算、分组等,则不能通过视图更新数据
- 实际建议:虽然可以通过更新视图操作基本表的数据,但限制较多,实际情况下最好将视图仅作为查询数据的虚表,而不要通过视图更新数据
7. ALTER VIEW语句的语法格式是什么?
答:使用ALTER VIEW语句修改视图的语法格式:
ALTER VIEW 视图名[(列1[, 列2, ..., 列n])]
AS
SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
语法说明与CREATE VIEW相同。ALTER VIEW会替换原有的视图定义,保留视图名称不变。
8. 什么情况下需要修改视图?
答:需要修改视图的情况包括:
- 需求变更:需要通过视图查询更多的信息,在原有查询基础上增加或减少字段
- 基本表结构变化:视图依赖的基本表结构发生改变(如字段名修改、字段删除等),需要相应修改视图定义
- 查询条件调整:需要改变视图的数据筛选条件或排序方式
- 性能优化:调整视图的查询逻辑以提高性能
9. 如何修改视图的定义?请举例说明。
答:使用ALTER VIEW语句修改视图定义。例如:
-- 原视图:查询工号、姓名、年龄
CREATE VIEW view_teacher(工号, 姓名, 年龄) AS
SELECT TeaID, Tname, Age FROM teacher;
-- 修改视图:增加教师性别字段,去掉自定义列名
ALTER VIEW view_teacher AS
SELECT TeaID, Tname, Age, Teasex FROM teacher;
修改后view_teacher视图增加了Teasex(性别)字段,视图列名直接使用SELECT语句中的字段名。
10. 修改视图也可以使用图形工具吗?
答:可以。修改视图可以使用Navicat等图形工具,使用方法与创建视图时的方法相同。在对象浏览器中右键单击视图,选择"设计视图",在视图创建工具窗口中修改视图的定义(添加/移除表、修改字段选择、调整条件等),然后保存即可。图形工具和SQL语句两种方式都可以修改视图。