📅  最后修改于: 2023-12-03 15:35:05.833000             🧑  作者: Mango
简单视图是基于单个 SELECT 语句的虚拟表。它由已存在的表或其他视图的一部分选择出来的行组成。可以将简单视图看作是一个预定义的 SELECT 语句,该语句可以使用与基础表相同的查询语句。
CREATE VIEW view_name AS SELECT column1, column2, column3 FROM table_name WHERE condition;
假设有一个名为 students
的表包含以下数据:
| id | name | age | gender | | --- | --- | --- | --- | | 1 | Tom | 18 | M | | 2 | Jane | 19 | F | | 3 | Mike | 20 | M |
我们可以基于该表创建一个简单视图 student_view
,只包含 name
和 gender
两个字段的数据。
CREATE VIEW student_view AS SELECT name, gender FROM students;
复杂视图是基于多个 SELECT 语句联结而成的虚拟表。它由多个 SELECT 语句组成,每个 SELECT 语句可以使用普通表或其他视图作为其输入。
CREATE VIEW view_name AS SELECT column1, column2, column3 FROM table1 JOIN table2 ON condition WHERE condition GROUP BY column1 HAVING condition ORDER BY column1;
假设有两个名为 students
和 scores
的表,分别包含以下数据:
students
表:
| id | name | age | gender | | --- | --- | --- | --- | | 1 | Tom | 18 | M | | 2 | Jane | 19 | F | | 3 | Mike | 20 | M |
scores
表:
| id | subject | score | | --- | --- | --- | | 1 | Math | 80 | | 1 | English | 90 | | 2 | Math | 95 | | 2 | English | 85 |
我们可以基于这两个表联结创建一个复杂视图 score_view
,包含每个学生的姓名和总成绩。
CREATE VIEW score_view AS
SELECT students.name, SUM(scores.score) as total_score
FROM students JOIN scores ON students.id = scores.id
GROUP BY students.name;
简单视图和复杂视图在 SQL 中都扮演着很重要的角色,它们可以方便地维护和管理数据。但是需要注意的是,对于复杂视图的更新操作可能会对基础表造成影响,因此需要谨慎使用。