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

数据表中的视图操作

文章目录

    • 一、视图概述
    • 二、为什么要使用视图
    • 三、创建视图
    • 四、查看视图

一、视图概述

小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试,这时候很多班级筛选出来的这些同学就可以临时组成一个班级,如果我们把每个班级都当做是一张真实的表,这个临时的班级在数据库里就可以当作一个视图,也就是说,这个临时的班级其实不是真实存在的,当考试过后,这些学生还是会回到各自的班级中。所以说视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样用户可以不看整个数据库表中的数据,而只关心对自己有用的数据。视图可以使用用户的操作更方便,而且可以保障数据库系统的安全性。

二、为什么要使用视图

数据库中关于数据的查询有时非常复杂,例如表连接、子查询等,这种查询会让程序员感动非常痛苦,因为它的逻辑太复杂、编写语句比较多,当这种查询需要重复使用时,很难每次都编写正确,从而降低了数据库的实用性。
在具体操作表之前,有时候要求只能操作部分字段,而不是全部字段,例如在学校里,学生的智商测试结果一般都是保密的,如果因为一时疏忽向查询中多写了关于“智商”的字段,则会让学生的智商显示给所有能够查看该查询结果的人,这时就需要限制使用者操作的字段。
为了提高复杂的SQL语句的复用性和表的操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,其内容与真实表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储数据值的形式存在,行和列数据来自定义视图的查询所引用的基本表,并且在具体引用视图时动态生成。
视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务,这样程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高数据库中数据的安全性。

三、创建视图

虽然视图可以被看成是一种虚拟表,但是其物理上是不存在的,即MySQL并没有专门的位置为视图存储数据。根据视图的概念可以发现其数据来源于查询语句,因此创建视图的基本语法为:

CREATE[OR REPLACE]VIEW viewname[columnlist] AS SELECT statement

其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;viewname为视图的名称;columnlist为属性列;SELECT statement表示SELECT语句。
注意:创建视图需要登陆用户有相应的权限,查看权限方法。
在这里插入图片描述
在单表上创建视图:
在这里插入图片描述
在多表上创建视图:

CREATE[OR REPLACE] VIEW viewname[columnlist] AS SELECT statement

其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图,viewname为视图的名称,columnlist为属性列,SELECT statement表示SELECT语句;与单表上创建视图不同的是,SELECT子句是设计到多表的联合查询语句。
在这里插入图片描述

四、查看视图

创建完视图后,像数据表一样,我们经常需要查看视图信息。在MySQL中,有许多可以实现查看视图的语句,如DESCRIBE、SHOW TABLES、SHOW CREATE VIEW。如果要使用这些语句,首先要确保拥有SHOW VIEW的权限。

1.使用DESCRIBE|DESC语句查看视图基本信息
前面我们已经详细了解使用DESCRIBE语句来查看表的基本定义。因为视图也是一张表,只是这张表比较特殊,是一张虚拟的表,所以同样可以使用DESCRIBE语句来查看视图的基本定义。DESCRIBE语句查看视图的语法如下:

DESCRIBE|DESC viewname;

在上述语句中,参数viewname表示所要查看设计信息的视图名称。
在这里插入图片描述
2.使用show create view/table 语句查看视图创建信息

SHOW CREATE TABLEVIEW viewname;

在这里插入图片描述
3.更新视图数据
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图实质上是一个虚拟表,其中没有数据,通过视图更新时都是转换到基本表更新。更新视图时,只能更新权限范围内的数据,超出范围就不能更新了。
在这里插入图片描述
不能更新的情况:

  • 视图中包含SUM()、COUNT()、MAX()和MIN()等函数。
  • 视图中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等关键字。
  • 视图对应的表存在没有默认值的列,而且该列没有包含在视图中。
  • 包含子查询的视图。

4.修改视图
修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图来保持与基本表的一致性。ALTER语句来修改视图。
使用ALTER语句修改视图:

ALTER VIEW viewname[columnlist] AS SELECT statement

这个语法中的所有关键字和参数除了alter外,其他都和创建视图是一样的,因此不再赘述。

5.删除视图
删除视图是指删除数据库中已存在的视图,删除视图时,只能删除视图的定义,不会删除数据。在MySQL中,可以使用DROP VIEW语句来删除视图,但是用户必须拥有DROP权限。删除视图的语法如下:

DROP VIEW viewname [,viewname];

在上述语句中,参数viewname表示所要删除视图的名称,可同时指定删除多个视图。
在这里插入图片描述

相关文章:

数据表中的视图操作

文章目录 一、视图概述二、为什么要使用视图三、创建视图四、查看视图 一、视图概述 小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试,这时候很多班级筛选出来的这些同学就可以临时组成一个班级…...

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索(BFS)是一种广泛应用于图论中的算法,常用于寻找最短路径、图的遍历等问题。与深度优先搜索(DFS&…...

mongodb 使用内存过大分析

os 分析 内存使用 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -10swap 使用 for i in $(ls /proc | grep "^[0-9]" | awk $0>100); do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i/smaps;done| sort -k2nr | headmo…...

CNN-day5-经典神经网络LeNets5

经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业(邮政行业)价值的卷积神经网络 参考:论文笔记:Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …...

登录到docker里

在Docker中登录到容器通常有两种情况: 登录到正在运行的容器内部:如果你想要进入到正在运行的容器内部,可以使用docker exec命令。 登录到容器中并启动一个shell:如果你想要启动一个容器,并在其中启动一个shell&…...

利用PHP爬虫开发获取淘宝分类详情:解锁电商数据新视角

在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争策略制定以及电商运营优化具有极高的价值。通过PHP爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。本文将详细介绍如何使用P…...

LeetCode 142题解|环形链表II的快慢指针法(含数学证明)

题目如下: 解题过程如下: 思路:快慢指针在环里一定会相遇,相遇结点到入环起始结点的距离 链表头结点到入环起始结点的距离(距离看从左往右的方向,也就是单链表的方向),从链表头结点…...

[图文]课程讲解片段-Fowler分析模式的剖析和实现01

​ 解说: GJJ-004-1,分析模式高阶Fowler分析模式的剖析和实现,这个课是针对Martin Fowler的《分析模式》那本书里面的模式来讲解,对里面的模式来剖析,然后用代码来实现。 做到这一步的,我们这个是世界上独…...

Dify使用

1. 概述 官网:Dify.AI 生成式 AI 应用创新引擎 文档:欢迎使用 Dify | Dify GITHUB:langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, ob…...

解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

7.PPT:“中国梦”学习实践活动【20】

目录 NO1234​ NO5678​ NO9\10\11 NO1234 考生文件夹下创建一个名为“PPT.pptx”的新演示文稿Word素材文档的文字:复制/挪动→“PPT.pptx”的新演示文稿(蓝色、黑色、红色) 视图→幻灯片母版→重命名:“中国梦母版1”→背景样…...

Linux系统-centos防火墙firewalld详解

Linux系统-centos7.6 防火墙firewalld详解 1 firewalld了解 CentOS 7.6默认的防火墙管理工具是firewalld,它取代了之前的iptables防火墙。firewalld属于典型的包过滤防火墙或称之为网络层防火墙,与iptables一样,都是用来管理防火墙的工具&a…...

零基础都可以本地部署Deepseek R1

文章目录 一、硬件配置需求二、详细部署步骤1. 安装 Ollama 工具2. 部署 DeepSeek-R1 模型3. API使用4. 配置图形化交互界面(可选)5. 使用与注意事项 一、硬件配置需求 不同版本的 DeepSeek-R1 模型参数量不同,对硬件资源的要求也不尽相同。…...

通过Ollama本地部署DeepSeek R1以及简单使用的教程(超详细)

本文介绍了在Windows环境下,通过Ollama来本地部署DeepSeek R1。该问包含了Ollama的下载、安装、安装目录迁移、大模型存储位置修改、下载DeepSeek以及通过Web UI来对话等相关内容。 1、🥇下载Ollama 首先我们到Ollama官网去下载安装包,此处我…...

css实现长尾箭头(夹角小于45度的)

1. 长尾夹角小于45度的箭头 代码 //h5<div class"singleArrow"></div>//css .singleArrow {width: 150px;height: 1px;position: relative;background-color: #15ff00;/* transform: rotate(-40deg); */ /* 旋转角度 */}.singleArrow::after{ // 成品-有…...

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...

OC-Block

关于OC中的block作为属性时&#xff0c;为什么要要用copy修饰 property (nonatomic, copy) void (^completionBlock)(void);很多文章包括AI都会给出类似结论 Block 默认分配在栈上&#xff0c;如果没有 copy&#xff0c;当方法退出后&#xff0c;Block 会被销毁。使用 copy 修…...

关于知识蒸馏的概念原理以及常见方法

1. 概念与原理 知识蒸馏的基本定义 知识蒸馏(Knowledge Distillation) 是一种将模型压缩与迁移学习结合的技术:它利用预先训练好的大模型(通常参数量大、精度高、计算开销大)指导一个更轻量(参数量小、推理速度快)的学生模型进行训练,从而在保持模型精度的同时显著减少…...

C++轻量级桌面GUI库FLTK

C轻量级桌面GUI库FLTK Screenshots - Fast Light Toolkit (FLTK) 这里写个备忘录,可以参考一下....

C++20导出模块及使用

1.模块声明 .ixx文件为导入模块文件 math_operations.ixx export module math_operations;//模块导出 //导出命名空间 export namespace math_ {//导出命名空间中函数int add(int a, int b);int sub(int a, int b);int mul(int a, int b);int div(int a, int b); } .cppm文件…...

PID 算法简介(C语言)

一、简介: PID是比例、积分、微分三个环节的组合,用来进行反馈控制。每个部分都有对应的系数,也就是Kp、Ki、Kd。PID 算法实现这三个部分的计算,然后综合起来得到控制输出。 二、PID控制器结构体: PID控制器结构体:包含PID参数(Kp, Ki, Kd);存储积分项和上一次误差;…...

Java中的继承及相关概念

在 Java 中&#xff0c;继承是一种允许一个类继承另一个类的特性。通过继承&#xff0c;子类可以获取父类的属性和方法&#xff0c;这有助于减少代码冗余并提高代码的可维护性。以下是关于文件内容的相关分析和知识点总结&#xff1a; 一、继承的核心概念 1.继承的语法 Java …...

语言月赛 202308【小粉兔做麻辣兔头】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202308] 小粉兔做麻辣兔头 题目描述 粉兔喜欢吃麻辣兔头&#xff0c;麻辣兔头的辣度分为若干级&#xff0c;用数字表示&#xff0c;数字越大&#xff0c;兔头越辣。为了庆祝粉兔专题赛 #1 的顺利举行&#xff0c;粉兔要做一些麻…...

云原生后端|实践?

云原生&#xff08;Cloud Native&#xff09;是一种构建和运行应用程序的方法&#xff0c;它充分利用云计算的优势&#xff0c;包括弹性、可扩展性、高可用性和自动化运维。云原生后端开发通常涉及微服务架构、容器化、持续集成/持续部署&#xff08;CI/CD&#xff09;、服务网…...

GrassWebProxy

GrassWebProxy第一版&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.IO; using Newtonsoft.Json;…...

6.Python函数:函数定义、函数的类型、函数参数、函数返回值、函数嵌套、局部变量、全局变量、递归函数、匿名函数

1. 函数定义 Python函数通过def关键字定义。一个函数通常包括函数名、参数列表和函数体。 def greet(name):return f"Hello, {name}!"2. 函数的类型 Python中的函数主要有以下几种类型&#xff1a; 普通函数&#xff1a;具有明确的输入参数和返回值。递归函数&am…...

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用 一、类类的定义和使用示例 二、定义1. 类定义语法2. 属性和方法3. 构造器和初始化4. 实例化5. 类变量和实例变量6. 类方法和静态方法7. 继承8. 多态总结 三、使用1. 创建类的实例2. 访问属性3. 调用方法4. 修…...

CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理

四个主流开源语音克隆与文本转语音&#xff08;TTS&#xff09;项目的对比整理&#xff0c;基于公开资料与实测反馈总结&#xff1a; 项目CosyVoice F5-TTS GPT-SoVITS Fish-Speech 核心技术双向流式语音合成&#xff0c;支持离线与流式一体化建模基于流匹配的ConvNeXt文本表示…...

MySQL基于binlog和gtid主从搭建方案

MySQL基于binlog和gtid主从搭建方案 一.主库配置 1.1 确认 binlog 是否开启 SHOW VARIABLES LIKE %log_bin%; 1.2 创建日志目录并设置权限 mkdir -p /opt/mysql/log_bin chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql 1.3 修改 my.cnf 配置文件 …...

5 计算机网络

5 计算机网络 5.1 OSI/RM七层模型 5.2 TCP/IP协议簇 5.2.1:常见协议基础 一、 TCP是可靠的&#xff0c;效率低的&#xff1b; 1.HTTP协议端口默认80&#xff0c;HTTPSSL之后成为HTTPS协议默认端口443。 2.对于0~1023一般是默认的公共端口不需要注册&#xff0c;1024以后的则需…...