{site_name}

{site_name}

🌜 搜索

SQL视图(View)是虚拟的关系表,它是一个基于 SELECT 语句的结果集,可以像普通表一样使用

数据库 𝄐 0
sqlsqm 是什么进程,SQL sqlcmd实施查询 显示共有多少个部门,sqlSQL
SQL视图(View)是虚拟的关系表,它是一个基于 SELECT 语句的结果集,可以像普通表一样使用。SQL视图并不存储数据,而是根据 SELECT 语句动态生成结果集。通过创建视图,可以隐藏底层表结构,简化复杂的查询操作,并提高数据安全性。

以下是一个简单的 SQL 视图示例,假设有一个学生表和一个成绩表:

学生表:student
+----+----------+-------+
| id | name | grade |
+----+----------+-------+
| 1 | Alice | 10 |
| 2 | Bob | 11 |
| 3 | Charlie | 10 |
+----+----------+-------+

成绩表:score
+---------+------------+-------+
| stu_id | subject | score |
+---------+------------+-------+
| 1 | Math | 90 |
| 1 | English | 80 |
| 2 | Math | 95 |
| 2 | English | 85 |
| 3 | Math | 88 |
| 3 | English | 92 |
+---------+------------+-------+

现在,我们可以使用以下语句创建一个视图来显示每个学生的总分数和平均分数:

CREATE VIEW student_score AS
SELECT s.id, s.name, SUM(sc.score) AS total_score, AVG(sc.score) AS avg_score
FROM student s JOIN score sc ON s.id = sc.stu_id
GROUP BY s.id, s.name;

这个视图将会创建一个虚拟表,包含以下结果:

+----+----------+-------------+-----------+
| id | name | total_score | avg_score |
+----+----------+-------------+-----------+
| 1 | Alice | 170 | 85.0 |
| 2 | Bob | 180 | 90.0 |
| 3 | Charlie | 180 | 90.0 |
+----+----------+-------------+-----------+

现在我们可以像操作普通表一样查询这个视图,例如,查询总分数排名前三的学生:

SELECT name, total_score FROM student_score ORDER BY total_score DESC LIMIT 3;

输出:
+--------+-------------+
| name | total_score |
+--------+-------------+
| Bob | 180 |
| Charlie| 180 |
| Alice | 170 |
+--------+-------------+