深入理解 SQL 视图:从基础到实践

SQL 视图 (Views) 简介

SQL 视图是一个基于 SELECT 查询结果集创建的虚拟表。它并不在物理上存储数据,而是动态地显示底层表中的数据。视图可以帮助我们简化复杂的查询,增强数据安全性,并以更整洁、自定义的方式呈现数据。

示例: 首先,我们将创建一个演示用的 SQL 数据库和表,以便在此基础上演示视图的操作。

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251117121157935690/studentdetails.png">studentdetails

查询语句:

CREATE VIEW StudentView AS
SELECT NAME, ADDRESS
FROM StudentDetails;

SELECT * FROM StudentView;

输出结果:

!Output

在 SQL 中创建视图

我们可以使用 CREATE VIEW 语句来创建视图。视图可以基于单个表,也可以基于多个表。

语法:

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE condition;
  • view_name: 视图的名称
  • table_name: 基表的名称
  • condition: 筛选行的条件

示例 1:基于单个表创建简单视图

首先,我们创建一个演示用的 SQL 数据库和表,以便在此基础上使用视图命令。

!students

在这个示例中,我们从 INLINECODE0cde0fb5 表创建一个名为 INLINECODEe2fc8b61 的视图。

查询语句:

CREATE VIEW DetailsView AS
SELECT NAME, ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

使用以下查询来检索该视图中的数据:

SELECT * FROM DetailsView;

输出结果:

!Liam

示例 2:基于多个表创建视图

在这个示例中,我们创建一个名为 INLINECODEfddc3d9b 的视图,它结合了 INLINECODEf03cf74d 和 StudentMarks 两个表中的数据。要从多个表创建视图,只需在 SELECT 语句中包含多个表即可。

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251117145328887448/Studentmarks.png">Studentmarks

查询语句:

CREATE VIEW MarksView AS
SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS
FROM StudentDetails, StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

要显示 MarksView 视图的数据:

SELECT * FROM MarksView;

输出结果:

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251117150057471130/Marksview.png">Marksview

管理视图

以下是在 SQL 中管理视图的一些常用操作:

1. 列出数据库中的所有视图

我们可以使用 SHOW FULL TABLES 语句或通过查询 information_schema 表来列出数据库中的所有视图。

USE "database_name";
SHOW FULL TABLES WHERE table_type LIKE "%VIEW";

使用 information_schema

SELECT table_name
FROM information_schema.views
WHERE table_schema = ‘database_name‘;

OR

SELECT table_schema, table_name, view_definition
FROM information_schema.views
WHERE table_schema = ‘database_name‘;

2. 删除视图

SQL 允许我们删除现有的视图。我们可以使用 DROP 语句来删除视图。

语法:

DROP VIEW view_name;

示例: 在这个示例中,我们将删除视图 MarksView

DROP VIEW MarksView;

3. 更新视图定义

如果我们想更新视图中的现有数据,可以使用 UPDATE 语句。

UPDATE view_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

如果我们想在不影响数据的情况下更新视图的定义(结构),可以使用 CREATE OR REPLACE VIEW 语句。例如,让我们向 INLINECODE7c085e19 视图添加 INLINECODE7eadd076 列:

CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

注意: 并非所有的视图都可以使用 UPDATE 语句进行更新。

更新 SQL 视图的规则:

要更新视图,必须满足某些条件。如果其中任何条件被满足,则无法更新该视图。

  • 用于创建视图的 SELECT 语句不应包含 GROUP BY 子句或 ORDER BY 子句。
  • SELECT 语句不应包含 DISTINCT 关键字。
  • 视图应包含所有 NOT NULL 值。
  • 视图不应使用嵌套查询或复杂查询来创建。
  • 视图应基于单个表创建。如果视图是使用多个表创建的,则我们将被禁止更新该视图。

视图的高级应用技巧

以下是一些使用 SQL 视图的高级方法:

1. 通过视图更新数据(Truncated)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49634.html
点赞
0.00 平均评分 (0% 分数) - 0