在 数据库管理系统 (DBMS) 的领域中,视图 和 表 是帮助我们高效 存储 和 管理 数据的基础概念。虽然这两个术语经常被提及,但它们在 关系型数据库 中有着截然不同的用途。
对于从事 SQL 和 关系型数据库 工作的人来说,理解 视图 和 表 之间的区别至关重要。在本文中,我们将深入探讨它们之间的 关键区别,以及它们的定义、用途和实际应用示例。
视图与表的核心区别
以下是视图和表之间的主要区别:
视图
—
视图是一个虚拟表,其数据通过 SQL 查询从一个或多个基表中派生而来。
视图依赖底层表或其他视图来检索数据。
视图不占用物理存储空间,它们仅存储查询结构(即查询逻辑)。
不能直接从视图添加、更新或删除数据(虽然在某些条件下可以,但本质上受限制)。
可以使用 CREATE OR REPLACE 语句轻松地重新创建或替换视图。
视图可以聚合来自多个表的数据或执行复杂的连接操作。
视图可以使用连接、联合等操作组合多个表的数据。
什么是数据库中的视图?
在 数据库管理系统 (DBMS) 中,视图 是一个 虚拟表 ,它本身不存储任何数据,而是以特定的方式呈现来自一个或多个 表 的数据。它也被称为 派生表 ,因为它是从 其他表 派生而来的。
本质上,视图是一个存储的 SQL 查询 。当访问视图时,系统会执行该查询并返回结果集。视图对于呈现数据库中的特定 数据子集 非常有用,并且可以通过将 复杂查询 封装在单个 虚拟表 中来简化查询操作。
语法
Create or Replace view as
select column_list
from
在这里, 是 视图的名称,INLINECODE4eaf3346INLINECODEb111f60f> 是从中获取数据的 基础表 。
SQL 查询创建视图示例
让我们通过一个示例来看看视图是如何工作的。假设我们有一个名为 "employees" 的表,其中包含 employeeid(员工ID)、firstname(名)、lastname(姓)和 departmentid(部门ID)等属性。我们想要创建一个视图,用于显示员工的 全名 以及其 部门名称 。
#### 查询语句
CREATE VIEW employee_details AS
SELECT e.employee_id, CONCAT(e.first_name,‘ ‘, e.last_name) AS full_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
说明:
在这个例子中,我们创建了一个名为 "employee_details" 的视图,它结合了 "employees" 表和 "departments" 表中的数据,显示员工的 全名 及其对应的 部门 名称。我们可以像查询任何 常规表 一样查询这个视图,以 检索 我们 想要的信息 。
什么是数据库中的表?
表 是 关系型数据库 的基本组成部分。它由 行 和 列 组成,用于存储实际数据。表中的每一行代表一条 唯一记录,而每一列对应于该记录的特定属性。表必须具有 唯一的名称,不能使用 SQL 保留字,并且通常是 不区分大小写 的。它们允许轻松地进行 数据创建 和 数据操作 。
语法
CREATE TABLE (
,
,
...
);
在这里,INLINECODEaeb8f616INLINECODEb1fd5c7cINLINECODEfa89448c 代表表的名称,而 INLINECODE618491a0INLINECODEf4fc0c53INLINECODEec45d3cc 定义了表中的每一列及其对应的数据类型。
使用 SQL 查询创建表示例
在 SQL 中创建表的操作如下所示:例如,假设我们要创建一个 student (学生)表,其中包含 student id(学生ID)和 name(姓名)等字段。