tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

视图

PDF
聚焦模式
字号
最后更新时间: 2026-03-26 14:57:33
本文档介绍如何在 TDSQL Boundless 数据库中使用视图。视图是基于 SQL 查询定义的虚拟表,它本身不存储数据,而是在每次查询时动态执行底层的 SQL 语句生成结果。
视图的主要用途:
简化复杂查询:将多表连接、聚合等复杂查询封装为虚拟表,后续使用时像查询普通表一样简洁。
数据安全:只向用户暴露特定字段,隐藏底层敏感数据。
逻辑复用:将通用的查询逻辑定义为视图,避免在多处重复编写相同的 SQL。

创建视图

使用 CREATE VIEW 语句创建视图。
创建一个客户订单汇总视图,包含每个客户的订单数量和总金额:
CREATE VIEW customer_order_summary AS
SELECT
c.c_custkey,
c.c_name,
c.c_mktsegment,
COUNT(o.o_orderkey) AS order_count,
COALESCE(SUM(o.o_totalprice), 0) AS total_spent
FROM customer c
LEFT JOIN orders o ON c.c_custkey = o.o_custkey
GROUP BY c.c_custkey, c.c_name, c.c_mktsegment;
创建一个区域供应商视图,展示各区域的供应商信息:
CREATE VIEW regional_suppliers AS
SELECT
r.r_name AS region_name,
n.n_name AS nation_name,
s.s_suppkey,
s.s_name AS supplier_name,
s.s_phone
FROM region r
INNER JOIN nation n ON r.r_regionkey = n.n_regionkey
INNER JOIN supplier s ON n.n_nationkey = s.s_nationkey;
注意:
创建视图时,视图名称不能与已有的表或视图重名。

查询视图

视图创建完成后,可以像查询普通表一样使用 SELECT 语句查询视图。
查询订单数量最多的前10名客户:
SELECT c_name, c_mktsegment, order_count, total_spent
FROM customer_order_summary
ORDER BY order_count DESC
LIMIT 10;
在视图上添加过滤条件:
SELECT c_name, order_count, total_spent
FROM customer_order_summary
WHERE c_mktsegment = 'BUILDING'
AND order_count > 10
ORDER BY total_spent DESC;
视图与其他表进行连接:
SELECT
rs.region_name,
rs.supplier_name,
ps.ps_partkey,
ps.ps_supplycost
FROM regional_suppliers rs
INNER JOIN partsupp ps ON rs.s_suppkey = ps.ps_suppkey
WHERE rs.region_name = 'ASIA'
ORDER BY ps.ps_supplycost
LIMIT 20;
TDSQL Boundless 在查询视图时,会在内部将视图展开为创建时定义的原始 SQL 语句执行。例如查询 customer_order_summary 时,实际执行的是其底层的 SELECT ... FROM customer LEFT JOIN orders ... 语句加上外层的过滤和排序条件。

更新视图

当需要修改视图的定义时,可以使用 CREATE OR REPLACE VIEW 语句,无需先删除再重建。
为客户订单汇总视图增加平均订单金额字段:
CREATE OR REPLACE VIEW customer_order_summary AS
SELECT
c.c_custkey,
c.c_name,
c.c_mktsegment,
COUNT(o.o_orderkey) AS order_count,
COALESCE(SUM(o.o_totalprice), 0) AS total_spent,
COALESCE(AVG(o.o_totalprice), 0) AS avg_order_amount
FROM customer c
LEFT JOIN orders o ON c.c_custkey = o.o_custkey
GROUP BY c.c_custkey, c.c_name, c.c_mktsegment;
也可以通过先删除再创建的方式更新视图:
DROP VIEW IF EXISTS customer_order_summary;
CREATE VIEW customer_order_summary AS
SELECT ...;

获取视图相关信息

使用 SHOW CREATE VIEW

查看视图的完整创建语句:
SHOW CREATE VIEW customer_order_summary\\G

查询 INFORMATION_SCHEMA

通过系统表 information_schema.views 查看视图的元数据信息:
SELECT
TABLE_NAME,
VIEW_DEFINITION,
CHECK_OPTION,
IS_UPDATABLE
FROM information_schema.views
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'customer_order_summary'\\G

删除视图

使用 DROP VIEW 语句删除视图。建议使用 IF EXISTS 避免视图不存在时报错。
DROP VIEW IF EXISTS customer_order_summary;
一次删除多个视图:
DROP VIEW IF EXISTS customer_order_summary, regional_suppliers;

局限性

在 TDSQL Boundless 中使用视图时,需要注意以下限制:
不支持物化视图 — 仅支持普通视图,不预存结果。
只读视图 — 不支持 UPDATE/INSERT/DELETE/TRUNCATE 写入操作。
DDL 限制 — 仅支持 DROP VIEW/TABLE,不支持 ALTER VIEW

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈