
一、视图
当我们需要多次使用同一个复杂的 SQL 语句进行查询时,可以使用视图来对 SQL 语句进行封装,以此简化语句。
1.1 什么是视图
视图是由 SELECT 语句定义的虚拟表,它的结构和数据来源于底层的基表。视图中存储的其实是查询语句,当用户访问视图时,数据库会执行该查询语句,从基表中提取数据并返回结果。用户可以像操作普通表一样使用视图进行查询、更新、管理。

例如上述 SQL 语句是一个 4 张表联合查询的语句,如此复杂的语句就可以使用视图进行封装,对 SQL 语句进行简化。
1.2 创建视图
创建视图语法:
CREATE VIEW view_name [(column_list)] AS select_statement;
测试数据:查询 MySQL 成绩比 Java 成绩好的同学。
mysql> SELECT DISTINCT * FROM student s, score s1, score s2, course c1, course c2
WHERE s.id = s1.student_id AND s.id = s2.student_id
AND s1.course_id = c1.id AND s2.course_id = c2.id
AND c1.name = 'Java' AND c2.name = 'MySQL' AND s1.sco < s2.sco;
为了简化复杂 SQL 语句,我们可以使用视图进行包装:
-- 创建视图
CREATE VIEW v_Java_or_MySQL AS
s.id, s.name, s1.sco java_sco, s2.sco mysql_sco
student s, score s1, score s2, course c1, course c2
s.id s1.student_id s.id s2.student_id
s1.course_id c1.id s2.course_id c2.id
c1.name c2.name s1.sco s2.sco;
mysql v_Java_or_MySQL;





