视图简介
视图是从一个或多个表中导出的表,是一种虚拟存在的表。视图像一个窗口,通过这个窗口可以看到系统专门提供的数据。用户可以不用看到整个数据表中的数据,而只是关心对自己有用的数据。
视图的优势
视图的作用类似于筛选。筛选出的数据可以来自当前表或其他数据表的一个或多个表,或其他视图。
通过视图进行查询没有任何限制,通过它们进行数据修改时的限制很少。
优势点:
- 增强数据的安全性
- 提高灵活性,操作变简单
- 提高数据的逻辑独立性
工作机制
视图的内容并没有被储存,而是一种即时引用,只有被引用时才会派生出数据。当数据内容一致时,不需要维护视图,只需要维护好表的数据即可。
视图的使用
创建视图
语法与示例
CREATE VIEW <视图名> AS <SELECT语句>
举例:
在student表上创建一个视图
create view student_view as select * from student;
在student表上创建一个视图,包含学生的姓名,课程号,对应的成绩
create view student_view(sname,cname,grade)
as select s.sname,c.cname,sc.grade
from student s,course c,score sc
where s.sno = sc.sno and c.cno = sc.cno;
查询视图数据
示例
查询XX同学的所有已选修课程的成绩
select * from student_view where sname = 'XX';
删除视图
语法与示例
DROP VIEW <视图名1> [ , <视图名2> …]
举例:
删除视图student_view
drop view if exists tudent_view;
修改视图内容
语法与示例
ALTER VIEW <视图名> AS <SELECT语句>
举例:
把student_view用 alter命令把列的名称再改为 sname,cname,grade
alter view student_view(sname,cname,grade)
as select sname,cname,grade
from student s,course c,score sc
where s.sno = sc.sno and c.cno = sc.cno;
更新视图内容
更新视图内容要求表中要存在相应内容
语法与示例
增加视图数据
insert [into] 视图名 [(字段名1, 字段名2, …)] values | value (值1, 值2, …);
举例
向student_view中插入学生数据: 姓名xx 学习课程 C语言,成绩100
insert into student_view values('xx','C语言',100);
删除视图数据
delete from 视图名 [where 条件语句]
举例:
删除tudent_view中 xx学生的数据
delete from student_view where sname = 'xx';
更新视图数据
update 视图名 set 字段名=值 [where 更新条件]
举例
更新 学生名为 xx ,学习课程 C语言,成绩100 的数据
update student_view set sname='xx',cname='C语言',grade=100;