当前位置: 首页 > news >正文

mysql笔记:8. 视图

文章目录

  • 创建视图
  • 修改视图
  • 删除视图
  • 通过视图更新数据
    • 1. 插入数据
    • 2. 更新数据
    • 3. 删除数据
  • 查看视图信息
    • 1. DESCRIBE
    • 2. SHOW TABLE STATUS
    • 3. SHOW CREATE VIEW
    • 4. 在views表中查看

数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的列和行数据。行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。

创建视图

创建视图的语法和创建表的语法基本是一样的,格式如下:

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW view_name [(column_list)] 
AS select_statement
[WITH [CASCADED|LOCAL] CHECK OPTION];

上述语句可能创建新的视图,如果给定了OR REPLACE子句,该语句还能替换已有的视图。select_statement是一种SELECT语句,它给出了视图的定义,它可以从基表或其他视图进行选择。

参数含义:

  • ALGORITHM:可选参数,表示视图选择的算法。
  • UNDEFINED:MySQL将自动选择要使用的算法。
  • MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
  • TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句。
  • WITH CHECK OPTION:可选参数,表示更新视图时要保证在视图的权限范围内。
  • CASCADED:更新视图时要满足所有相关视图和表的条件才进行更新。
  • LOCAL:更新视图时,要满足该视图本身定义的条件即可更新。

创建视图语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。
对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。
如果有OR REPLACE子句,必须在视图上具有DROP权限。

表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图。
视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由SELECT语句检索的列名将用作视图列名。如果想为视图列定义明确的名称,可使用可选的column_list子句,列出由逗号隔开的ID。column_list中的名称数目必须等于SELECT语句检索的列数。
SELECT语句检索的列可以是对表中列的简单引用 ,也可以是使用函数、常量值、操作符等的表达式。

修改视图

除了使用CREATE OR REPLACE VIEW修改视图外,也可以使用ALTER修改视图,语法如下:

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW view_name [(column_list)] 
AS select_statement
[WITH [CASCADED|LOCAL] CHECK OPTION];

删除视图

数据库中的任何对象都会占用数据库的存储空间,视图也不例外。当视图不再使用时,要及时删除数据库中多余的视图。

DROP VIEW [schema_name.]view_name1, view_name2, ...;

视图一旦删除,就不可恢复,所以要谨慎操作。

通过视图更新数据

通过视图更新数据是指通过视图来插入、更新、删除表中的数据,通过视图更新数据的方法有3种,分别是INSERT、UPDATE和DELETE。视图是一个虚拟表,其中没有数据。因此,通过视图更新数据时都是转到基表进行更新的。

1. 插入数据

使用INSERT语句可以向单个基本表组成的视图中插入数据,而不能向两个表或多个表组成的视图中插入数据。

INSERT INTO view_name VALUES(value1, value2, ...);

2. 更新数据

UPDATE view_name SET name1=value1, name2=value2, ... where_statement;

3. 删除数据

DELETE FROM view_name  where_statement;

查看视图信息

1. DESCRIBE

使用DESCRIBE语句不仅可以查看数据表的基本信息,还可以查看视图的基本信息。视图也是一个表,它是一个虚拟表。

DESCRIBE view_name;
# 等价
DESC view_name;

2. SHOW TABLE STATUS

SHOW TABLE STATUS LIKE 'view_name';

3. SHOW CREATE VIEW

使用SHOW CREATE VIEW可以查看视图元信息,语法如下:

SHOW CREATE VIEW view_name;

4. 在views表中查看

在MySQL中,所有视图的定义都存在information_schema数据库下的views表中。查询该表,可以查看数据库中所有视图的详细信息,语法如下:

SELECT * FROM information_schema.views;

相关文章:

mysql笔记:8. 视图

文章目录 创建视图修改视图删除视图通过视图更新数据1. 插入数据2. 更新数据3. 删除数据 查看视图信息1. DESCRIBE2. SHOW TABLE STATUS3. SHOW CREATE VIEW4. 在views表中查看 数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的列和行数据。行…...

指针的基本概念和用法

指针的基本概念 每个变量都被存放在从某个内存地址(以字节为单位)开始的若干字节中 “指针”也被称作“指针变量”,大小为4个字节(在64位编译器中,也优肯为8个字节)的变量,其内容代表一个内存地…...

工作随记:oracle重建一张1T数据量的大表

文章目录 一、删除测试表二、重命名旧表:三、验证:四、检查alert日志和昨天到今天的统计信息任务收集是否正常 一、删除测试表 #xshell登录用户hthis用户连接登录处理: sqlplus ht/"123456" sqlplus ht/"123456"10.8.5.…...

使用timm库的一些知识点

timm(Torch Image Models)是一个在PyTorch上构建的图像模型库,它提供了一系列预训练的深度学习模型,使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时,如何确定模型的名字 使用…...

一种基于宏和serde_json实现的rust web中统一返回类

本人rust萌新,写web碰到了这个,基于ChatGPT和文心一言学了宏,强行把这玩意实现出来了,做个学习记录,如果有更好的方法,勿喷。 先看效果,注意不支持嵌套,且kv映射要用>(因为它这个…...

每周一算法:A*(A Star)算法

八数码难题 题目描述 在 3 3 3\times 3 33 的棋盘上,摆有八个棋子,每个棋子上标有 1 1 1 至 8 8 8 的某一数字。棋盘中留有一个空格,空格用 0 0 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局…...

爬虫练习:获取某网站的房价信息

一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(房天下数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [名称, 地点,价格,总价,联系电话]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer.writeheader…...

第一个C语言hello world

#include <stdio.h> int main() {printf("hello world ! \n");//打印函数return 0; } "#" : 预处理标志 include <> : 表示预处理的文件在<>内 stdio.h : 标准的io头文件 // io &#xff1a; 输入输出 // printf()…...

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍依赖倒置原则&#xff08;DIP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、Py…...

嵌入式驱动学习目录索引(更新中)

前言 这是一篇索引博客&#xff0c;用来作为索引记录学习嵌入式Linux的过程&#xff0c;可以用来给自己以及需要的读者作为一个目录索引&#xff0c;每次更新完博客都会添加进该目录中。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度…...

ruoyi-vue插件集成websocket

链接&#xff1a;插件集成 | RuoYi WebSocketServer.java&#xff1a;补充代码 /*** 此为广播消息* param message 消息内容*/public void sendAllMessage(String message) {LOGGER.info("【websocket.sendAllMessage】广播消息:"message);try {for(String sessionI…...

华为ce12800交换机m-lag(V-STP模式)配置举例

配置## 标题思路 采用如下的思路配置M-LAG双归接入IP网络&#xff1a; 1.在Switch上配置上行接口绑定在一个Eth-Trunk中。 2.分别在SwitchA和SwitchB上配置V-STP、DFS Group、peer-link和M-LAG接口。 3.分别在SwitchA和SwitchB上配置LACP M-LAG的系统优先级、系统ID。 4.分别在…...

STM32第九节(中级篇):RCC——时钟树讲解(第一节)

目录 前言 STM32第九节&#xff08;中级篇&#xff09;&#xff1a;RCC——时钟树讲解 时钟树主系统时钟讲解 HSE时钟 HSI时钟 锁相环时钟 系统时钟 SW位控制 HCLK时钟 PCLKI时钟 PCLK2时钟 RTC时钟 MCO时钟输出 6.2.7时钟安全系统(CSS&#xff09; 小结 前言 从…...

c/c++字符串处理标准库 string 介绍

c语言中string.h介绍 C语言的标准库中包含了一个头文件 <string.h>&#xff0c;该头文件提供了一系列字符串处理函数的声明和定义。以下是一些常用的函数&#xff1a; 字符串复制&#xff1a;strcpy(dest, src)。将源字符串 src 复制到目标字符串 dest&#xff0c;包括…...

HarmonyOS NEXT应用开发之深色模式适配

介绍 本示例介绍在开发应用以适应深色模式时&#xff0c;对于深色和浅色模式的适配方案&#xff0c;采取了多种策略如下&#xff1a; 固定属性适配&#xff1a;对于部分组件的颜色属性&#xff0c;如背景色或字体颜色&#xff0c;若保持不变&#xff0c;可直接设定固定色值或…...

Go微服务: 基于Go Micro框架实现微服务调用

Go Micro 1 &#xff09;概述 在具体的项目开发过程中&#xff0c;开发者聚焦的是业务逻辑的开发和功能的实现大量的环境配置&#xff0c;调试搭建等基础性工作会耗费相当一部分的精力因此有必要将微服务架构中所涉及到的&#xff0c;相关的解决方案做集中管理和维护Go Micro …...

大模型prompt提示词如何调优?

当使用大型模型&#xff08;如GPT-3.5&#xff09;时&#xff0c;可以通过优化提示&#xff08;prompt&#xff09;来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议&#xff1a; 1、清晰的问题陈述&#xff1a;确保你的问题或提示清晰、简明&#xff0c;能够准…...

【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地

【需求】 从网页https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html 开始&#xff0c;有十七页&#xff0c;每页都有大漂亮“小濑田麻由”的若干图片&#xff0c;想要将其…...

Postgresql 连接数查看,死锁问题解决

-- 查看所有连接 select * -- datname,pid,application_name,state from pg_stat_activity; -- 查询最大连接数 select max_conn-now_conn as resi_conn from (select setting::int8 as max_conn,(select count(*) from pg_stat_activity) as now_conn from pg_settings where…...

ssm蛋糕甜品商城系统(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...