25、SQL 视图

1、SQL 视图(View)

是一种虚拟表,其内容由一条 SELECT 查询语句定义。

视图本身不存储数据(除非是物化视图),而是存储查询语句,每次查询时动态执行底层 SQL 语句返回结果。

1)创建视图(CREATE VIEW

CREATE [IF NOT EXISTS] VIEW view_name [(column_alias, ...)] AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • view_name:视图的名称
  • [(column_alias, ...)] :列别名列表(可选),为视图的每一列显式指定名称,覆盖 SELECT 中的原始列名或表达式默认名。
  • AS:连接视图定义和查询语句的关键字,表示"后面的 SELECT 语句定义了视图的内容"
  • SELECT :视图定义查询,决定了视图返回什么数据。
  • SELECT column1, column2, :定义视图包含的列,可以是基表的列,也可以是计算字段
  • FROM table_name:指定视图数据来源的表,可以是一个或多个表
  • WHERE condition:可选的过滤条件,只有满足条件的行才会出现在视图中

 

2)删除视图

DROP VIEW [IF EXISTS] view_name;

3)修改视图

使用 CREATE OR REPLACE VIEW 语句,修改视图结构(如添加/删除列、更改查询逻辑)。

-- 原视图
CREATE VIEW employee_info AS
SELECT id, name, department
FROM employees;

-- 需求:添加新列 email,并移除 department
-- 修改方式
CREATE OR REPLACE VIEW employee_info AS
SELECT id, name, email  -- 新的列列表
FROM employees
WHERE status = 'active';  -- 也可以同时修改 WHERE 条件等逻辑

执行后:

  • 视图 employee_info 的结构立即更新为 (id, name, email)
  • 所有后续查询将使用新定义
  • 无需手动删除旧视图

3. 查看视图定义

-- PostgreSQL / MySQL
SHOW CREATE VIEW view_name;

-- SQL Server
sp_helptext 'view_name';

-- Oracle
SELECT text FROM user_views WHERE view_name = 'VIEW_NAME';

 

posted @ 2025-11-20 09:49  chao_xiong  阅读(7)  评论(0)    收藏  举报