MySQL中的视图和触发器

mysql视图及触发器 mysql视图及触发器 视图 数据库中的视图是一个虚拟表。同真实表一样,视图包含一系列带有名称的列和列数据。 行和列数据来自由定义视图查询所引用的表, 并且在引用视图时动态生成。 视图是一个虚拟表, 是从数据库中一个或多个表中导出来的, 视图还可以从已经存在的视图的基础上定义。 视图一经定义便存储在数据库中, 但从视图中看到的数据并没有在数据库中再存储一份, 通过视图看到的数据实际存放在基... 阅读详情

SQL 视图


1 ) 概述

  • 在mysql中,视图是一个非真实存在的虚拟表
  • 其本质是,根据sql语句获取动态的数据集,并为其命名
  • 用户使用时只需使用名称,即可获取结果集,并可以将其当做表来使用

2 )用法示例

2.1 比较麻烦的sql

select
  *
from 
  (select nid,name from tb1 where nid > 2) as A
where
  A.name > 'alex'

2.2 使用视图简化以便后续可能得复用

  • 上面子查询, 比较麻烦,可以考虑创建成视图
  • 创建视图的示例
    • create view v1 as select nid,name from tb1 where nid > 2
  • 使用视图
    • select * from v1;
    • 上面这句sql的本质是 select * from (select nid,name from tb1 where nid > 2) as v1
  • 删除视图
    • drop view v1;
  • 修改视图
    • alter view v1 as sql语句
  • 需要注意的是
    • 基于视图只能查询, 不能执行增加,修改,删除
    • 如果源表发生变化,视图表也会发生变化
  • 注意:视图在开发阶段实际使用的频率不是很高

SQL触发器


1 ) 概述

  • 比如,数据库中有两张表(或多张表),程序需要对某张表操作的时候
  • 同时需要对另一张表进行增加,删除,修改等操作,在这时候就可以使用触发器
  • 触发器是存储在数据库里,程序就不用操作另外一张表了,直接在操作目标表
  • 另外的一张表的同步可以交给你写的触发器
  • 可以在各个场景中使用

2 )用法示例

2.1 插入前,插入后

-- 插入前
create trigger tri_before_insert_tb1 before insert on tb1 for each row
begin
  -- ... 这里写你的逻辑
end

-- 插入后
create trigger tri_after_insert_tb1 after insert on tb1 for each row
begin
  -- ... 这里写你的逻辑
end

2.2 删除前,删除后

-- 删除前
create trigger tri_before_delete_tb1 before delete on tb1 for each row
begin
  -- ... 这里写你的逻辑
end

-- 删除后
create trigger tri_after_delete_tb1 after delete on tb1 for each row
begin
  -- ... 这里写你的逻辑
end

2.3 更新前,更新后

-- 更新前
create trigger tri_before_update_tb1 before update on tb1 for each row
begin
  -- ... 这里写你的逻辑
end

-- 更新后
create trigger tri_after_update_tb1 after update on tb1 for each row
begin
  -- ... 这里写你的逻辑
end
  • 触发器里的 FOR EACH ROW 是针对每一行的
    • 如果针对这张表每一行做操作,每一行都会触发一次触发器
    • 比如,我有10行数据,在删除每一行的时候,都会触发这个触发器
  • 删除触发器
    • drop trigger tri_after_insert_tb1; 这里删除定义的一个触发器

3 )综合示例

  • 场景:你的数据库中有两张表分别是 t1 和 t2 需要触发器
  • 需求和触发器
    • 在 t1 表插入数据之前,先在 t2 表中插入一行数据
      delimiter $$
      create trigger tri_before_insert_t1 before insert on t1 for each row
      begin
      
      if NEW.name = 'alex' then
        insert into t2(name) values(NEW.name); -- NEW 是新插入的数据
      end if;
      
      end $$
      delimiter;
      
    • 在 t1 表中删除数据之后,再在t2表中插入一行数据
      delimiter $$
      create trigger tri_after_insert_t1 after delete on t1 for each row
      begin
      
      if OLD.name = 'alex' then
        insert into t2(id, name) values(OLD.id, OLD.name);
      end if;
      
      end $$
      delimiter;
      
    • 这里,NEW 是新数据,OLD 是原数据
  • 触发器在业务开发中用的不多,这些一般程序都能搞定
  • 习惯上,能用程序方便搞定的,不用数据库自带的触发器
mysql数据库中的触发器,锁以及视图 锁(locking)是控制多个事务并发访问的一种机制。它允许多个事务同时对数据库进行修改,但确保在任何时候只有一个事务可以修改特定的数据。视图是存放在数据库中的一张虚拟表,视图的结果是由一个或者多个查询结果组成。 阅读详情

相关推荐

超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器

超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器1.1 下载Linux 安装包1.2 安装MySQL1.3 启动 MySQL 服务1.4 登录MySQL2\. 索引2.1 索引概述2.2 索引优势劣势2.3 索引结构2.3.1 BTREE 结构2.3.3 B+TREE 结构2.3.3 MySQL中的B+Tree2.4 索引分类2.5 索引语法2.5.1 创建索引2.5.2 查看索引2.5.3 删除索引2.5.4 ALTER命令2.6 索引设计原则3\. 视图3.1 视图概述3.2 创建或者

wj1314250的博客 2164

MySQL学习(六)——视图和触发器

MySQL中视图的语法,包含创建视图、更新视图、删除视图,MySQL的触发器,包含插入、修改、删除触发器的应用

ifhuke的博客 818

microduck复刻实战:强化学习机器人从仿真训练到真机部署全攻略

强化学习是智能体通过与环境交互试错来学习最优策略的机器学习范式,在机器人控制领域,常借助物理仿真环境进行策略训练,以降低真实世界的试错成本。其核心原理是通过奖励信号引导策略网络迭代优化,PPO等算法则在稳定性和样本效率之间取得平衡。仿真训练的价值在于可批量验证控制策略,但仿真与真实硬件之间存在物理参数偏差,需通过域随机化等技术实现迁移。从四足机器人到仿生机器人,这类方案广泛应用于复杂运动控制任务。microduck作为一个典型的强化学习机器人项目,其复刻过程涉及环境搭建、奖励设计、PPO调参及Sim-to-

weixin_29061425的博客 361

Mysql之视图和触发器

定义:  1.视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。  2.数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。  3.使用视图查询数据时,数据库系统会从原来的表中取出对应的数据作用:  1.使操作简便化;  2.增加数据的安全性;  3.提高表的逻辑独立性;创建视图CREATE [ALGORITHM ={ UNDEFIEND | MERGE | ...

I can @ me 2063

集成电路设计笔记(七)UVLO设计

1. 什么是UVLO 欠压锁定(Undervoltage-Lockout)简称UVLO,是电子设备中在电源电压低于正常工程准位时,切断电源的电路。在嵌入式系统中常会用UVLO监控电池电压,若电压低于一定值,会直接切断电源,保护嵌入式系统的电路。 许多电子设备中都有UVLO的功能,例如在镇流器中就有UVLO电路,若电压过低时直接切断电源。 UVLO就是低电压锁定; 低压关断. 欠压关断模式是当供电电压低于IC的开启门限电压时的一种保护模式。欠压关断模式可保证IC在供电电压不足时不致于被损坏。一个低电压锁定(

ccbirds 2万+

强网杯Web题ezphp解题全记录:利用PHP反序列化与条件竞争拿下服务器

本文详细解析了强网杯Web题目ezphp的解题过程,通过PHP反序列化与条件竞争漏洞的组合利用,成功获取服务器权限。文章深入剖析了反序列化链的构造、文件上传绕过技巧以及条件竞争的实际应用,为CTF选手和Web安全研究者提供了宝贵的实战经验。

weixin_29006187的博客 387

MySql中的视图和触发器

MySql中的视图 1、什么是视图 视图就是一条SELECT语句执行后返回的结果集, 视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表。 2、视图作用 (1)简化用户的操作 关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息, 简化操作; (2)对机密数据提供保护作用 不希望用...

weixin_44675366的博客 282

【SAP中的框架协议】

在SAP中,框架协议(Framework Agreement) 是企业与供应商签订的长期采购约束文件,用于简化重复性采购流程、锁定交易条款并降低管理成本。

m0_73548864的博客 1298

mysql触发器支持视图_MySQL触发器视图

MySQL触发器触发器(trigger):MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 即监视某种情况,并触发某种操作。触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(inse...

weixin_31655087的博客 377

计算pi小数点后10000位

数据结构课上,老师让我们计算一下pi的10000位,复习一下面向对象。 First Try:定义一个高精度类hp(high precision),实现加减乘除,输入输出,然后随便找一个公式,比如Wallis公式,全都用hp进行计算。 现实是:大数乘大数或者大数除大数,实在是太慢了。而且Wallis公式收敛太慢。 Second Try先找到一个收敛较快的公司:BBP公式,观察公式发现,...

我的技术人生 7395

实战解析:利用Wireshark解密QQ通信协议

本文提供了一份利用Wireshark工具分析QQ通信协议的实战指南。文章详细介绍了从环境准备、捕获数据包到解析协议层的完整流程,重点演示了如何识别QQ号码字段、观察加密数据特征以及区分不同通信类型(如文本、文件传输)。通过此实践,读者可以深入理解网络分层模型和现代应用加密通信机制,提升网络协议分析与安全诊断能力。

weixin_29210727的博客 409

【开发篇】MySQL中的视图、触发器

MySQL中的视图、触发器 一、MySQL中的视图 1、什么是视图 2、视图操作 1. 视图的创建和修改 2. 删除视图: 3. 查看视图: 二、触发器 1. 创建触发器 2. 删除触发器 3. 查看触发器 4. 触发器的注意事项

Itsme_MrJJ的博客 1592

FPGA设计中的扇出约束实战:从XDC到代码优化的全流程解析

本文全面解析FPGA设计中扇出约束的重要性与应用,详细介绍了从XDC约束文件设置到HDL代码优化的全流程实战技巧。通过MAX_FANOUT约束控制信号负载,结合寄存器复制和物理优化策略,有效解决高扇出导致的时序违例和布线拥塞问题,提升设计性能和可靠性。

nept的博客 798

MySQL触发器与视图

MySQL触发器与视图

2302_80908313的博客 939

(论文加源码)基于CNN和LSTM的脑电情绪识别(数据集为DEAP和seed)

论文及源码见个人主页:https://download.youkuaiyun.com/download/qq_45874683/84118637?spm=1001.2014.3001.5503 (论文加源码)基于CNN和LSTM的脑电情绪识别(数据集为DEAP和seed)4D-CRNN 目录 目录: 运行过程: 1. 运行1D文件(没有什么bug): 2. 再运行3D文件(没有出现bug): 3. 最后运行main文件(出现了两个bug)(前提需要配置好tensorflow的框架): 第一个bug是..

qq_45874683的博客 6366

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MySQL触发器、视图

MySQL 触发器 定义触发器 语法:create trigger 触发器名 before|after 事件 on 表名 for each row 触发器语句; 1、触发器名建议为trigger_xxx,这样便于区分,触发器名不能重复。 2、before|after 代表触发器语句执行时间,如果是before,就是在insert|delete|update操作之前执行触发器语句;after就是之后。 3、事件就是insert delete update操作中的一个。 4、for each row 是代表任何

xiaoxionghanhan的博客 188

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

MySQL之视图和触发器

视图( view )是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。其内容由查询定义。一般,视图只做查询,不做更删改。触发器(trigger)是 MySQL 提供给程序员和数据分析员来保证数据完整性的一种方法。 权限管理:创建用户,授权,对视图授权,刷新权限。远程连接方法。

Lion_Long的博客 1481

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mysql触发器支持视图_MySQL触发器,视图

一.触发器1.普义在用来某些操作(增删改)时,“自动”执行一些操作(增删改)注意:一张表最大能有6个触发器(32,三种操作两种时间(before|after))2.定义create trigger 触发器名 before|after 事件 on 表名 for each row 触发器语句;触发器名建议为trigger_xxx,这样便于区分,触发器名不能重复。3.解释before|after 代表触...

weixin_31325725的博客 207

MySQL视图、存储、游标、触发器

存储过程的代码位于BEGIN和END语句内,它们是一系列SELECT语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字)游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。就是当我们在Navicat中建立自己的连接并打开后你会发现,它自带了几个数据库,而且数据库中含有很多表,那些就是系统表,而且当你在那些自带的数据库中建表的时候,我们的系统也会将那些表认为是系统表。利用视图,可一次性编写基础的SQL,然后根据需要多次使用。

旭日的博客 1553

MySQL学习笔记-07(视图、触发器)

视图(View)是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,来自定义视图查询中使用的基本表,并且是在使用视图时动态创建;触发器是在操作(insert/update/delete)与表有关的数据库对象之前或之后,触发并执行触发器中定义的SOL语句集合。

weixin_41016739的博客 1370

【MySQL】视图和触发器

视图其实就是虚拟的表(不是真实存在的),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户时只需要使用【名称】即可获取结果集,并可以将其当作表来使用。⚠️注意:基于视图只能查询,针对视图不能执行修改删除。如果源表发生表还,视图也会发生变化。

yujinlong2002的博客 449

MySQL简介与视图,触发器

目录: 数据库介绍 视图 触发器 一. 数据库介绍 1、什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API(接口)用于创建,访问,管理,搜索和复制所保存的数据 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量 所谓的关系型数据...

longlong6682的博客 276

mysql 视图 持久化_MySQL视图、触发器、事务

一、视图1、什么是视图视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可2、为什么要用视图如果要频繁使用一张虚拟表,可以不用重复查询3、如何用视图create view teacher2course asselect * from teacher inner joincourseon teacher.tid =course.teacher_id;drop view teacher2...

weixin_31210347的博客 355

mysql视图和触发器

mysql视图和触发器相关操作文档

chen55bo的专栏 1085

MYSQL 视图/存储过程/触发器详解

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,视图的主要目的是简化复杂的SQL查询,提高数据访问的安全性,以及隐藏数据的复杂性。。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以在创建视图的时候,主要的工作就在于创建这条SQL查询语句上。存储过程是事先经过编译并存储在数据库中。

lIujunXHU的博客 2041
上一篇: React16源码: memo, Fragment, StrictMode, cloneElement, createFactory源码实现
下一篇: MySQL中的事务, 特性及应用
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值