【MySQL数据库】视图

1,视图的基本介绍

        视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

        视图返回的数据是从一个或多个基础表(或其它视图)实时提取的。每当查询一个视图时,都会执行视图的定义语句来生成结果集。

2,视图的创建

视图的创建语法:

        create view [视图名] as select [语句]

        说明:上面的 [语句] 是select后面的语句过程

例如:

        有两个表 employee 和 department。employee 表存储员工信息,包括员工ID(id)、姓名(name)、职位(position)、部门ID(d_id)。department 表存储部门信息,包括部门ID(id)和部门名称(name)。

        现在,我们想创建一个视图,这个视图将展示员工的姓名 (name)、职位 (position) 以及他们所属的部门名称 (name)。

        创建满足条件的视图:create view employee_view as select e.name, e.position, d.name d_name from employee e,department d where e.d_id=d.id;

        显示其数据:select * from employee_view;

        注意:MySQL 在创建视图时,要求视图中的每个列都有唯一的名称(因为同名的列存在歧义)。如果有两个或多个列可能具有相同的名称(例如,来自不同表但同名的列),则需要为这些列指定别名。

2,视图的修改

        视图与基本表相关联,若修改了视图,那么基本表的数据会随之更改;若修改了基本表,那么视图的数据也会随之更改。

修改视图

修改基本表

3,视图的删除

删除视图:drop view [视图名];


        通过上面视图的运用,这里对视图来进行全方面的了解。

  1. 视图的数据来源:视图的数据来源于一个或多个基本表,或者其它视图。视图是用来对这些基本表中的数据进行筛选、汇总。当修改视图时,相当于修改基本表。
  2. 视图的动态性:视图的内容是动态的,每当查询视图时,都会执行创建视图时定义的 select 语句来获取最新的数据。这也就是为什么基础表的数据发生了变化,视图也会变化。
  3. 视图简化复杂查询:视图可以用来简化复杂的查询逻辑。例如上面查询两个表的相关数据。
  4. 视图安全性强:通过视图,可以限制用户只能访问特定的数据列和行,从而保护敏感信息不被未授权的用户访问。 

        视图既然不在数据库中存储,那么视图存储在哪里呢?视图本身并不存储实际的数据,而是存储了定义视图的SQL查询(即视图的定义)。这个定义保存在数据库的系统目录中。因此,当你创建一个视图时,实际上是在数据库的元数据中添加了一个新的条目,该条目包含了如何从基本表中构建视图的信息。

        每当查询视图时,数据库会根据视图的定义去查询基本表,并返回结果集。也就是说,视图数据的查询其实是动态生成的,每次查询时访问的都是基本表,尽管它看起来像是一张表,但实际上它并不存储实际的数据,只存储了如何从基本表中提取数据的描述。

        视图的存在主要是为了简化查询、增强安全性等功能,因此,视图不能添加索引。它的动态特性确保了无论何时查询视图,都能获得最新、最准确的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统安装方式+适合初学者的发行版本

Linux系统安装方式适合初学者发行版—目录 一、Linux系统的安装方式1. 物理机直接安装2. 虚拟机安装3. 双系统安装4. Live USB试用5. 云服务器安装 二、适合初学者的Linux发行版1. Ubuntu2. Linux Mint3. Zorin OS4. Pop!_OS5. Elementary OS6. Fedora7. Manjaro 三、选择建议场…

Linux C++ JNI封装、打包成jar包供Java调用详细介绍

在前面 Android专栏 中详细介绍了如何在Android Studio中调用通过jni封装的c库。 在Android使用 opencv c代码,需要准备opencv4android,也就是c的任何代码,是使用Android NDK编译的,相当于在windows/mac上使用Android stdido交叉…

4.1 模块概述

1.Python结构 工程 > 包 > 模块 Python工程: “Python项目中最大的文件夹(本质就是一个文件夹)” --- 左侧的 CODE文件夹 为Python工程 Python包: 本质就是一个文件夹,但是python包中具备具体的标识,如果没有标识则不能导入 --- 左侧的 01.Python基础 文件夹为python包 P…

AJAX 实例

AJAX 实例 引言 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。Ajax通过在后台与服务器交换数据,实现了页面的动态更新,从而提高了用户体验和…

相机的基础架构

📷 相机相关基础架构学习路径 一、了解手机相机系统架构 Android Camera HAL(如果你是做 Android 平台) 学习 Camera HAL3 架构(基于 camera_device_t, camera3_device_ops 接口) 熟悉 CameraService → CameraProvid…

MLX Chat - 基于 Streamlit 的 MLX 前端界面

本文翻译整理自:https://github.com/da-z/mlx-ui 一、关于 MLX Chat 一个基于 Streamlit 的简单 UI/网页前端,用于 MLX mlx-lm 项目。 相关链接资源 github : https://github.com/da-z/mlx-uiMLX 社区模型库:https://huggingface.co/mlx-co…

el-table 自定义列、自定义数据

一、对象数组格式自定义拆分为N列 1-1、数据格式: const arrayList ref([{"RACK_NO": "A-1-001"},{"RACK_NO": "A-1-002"},{ "RACK_NO": "A-1-003"},//省略多个{"RACK_NO": "A-1-100…

JVM 如何使用性能分析工具定位代码中的性能问题?

核心思想: 通过工具观察程序在特定负载下的运行状态,识别消耗资源最多的代码段(热点代码)、异常的内存分配模式或线程阻塞情况,然后针对性的优化代码。 通用步骤: 确定问题: 首先明确遇到了什…

Python虚假新闻检测识别

程序示例精选 Python虚假新闻检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python虚假新闻检测识别》编写代码,代码整洁,规则,易读。 学习与应…

网络原理 - 12(HTTP/HTTPS - 3 - 响应)

目录 认识“状态码”(status code) 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 状态码小结: …

Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用户&#xff1a;优先使用Caffeine&#xff0c;性能更优且维护活跃。 1. 添加依赖 在pom.xml中添加Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId&…

Linux工作台文件操作命令全流程解析

全文目录 1 确认当前工作路径2 导航与目录管理2.1 关键命令2.2 逻辑衔接 3 文件基础操作3.1 创建 → 备份 → 重命名 → 清理3.2 文件查看和编辑3.3 文件链接3.4 文件diff 4 文件权限与所有权管理5 文件打包与归档6 参考文献 写在前面 shell是一种命令解释器&#xff0c;它提供…

LeetCode第183题_从不订购的客户

LeetCode 第183题&#xff1a;从不订购的客户 题目描述 表: Customers ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- id 是该表的主键。 该表包含消费者的 id 和…

c语言的常用关键字

c语言的常用关键字 c语言的关键字表示数据类型的关键字autocharfloatdoubleintlongshortvoidsignedstruct、enum、unionunsigned 表示分支语句的关键字ifelseswitchbreakcasecontinuedefault 表示循环语句的关键字whiledoforgoto 用于修饰变量或函数的关键字constconst修饰变量…

MCU通用输入输出端口(GPIO)设计指南

在嵌入式系统开发中&#xff0c;MCU的GPIO接口是一个基础但非常实用的功能模块。GPIO全称是通用输入输出端口&#xff0c;它让MCU可以灵活地与外部设备进行交互。 GPIO的主要特点包括&#xff1a; 多功能性&#xff1a;每个引脚都可以单独配置为输入或输出 可编程性&#xff…

STM32完整内存地址空间分配详解

在STM32这类基于ARM Cortex-M的32位微控制器中&#xff0c;整个4GB的地址空间(从0x00000000到0xFFFFFFFF)有着非常系统化的分配方案&#xff0c;每个区域都有其特定的用途。下面我将详细介绍这些地址区域的分配及其功能&#xff1a; STM32完整内存地址空间分配详解(0x00000000…

实现水平垂直居中的多种方法

在前端开发中&#xff0c;元素的居中是一个常见但又经常让人头疼的问题。本文将全面总结各种CSS居中方法&#xff0c;特别是如何实现一个div的水平垂直居中。 为什么居中这么重要&#xff1f; 居中布局是现代网页设计中最基础也最重要的布局方式之一。无论是导航菜单、登录框…

如何实现服务的自动扩缩容(Auto Scaling)

在云计算和分布式系统的时代,系统的弹性和适应性已成为企业构建高效IT基础设施的核心需求。自动扩缩容(Auto Scaling)作为一种关键技术,旨在根据实时负载变化动态调整计算资源,以确保系统性能稳定,同时优化资源利用效率。简单来说,自动扩缩容是指系统能够根据预设规则或…

uniapp+vue3+ts 使用canvas实现安卓端、ios端及微信小程序端二维码生成及下载

加粗样式uniapp多端生成带二维码海报并保存至相册的实现 在微信小程序开发中&#xff0c;我们常常会遇到生成带有二维码的海报并保存到手机相册的需求&#xff0c;比如分享活动海报、产品宣传海报等。今天就来和大家分享一下如何通过代码实现这一功能。 准备工作 在开始之前&am…

架构师面试(三十八):注册中心架构模式

题目 在微服务系统中&#xff0c;当服务达到一定数量时&#xff0c;通常需要引入【注册中心】组件&#xff0c;以方便服务发现。 大家有没有思考过&#xff0c;注册中心存在的最根本的原因是什么呢&#xff1f;注册中心在企业中的最佳实践是怎样的&#xff1f;注册中心的服务…