SQL视图:数据库管理中的虚拟表
SQL视图:数据库管理中的虚拟表
SQL视图是数据库管理中的一个重要概念,它允许用户以更灵活和安全的方式访问和操作数据。本文将详细介绍SQL视图的创建、使用和管理方法,帮助读者掌握这一实用的数据库管理工具。
SQL视图简介
关系数据库包含多个相关表格,例如员工、部门、作业等等。在您希望查看这些表格的数据时,您可以使用SELECT语句พร้อมJOIN或UNION子句。
SQL为您提供了另一种通过使用视图查看数据的方式。视图如同通过执行查询而生成的虚拟表格。关系数据库管理系统(RDBMS)将视图作为命名的SELECT存储在数据库目录中。
无论何时发出包含视图名称的SELECT语句,RDBMS都将执行视图定义查询以创建虚拟表格。然后该虚拟表格用作查询的源表格。
为何需要使用视图
视图允许您将复杂查询存储在数据库中。例如,您可以通过以下方式在您每次希望查看数据时发出简单查询,而无需每次都发出复杂的SQL查询。
SELECT column_list
FROM view_name;
视图帮助您为特定用户组打包数据。例如,您可以创建财务部门员工工资数据的视图。
视图帮助维护数据库安全性。您可以创建视图仅显示必要数据,并授予用户访问该视图的权限,而不必向用户授予访问数据库表格的权限。
创建SQL视图
若要创建视图,请如下使用CREATE VIEW语句
CREATE VIEW view_name
AS
SELECT-statement
首先,在CREATE VIEW子句后指定视图名称。
其次,构建SELECT语句以查询多张表格的数据。
例如,以下语句基于employees和departments表格的数据创建了员工联系方式视图。
CREATE VIEW employee_contacts AS
SELECT
first_name, last_name, email, phone_number, department_name
FROM
employees e
INNER JOIN
departments d ON d.department_id = e.department_id
ORDER BY first_name;
默认情况下,视图中列的名称与SELECT语句中指定的列相同。如果您想在视图中重命名列,请如下在CREATE VIEW子句后包含新列名称。
CREATE VIEW view_name(new_column_list)
AS
SELECT-statement;
例如,以下语句创建了其列名称与基准表列名称不同的视图。
CREATE VIEW payroll (first_name , last_name , job, compensation) AS
SELECT
first_name, last_name, job_title, salary
FROM
employees e
INNER JOIN
jobs j ON j.job_id= e.job_id
ORDER BY first_name;
从视图中查询数据
从视图中查询数据与从表格中查询数据相同。以下语句从employee_contacts视图中选择数据。
SELECT
*
FROM
employee_contacts;
当然,您可以如下应用筛选或分组。
SELECT
job,
MIN(compensation),
MAX(compensation),
AVG(compensation)
FROM
payroll
WHERE
job LIKE 'A%'
GROUP BY job;
修改SQL视图
若要修改视图,向视图添加新列或从视图中移除列,您可以使用同样的CREATE OR REPLACE VIEW语句。
CREATE OR REPLACE view_name AS
SELECT-statement;
如果视图不存在,该语句将创建该视图,如果视图已存在,该语句将更改当前视图。
例如,以下语句通过添加部门列和将薪酬列重命名为工资列来更改工资单视图。
CREATE OR REPLACE VIEW payroll (first_name , last_name , job , department , salary) AS
SELECT
first_name, last_name, job_title, department_name, salary
FROM
employees e
INNER JOIN
jobs j ON j.job_id = e.job_id
INNER JOIN
departments d ON d.department_id = e.department_id
ORDER BY first_name;
SELECT
*
FROM
payroll;
移除SQL视图
若要从数据库中移除视图,您可以使用DROP VIEW语句。
DROP VIEW view_name;
DROP VIEW语句仅删除视图,而不删除基准表。
例如,要移除工资单视图,您可以使用以下语句。
DROP VIEW payroll;
在本教程中,您学习了SQL视图及其实用用法。现在,您应当知道什么是视图以及如何在数据库中创建、修改和删除视图。