当前位置: 首页 > 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;** 一、研究背景…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...