视图简介

视图是从一个或多个表中导出的表,是一种虚拟存在的表。视图像一个窗口,通过这个窗口可以看到系统专门提供的数据。用户可以不用看到整个数据表中的数据,而只是关心对自己有用的数据。

视图的优势

视图的作用类似于筛选。筛选出的数据可以来自当前表或其他数据表的一个或多个表,或其他视图。

通过视图进行查询没有任何限制,通过它们进行数据修改时的限制很少。

优势点:

  1. 增强数据的安全性
  2. 提高灵活性,操作变简单
  3. 提高数据的逻辑独立性

工作机制

视图的内容并没有被储存,而是一种即时引用,只有被引用时才会派生出数据。当数据内容一致时,不需要维护视图,只需要维护好表的数据即可。

视图的使用

创建视图

语法与示例

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;