当前位置:网站首页>TiDB 中的视图功能
TiDB 中的视图功能
2022-06-27 06:08:00 【添香小铺】
本章将介绍 TiDB 中的视图功能。
概述
TiDB 支持视图,视图是一张虚拟表,该虚拟表的结构由创建视图时的 SELECT 语句定义。
- 通过视图可以对用户只暴露安全的字段及数据,进而保证底层表的敏感字段及数据的安全。
- 将频繁出现的复杂查询定义为视图,可以使复杂查询更加简单便捷。
创建视图
在 TiDB 当中,可以通过 CREATE VIEW 语句来将某个较为复杂的查询定义为视图,其语法如下:
CREATE VIEW view_name AS query;
请注意,创建的视图名称不能与已有的视图或表重名。
例如,在多表连接查询 章节当中,通过 JOIN 语句连接 books 表和 ratings 表查询到了带有平均评分的书籍列表。为了方便后续查询,可以将该查询语句定义为一个视图,SQL 语句如下所示:
CREATE VIEW book_with_ratings AS SELECT b.id AS book_id, ANY_VALUE(b.title) AS book_title, AVG(r.score) AS average_score FROM books b LEFT JOIN ratings r ON b.id = r.book_id GROUP BY b.id;
查询视图
视图创建完成后,便可以使用 SELECT 语句像查询一般数据表一样查询视图。
SELECT * FROM book_with_ratings LIMIT 10;
TiDB 在执行查询视图语句时,会将视图展开成创建视图时定义的 SELECT 语句,进而执行展开后的查询语句。
更新视图
目前 TiDB 中的视图不支持 ALTER VIEW view_name AS query; 语法,你可以通过以下两种方式实现视图的 “更新”:
- 先
DROP VIEW view_name;语句删除旧视图,再通过CREATE VIEW view_name AS query;语句创建新视图的方式来更新视图。 - 使用
CREATE OR REPLACE VIEW view_name AS query;语句覆盖已存在的同名视图。
CREATE OR REPLACE VIEW book_with_ratings AS SELECT b.id AS book_id, ANY_VALUE(b.title), ANY_VALUE(b.published_at) AS book_title, AVG(r.score) AS average_score FROM books b LEFT JOIN ratings r ON b.id = r.book_id GROUP BY b.id;
获取视图相关信息
使用 SHOW CREATE TABLE|VIEW view_name 语句
SHOW CREATE VIEW book_with_ratings\G
运行结果为:
*************************** 1. row *************************** View: book_with_ratings Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `book_with_ratings` (`book_id`, `ANY_VALUE(b.title)`, `book_title`, `average_score`) AS SELECT `b`.`id` AS `book_id`,ANY_VALUE(`b`.`title`) AS `ANY_VALUE(b.title)`,ANY_VALUE(`b`.`published_at`) AS `book_title`,AVG(`r`.`score`) AS `average_score` FROM `bookshop`.`books` AS `b` LEFT JOIN `bookshop`.`ratings` AS `r` ON `b`.`id`=`r`.`book_id` GROUP BY `b`.`id` character_set_client: utf8mb4 collation_connection: utf8mb4_general_ci 1 row in set (0.00 sec)
查询 INFORMATION_SCHEMA.VIEWS 表
SELECT * FROM information_schema.views WHERE TABLE_NAME = 'book_with_ratings'\G
运行结果为:
*************************** 1. row *************************** TABLE_CATALOG: def TABLE_SCHEMA: bookshop TABLE_NAME: book_with_ratings VIEW_DEFINITION: SELECT `b`.`id` AS `book_id`,ANY_VALUE(`b`.`title`) AS `ANY_VALUE(b.title)`,ANY_VALUE(`b`.`published_at`) AS `book_title`,AVG(`r`.`score`) AS `average_score` FROM `bookshop`.`books` AS `b` LEFT JOIN `bookshop`.`ratings` AS `r` ON `b`.`id`=`r`.`book_id` GROUP BY `b`.`id` CHECK_OPTION: CASCADED IS_UPDATABLE: NO DEFINER: [email protected]% SECURITY_TYPE: DEFINER CHARACTER_SET_CLIENT: utf8mb4 COLLATION_CONNECTION: utf8mb4_general_ci 1 row in set (0.00 sec)
删除视图
通过 DROP VIEW view_name; 语句可以删除已经创建的视图。
DROP VIEW book_with_ratings;
局限性
关于局限性,你可以通过阅读参考文档当中的视图章节进行了解。
边栏推荐
- 高斯分布Gaussian distribution、線性回歸、邏輯回歸logistics regression
- Force buckle 179, max
- C# netcore中 配置帮助类IConfiguration
- Altium Designer 19 器件丝印标号位置批量统一摆放
- js实现双向数据绑定
- Webrtc Series - Network Transport 7 - ice Supplement nominations and ice Modèle
- 【入门】正则表达式基础入门笔记
- Download CUDA and cudnn
- Openresty usage document
- 426 binary tree (513. find the value in the lower left corner of the tree, 112. sum of paths, 106. construct a binary tree from the middle order and post order traversal sequence, 654. maximum binary
猜你喜欢

JVM常用指令

Proxy-Reflect使用详解

多线程带来的的风险——线程安全

JVM object composition and storage

资深【软件测试工程师】学习线路和必备知识点

426-二叉树(513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树、654. 最大二叉树)

openstack实例重启状态就会变成错误处理方法,容器搭建的openstack重启计算节点compute服务方法,开机提示Give root password for maintenance处理方法

Us camera cloud service scheme: designed for lightweight video production scenes

高斯分布Gaussian distribution、线性回归、逻辑回归logistics regression

开门小例子学习十种用例图
随机推荐
代码即数据
资深【软件测试工程师】学习线路和必备知识点
软件测试年终总结报告模板
汇编语言-王爽 第11章 标志寄存器-笔记
Proxy-Reflect使用详解
Distribution gaussienne, régression linéaire, régression logistique
The form verifies the variables bound to the V-model, and the solution to invalid verification
Matlab quickly converts two-dimensional coordinates of images into longitude and latitude coordinates
多线程基础部分Part 1
Openresty usage document
310. 最小高度树
Contents in qlistwidget are not displayed
汇编语言-王爽 第8章 数据处理的两个基本问题-笔记
[FPGA] realize the data output of checkerboard horizontal and vertical gray scale diagram based on bt1120 timing design
JVM tuning ideas
【Cocos Creator 3.5.1】event. Use of getbutton()
Spark 之 built-in functions
JVM类加载机制
【入门】正则表达式基础入门笔记
[FPGA] UART serial port_ V1.1