MySQL数据库——视图的更新、视图作用以及案例

news2024/10/8 14:35:43

目录

视图的更新

介绍

示例

视图作用 

案例


视图的更新

介绍

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。

如果视图包含以下任何一项,则该视图不可更新:

  • 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
  • DISTINCT
  • GROUP BY
  • HAVING
  • UNION或者 UNION ALL

示例

create view stu_v_count as select count(*) from student;

上述的视图中,就只有一个单行单列的数据,与基础表不对应,如果我们对这个视图进行更新或插入的,将会报错。

insert into stu_v_count values(10);

视图作用 

1.简单
视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。


2. 安全
数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据。

3. 数据独立
视图可帮助用户屏蔽真实表结构变化带来的影响。

案例

1.为了保证数据库表的安全性,开发人员在操作tb_user表时,只能看到的用户的基本字段,屏蔽手机号和邮箱两个字段。

2.查询每个学生所选修的课程(三张表联查),这个功能在很多的业务中都有使用到,为了简化操作,定义一个视图。

-- 案例一

-- 创建视图
create view tb_user_view 
as 
select id,name,profession,age,gender,status,createtime 
from 
tb_user;

-- 查询视图
select * from tb_user_view;

-- 案例二

-- 三表联查
select s.name,s.no,c.name 
from 
student s,student_course sc, course c 
where 
s.id = sc.studentid and sc.courseid = c.id;

-- 把三表联查直接放到创建视图中会出现name重复出现的情况
-- 需要重命名,下面创建视图
create view tb_stu_course_view
as
select s.name student_name,s.no student_no,c.name course_name 
from 
student s,student_course sc, course c 
where 
s.id = sc.studentid and sc.courseid = c.id;

-- 查询视图
create * from tb_stu_course_view;


END


学习自:黑马程序员——MySQL数据库课程

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

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

相关文章

体外循环手术中循环管路灌注流量精密自动控制解决方案

摘要:在目前的体外循环手术过程中,需要灌注师快速而精确地操作使得血液流速调节到期望的目标值。基于国外文献报道的血流量自动控制方法和装置,本文提出了技术改进且国产化解决方案。通过本解决方案中增加的国产系列电控夹管阀、电控针阀和具…

C++之特殊类的设计

目录 一、单例模式 1、设计模式 2、单例模式 1、饿汉模式 2、懒汉模式 3、单例对象的释放问题 二、设计一个不能被拷贝的类 三、设计一个只能在堆上创建对象的类 四、设计一个只能在栈上创建对象的类 五、设计一个不能被继承的类 一、单例模式 1、设计模式 概念&am…

RabbitMQ如何保证消息不丢失呢?

RabbitMQ 是一个流行的消息队列系统,用于在分布式应用程序之间传递消息。要确保消息不会丢失,可以采取以下一些措施: 持久化消息: RabbitMQ 允许你将消息标记为持久化的。这意味着消息将被写入磁盘,即使 RabbitMQ 服务…

王道p149 7.二叉树按二叉链表形式存储,写一个判别给定二叉树是否是完全二叉树的算法(c语言代码实现)

采用层次遍历算法,将所有结点加入队列(包括空结点)。 如果没有左孩子,就看有没有右孩子,如果有右孩子,那么不为完全二叉树。 如果有左孩子,且之前不存在缺孩子的结点,左孩子进队,如果有右孩子…

专家级数据恢复:UFS Explorer Professional Recovery Crack

UFS Explorer Professional Recovery - 一款功能强大且方便的数据恢复程序,支持检测大量文件系统、操作系统和各种类型的驱动器:从简单的闪存驱动器到复杂的复合存储(各种级别的 RAID 阵列)。 该程序由执业专家开发,并…

Leetcode刷题详解——点名

1. 题目链接:LCR 173. 点名 2. 题目描述: 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席,请返回他的学号。 示例 1: 输入: records [0,1,2,3,5] 输出: 4示例 2: 输入: records [0, 1, 2, 3, 4,…

蓝桥杯第 2 场算法双周赛 第2题 铺地板【算法赛】c++ 数学思维

题目 铺地板https://www.lanqiao.cn/problems/5887/learning/?contest_id145 问题描述 小蓝家要装修了,小蓝爸爸买来了很多块(你可以理解为数量无限)2323 规格的地砖,小蓝家的地板是 nm 规格的,小蓝想问你&#xf…

[C++随想录] map和set的使用

map和set的使用 set初始化finderasecountlower_bound && upper_boundequal_ range mapinsert[ ]运算符 multiset && multimap set — — key模拟 map — — key_value模型 set 初始化 void set_test1() {set<int>s;s.insert(10);s.insert(12);s.insert(…

2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析

比赛时长为期7天的妈杯大数据挑战赛如期开赛&#xff0c;为了帮助大家更好的选题&#xff0c;首先给大家带来赛题浅析&#xff0c;为了方便大家更好的选题。 赛道 A&#xff1a;基于计算机视觉的坑洼道路检测和识别 A题&#xff0c;图像处理类题目。这种题目的难度数模独一档…

如何查看多开的逍遥模拟器的adb连接端口号

逍遥模拟器默认端口号为&#xff1a;21503。 不过&#xff0c;使用多开器多开的时候&#xff0c;端口就不一定是21503了。 如何查看&#xff1f; 进入G:\xiaoyao\Microvirt\MEmu\MemuHyperv VMs路径中 每多开一个模拟器&#xff0c;就会多出一个文件夹。 进入你要查找端口号…

C#,数值计算——分类与推理,基座向量机高斯核(Svmgausskernel)的计算方法与源程序

No logical, not an AI. 你现在能阅读到的大量AI都是假AI&#xff0c;包括 。。。GPT 在内&#xff0c;没有任何鸟用。凡为 ...GPT 发声者均为假学者。 No log, no AI. 1 文本格式 using System; namespace Legalsoft.Truffer { public class Svmgausskernel : Svmgen…

Flask Run运行机制剖析

一、前言 已经玩了一段时间Flask &#xff0c;每次调用app.run(或flask run)就可以启动应用&#xff0c;今天我们就来了解一下run背后究竟做了些什么事情。 注&#xff1a;通过上面几行代码就可以启动一个Flask服务器&#xff0c;打开浏览器输入http://127.0.0.1:5000, 页面上…

sharepoint2016-2019升级到sharepoint订阅版

一、升级前准备&#xff1a; 要建立新的sharepoint订阅版环境&#xff0c;需求如下&#xff1a; 1.单服务器硬件需求CPU 4核&#xff0c;内存24G以上&#xff0c;硬盘300G&#xff08;根据要迁移的数量来扩容大小等&#xff09;&#xff1b; 2.操作系统需要windows server 20…

得物 Redis 设计与实践yu

一、前言 自建 Redis 系统是得物 DBA 团队自研高性能分布式 KV 缓存系统&#xff0c;目前管理的 ECS 内存总容量超过数十TB&#xff0c;数百多个 Redis 缓存集群实例&#xff0c;数万多个 Redis 数据节点&#xff0c;其中内存规格超过 1T 的大容量集群多个。 自建 Redis 系统采…

Linux系统下配置王爽汇编语言环境

【步骤一】 先打开命令行&#xff0c;进入root模式&#xff0c;输入如下语句&#xff1a; sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后&#xff0c;命令行输入dosbox 会进入dosbox页面&#xff1a; 【步骤三】 在你的主机中&…

thinkphp6 自定义命令行command使用

在tp框架中往往需要定义一些命令去大批量的操作行为&#xff0c;直接在控制器中会有超时报错的情况&#xff0c;而且也会很慢&#xff0c;所以就需要使用到tp里的自定义命令行来完成这些操作行为。 比如&#xff1a;现在有一张表数据有上百万&#xff0c;要更新表中某个字段的…

宝塔面板安装Python和Flask(新版Python项目)

&#xff08;一&#xff09;宝塔面板的项目菜单&#xff0c;打开Python项目的“项目版本管理” 安装Python版本3.10.0。 会创建一个Python版本的文件夹www/server/pyproject_evn/versions/ 会创建一个Python虚拟环境的文件夹www/server/pyproject_evn/python_venv/ &#xf…

深入探讨Docker生态系统,Docker Compose vs. Docker Swarm vs. Kubernetes:深入比较

文章目录 Docker ComposeDocker SwarmKubernetesDocker Compose适用场景 Docker Swarm适用场景 Kubernetes适用场景 对比和结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xf…

【小黑嵌入式系统第五课】嵌入式系统开发流程——开发工具、交叉开发环境、开发过程(生成调试测试)、发展趋势

上一课&#xff1a; 【小黑嵌入式系统第四课】嵌入式系统硬件平台&#xff08;二&#xff09;——I/O设备、通信设备&#xff08;UART&USB&蓝牙&#xff09;、其他&#xff08;电源&时钟&复位&中断&#xff09; 文章目录 一 嵌入式软件开发工具的分类二 嵌…

Express框架开发接口之登录与注册API

我们利用nodeexpressmysql开发接口&#xff0c;对数据库数据进行简单增、删、查改等操作。 接口是什么&#xff1f; 接口是 前后端通信的桥梁 简单理解&#xff1a;一个接口就是 服务中的一个路由规则 &#xff0c;根据请求响应结果 接口的英文单词是 API (Application Progra…