mysql数据库之视图、触发器
视图
概念:通过查询得到的一张虚拟表,然后保存下来就是视图
视图的好处:如果要频繁使用某张虚拟表,那么就可以保存为视图,以后查找就直接拿这个视图就会非常方便
视图语法规则:
- create view teacher2course as 虚拟表
视图需要注意的点:
1、视图在硬盘中只有表结构文件,没有表数据文件,数据取自原查询的表
2、视图常用于查询,尽量不要修改视图表中的数据,修改数据可能会导致原表数据出现问题
触发器
概念:在对某张表进行增删改的操作时会自动触发另外一部分功能的执行的行为被称为触发器
为什么用触发器:触发器专门针对我们对某张表的增删改的行为,实际需求中我们可能需要监控这张表的操作并执行一些其他功能,这时候使用触发器将会非常方便。
创建触发器语法规则:
- # 针对插入
- create trigger tri_after_insert_t1 after insert on 表名 for each row
- begin
- sql代码。。。
- end
- create trigger tri_after_insert_t2 before insert on 表名 for each row
- begin
- sql代码。。。
- end
- # 针对删除
- create trigger tri_after_delete_t1 after delete on 表名 for each row
- begin
- sql代码。。。
- end
- create trigger tri_after_delete_t2 before delete on 表名 for each row
- begin
- sql代码。。。
- end
- # 针对修改
- create trigger tri_after_update_t1 after update on 表名 for each row
- begin
- sql代码。。。
- end
- create trigger tri_after_update_t2 before update on 表名 for each row
- begin
- sql代码。。。
- end
伪案例:
- # 案例
- CREATE TABLE cmd (
- id INT PRIMARY KEY auto_increment,
- USER CHAR (32),
- priv CHAR (10),
- cmd CHAR (64),
- sub_time datetime, #提交时间
- success enum ('yes', 'no') #0代表执行失败
- );
- CREATE TABLE errlog (
- id INT PRIMARY KEY auto_increment,
- err_cmd CHAR (64),
- err_time datetime
- );
- delimiter $$ # 将mysql默认的结束符由;换成$$
- create trigger tri_after_insert_cmd after insert on cmd for each row
- begin
- if NEW.success = 'no' then # 新记录都会被MySQL封装成NEW对象
- insert into errlog(err_cmd,err_time) values(NEW.cmd,NEW.sub_time);
- end if;
- end $$
- delimiter ; # 结束之后记得再改回来,不然后面结束符就都是$$了
- #往表cmd中插入记录,触发触发器,根据IF的条件决定是否插入错误日志
- INSERT INTO cmd (
- USER,
- priv,
- cmd,
- sub_time,
- success
- )
- VALUES
- ('egon','','ls -l /etc',NOW(),'yes'),
- ('egon','','cat /etc/passwd',NOW(),'no'),
- ('egon','','useradd xxx',NOW(),'no'),
- ('egon','','ps aux',NOW(),'yes');
- # 查询errlog表记录
- select * from errlog;
- # 删除触发器
- drop trigger tri_after_insert_cmd;
mysql数据库之视图、触发器的更多相关文章
- MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称
MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称 INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...
- MYSQL数据库学习八 触发器的操作
8.1 触发器 在表发生更改时,自动进行一些处理.例如,学生表中每增加一条关于学生记录时,学生的总数就必须同时改变,同时需要检查电话号码格式是否正确,地址缩写是否正确. 以下语句会激活触发器: DEL ...
- MySQL数据库之视图
1 引言 为了简化复杂SQL语句编写,以及提高数据库安全性,MySQL数据库视图特性.视图是一张虚拟表,不在数据库中以储存的数据值形式存在.在开发中,开发者往往只对某些特定数据和所负责的特定任务感兴趣 ...
- Navicat工具导出mySQL数据库某个视图结构的.sql脚本
用Navicat工具怎么都导不出来mySQL数据库的某个视图.sql脚本,即使导出来也只是包含视图记录,不包含视图结构.经过一番研究,终于克服,操作如下: 1.在某个数据库中,新建备份,如下图 2.选 ...
- MySQL数据库创建视图
视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息. 我有以下几张表: -------image表---- -- ...
- 39、mysql数据库(视图)
39.1.视图: 0.创建表及插入数据: 1.创建teacher表及插入数据: (1)创建表: CREATE TABLE teacher( tid int PRIMARY KEY auto_incre ...
- MySQL数据库中的触发器
--触发器是一类特殊的监控增删改操作,并产生相应的增删改的操作 --1,监视谁 2,监视动作 3,监视时间(之前或之后) 4,触发的事件 --触发器的简单语法 create trigger 触发器名字 ...
- spring boot使用jpa查询mysql数据库的视图时不报错,但查询结果数据总是重复第一条
问题描述: 在数据库里查询到的结果是正常显示的 在程序中返回的结果: 解决方法: 添加行号作为主键: 解决! 我明明是前端啊前端,为啥在搞后台....,总感觉我要在向全栈进发,希望自己有朝一日真的能成 ...
- mySQl数据库的学习笔记
mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...
随机推荐
- Jmeter测试部全体学习
Jmeter小助手:__counter __Random __UUID __CSVRead 性能指标:CPU 内存 磁盘 网络 版本(系统版本) linux命令: top 能够试 ...
- Win7下使用Visual Studio为WinXP编译可执行文件
造冰箱的大熊猫@cnblogs 2019/8/5 2019/9/5补充:参见这里 1.问题 开发机是64位Win7,想开发能够运行在WinXP下的C程序,怎么办? 2.解决方法 一个简单粗暴的解决办法 ...
- SSO 断点登陆
1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开 ...
- Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知
摘自:https://www.cnblogs.com/qiaogeli/p/12004962.html 程序员乔戈里 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家 ...
- Leetcode题目206.反转链表(简单)
题目描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: ...
- CDN之Web Cache
1. Cache 的工作方式 Web Cache 作为一种网页缓存技术,可以在用户访问网站服务器的任何一个中间网元上实现.根据 HTTP 协议的定义,在一次网页访问中,用户从客户端发出请求到网站服务器 ...
- LeetCode 简化路径(探索字节跳动)
题目描述 给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如, path = "/home/", => "/home" path ...
- Filebeat使用
1.Beat家族 Beats可以直接(或者通过Logstash)将数据发送到Elasticsearch,在那里你可以进一步处理和增强数据,然后在Kibana中将其可视化. 2.FileBeat安装 2 ...
- PHP AJAX 返回XML数据
例子:利用AJAX间接访问数据库,查出Nation表中的数据,返回XML数据,并将Nation表中的数据显示在下拉列表框中 外层建一个下拉列表框 </select> JQurey代码 $( ...
- Python——决策树实战:california房价预测
Python——决策树实战:california房价预测 编译环境:Anaconda.Jupyter Notebook 首先,导入模块: import pandas as pd import matp ...