什么是视图
视图是 SQL 数据库中一个非常有用的概念。通俗地讲,视图就是一个虚拟表,它不是一个实际存在的表,而是从一个或者多个实际存在的表中导出来的一个数据集。通过视图,可以只看到数据库中需要的部分数据,而不必看到整个数据库。同时,通过视图可以隐藏底层表的实现细节,更加安全地访问数据。
创建视图的语句
SQL 中创建视图的语句是:
CREATE VIEW [视图名称]
AS
SELECT [列名称1],[列名称2],…
FROM [表名称]
WHERE …
其中,CREATE VIEW 是创建视图的关键字,后面跟着要创建的视图名称。接着,使用 AS 关键字,后面跟着 SELECT 语句,查询要在视图中显示的数据列,以及从哪些表中获取这些数据。
例子
下面我们以一个简单的例子来说明创建视图的语句。
假设有两张表,一张是学生表,包含了学生的姓名(name)、年龄(age)、性别(gender)等信息;另一张是成绩表,包含了学生的姓名(name)、数学成绩(math)、英语成绩(english)、总成绩(total)等信息。我们现在要创建一个视图,只显示学生的姓名、性别、年龄和总成绩。
首先,我们可以先查询出这些数据,语句如下:
SELECT s.name, s.gender, s.age, c.total
FROM students s
JOIN scores c ON s.name = c.name;
这个查询语句会从学生表和成绩表中筛选出学生的姓名、性别、年龄和总成绩,使用 JOIN 将这两张表连接起来。
接下来,我们将这个查询语句转化为一个视图,语句如下:
CREATE VIEW student_score AS
SELECT s.name, s.gender, s.age, c.total
FROM students s
JOIN scores c ON s.name = c.name;
这个语句会在数据库中创建一个叫做 student_score 的视图,只包含了学生的姓名、性别、年龄和总成绩。要查看这个视图中的数据,只需要执行以下查询语句:
SELECT * FROM student_score;
这个语句会返回视图中的所有数据,也就是学生的姓名、性别、年龄和总成绩。
视图的使用
视图的使用与普通的表一样,可以在查询语句中直接引用。比如,如果我们想查询分数在 60 分以上的学生的姓名、性别和总成绩,可以写成这样:
SELECT name, gender, total
FROM student_score
WHERE total >= 60;
这个语句会查询视图 student_score 中总成绩大于等于 60 的学生的姓名、性别和总成绩。
视图的更新
视图本身并不存储数据,而是从底层表中导出数据。因此,视图通常不可以直接进行更新,需要在底层表上进行更新。比如,如果我们要将某个学生的英语成绩修改为 90 分,应该执行以下语句:
UPDATE scores
SET english = 90
WHERE name = '张三';
这个语句会将姓名为张三的学生的英语成绩修改为 90 分。视图 student_score 会自动更新,显示新的总成绩。
总结
视图是 SQL 数据库中一个非常重要的概念,它可以隐藏底层表的实现细节,更加安全地访问数据。创建视图的语句非常简单,只需要使用 CREATE VIEW 和 SELECT 语句即可。使用视图的方式与普通的表一样,可以在查询语句中直接引用。视图通常不可以直接进行更新,需要在底层表上进行更新。