触发器

MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

醉酒当歌 提交于 2019-11-28 11:14:39
目录 视图 *** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysql的默认结束符(;) 触发器死循环 六个触发器的执行时机 新增前、新增后、删除前、删除后、更新前、更新后 NEW对象指代的就是当前记录(对象) 事务 ***** 什么是事务 事务的四大特性 ACID A:原子性 atomicity C:一致性 consistency I:隔离性 isolation D:持久性 durability 如何开启事务 事务回滚 永久性更改 小案例 存储过程 什么是存储过程 如何创建存储过程 语法结构 案例 定义存储过程 在mysql中调用存储过程 在pymysql中调用存储过程 案例-- 使用存储过程监测事务 函数 MySQL内置函数 常见函数及练习 date_format() 函数(需掌握) 自定义函数 流程控制 if 条件语句 while 循环 索引与慢查询优化 ** 详细内容参考egon 的博客 前言(摘抄) 索引 扩展阅读 常见 索引 索引的本质 索引的缺点 小结 索引的数据结构 -- B+ 树 聚集索引非聚集索引 联合索引 慢查询优化 注意这块的小点能提高sql语句性能 测试索引 正确使用索引 小科普 核心业务逻辑代码一般都是 放在服务端 的

MySQL 触发器

你离开我真会死。 提交于 2019-11-28 11:09:45
1、什么是触发器   是用户定义在关系表上的一类由事件驱动的数据对象,也是一种保证数据完整性的方法。 2、创建触发器 -> create trigger mysql_test.customers_insert_trigger after insert ->on mysql_test.customers for each row set @str = 'one customer added' //@str表示用户变量//这里表示有数据插入时 str变为one customers added 3、插入一条数据触发触发器 ->insert into customers ->values(1001,"张三",19,"男"); ->select @str; //插入一条数据,改变了用户变量的值,我们应该直接查看用户变量,而不是原表 4、删除触发器 drop trigger if exists mysql_test.customers; //删除一个触发器 5、触发器的种类   insert 触发器   delete触发器   update触发器 insert触发器 在insert触发器代码内,可引用一个名为new(不区分大小写)的虚拟表,来访问被插入的行 在before insert触发器中,new中的值可以被跟新new即被插入的数据->create trigger mysql_test

该批号的入库数量大于委外订单的数量,无法保存

邮差的信 提交于 2019-11-28 08:57:35
用户在下推委外加工入库时,弹出“该批号的入库数量大于委外订单的数量,无法保存”错误提示。 原因是:入库的并非产品而是物料,物料在系统中不会启用批号管理,故入库时无法填写批号,导致触发器返回错误提示。 处理步骤: 查询该表关联的触发器: select triggers.name as [触发器],tables.name as [表名],triggers.is_disabled as [是否禁用], triggers.is_instead_of_trigger AS [触发器类型], case when triggers.is_instead_of_trigger = 1 then 'INSTEAD OF' when triggers.is_instead_of_trigger = 0 then 'AFTER' else null end as [触发器类型描述] from sys.triggers triggers inner join sys.tables tables on triggers.parent_id = tables.object_id where triggers.type = 'TR' AND triggers.name LIKE 'ICStockBil%' order by triggers.create_date 找到两条相关,但不知道是哪一条

mysql了解知识点

感情迁移 提交于 2019-11-28 08:55:53
视图 1.什么是视图   视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用 2.为什么要用视图   如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create views teacher_course as select * from teacher inner join course on course.tid = teacher.id **强调** 1.在硬盘中,视图只有表结构文件,没有表数据文件 2.视图通常是用于查询,不要改动视图表中的数据 3.一般情况下不会频繁的使用视图来写业务逻辑 触发器 在满足对某张表数据的 增,删,改 的情况下,自动触发的功能称之为触发器 1.为何要用触发器   触发器专门针对我们对 某一张表数据增insert,删delete,改update的行为 ,这类行为一旦执行 就会触发触发器的执行,即自动运行另外一段sql代码 2.创建触发器语法  固定语法结构 create trigger 触发器的名字 after\before insert\update\delete on 表名 for each row begin sql 语句 end  最终固定语法 create trigger tri_after\before_insert\update\delete_user after\before insert\update

FPGA面试题

♀尐吖头ヾ 提交于 2019-11-28 08:37:55
FPGA面试题——网上资料整理 2019-08-23 21:22:30 1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系。 异步逻辑是各时钟之间没有固定的因果关系。 〔补充〕: 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入 x 有无变化,状态表中的每个状态都是稳定的。 异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。 2:同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。 3:时序设计的实质: 电路设计的难点在时序设计,时序设计的实质就是满足每一个触发器的建立/保持时间的要求。 4:建立时间与保持时间的概念? 建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间。 保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间

视图,触发器,事务

∥☆過路亽.° 提交于 2019-11-28 08:34:30
视图   一个SQL查询语句的结果是一张虚拟表,将这种虚拟表保存下来,它就变成了一个视图。   我我们之所以使用视图,是因为当你频繁需要用到多张表的连表结果的时候,你就可以事先生成好视图,之后直接调用即可,避免了反复写连表操作的sql语句。   视图只有表结构,视图中的数据还是来源于原来的表,不要改动视图表中的数据,因为会影响到其它表中的数据 一般情况下不会频繁的使用视图来写业务逻辑。   固定语句     create view 跟视图的名字 as 后面跟虚拟表的名字(就是SQL语句拿到的表) 触发器   到达某个条件自动触发,当你在对数据进行增 删 改的情况下会自动触发触发器的运行,类似一个警报系统,就是你一旦做了某个操作,我就立马执行什么东西。 触发器分为六种情况: 增前; 增后; 改前; 改后; 删前; 删后。   固定语法结构:   create trigger 触发器的名字 after/before insert/update/delete on 表名 for each row   begin   sql语句   end # ror each row 是实时在监测的意思,只要有一条数据被增了,改了或者删了就立马触发 增前   create trigger tri_before/after_insert/update/delete_t1 after/before

事务 视图 触发器 函数 (内置) 存储过程 流程控制 索引 # 39

浪子不回头ぞ 提交于 2019-11-28 08:30:56
day39 1.视图 1.视图.png 1 """""" 2 """ 3 '''视图''' 4 1.什么是视图? 5 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来 6 它就变成了一个视图 7 8 2.为什么要使用视图? 9 当频繁需要用到多张表的连表结果,那你就可以事先生成好视图 10 之后直接调用即可,避免了反复写连表操作的sql语句 11 12 3.如何使用? 13 create view teacher_course as select * from teacher inner join course on teacher.id = course.teacher_id; 14 15 4.视图的特点? 16 1.视图只有表结构,视图中的数据还是来源于原来的表 17 2.不要改动视图表中的数据 18 3.一般情况下不会频繁的使用视图来写业务逻辑(防止资源消耗) 19 20 """ 1.视图.py 2.触发器 """""" """ 创建表 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代表执行失败 );

Day39 数据库(六) 数据库中的视图、触发器、事务、存储过程、内置函数、流程控制、索引

北城以北 提交于 2019-11-28 08:30:21
一.视图 1.什么是视图   视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要使用视图   如果频繁的使用同一张虚拟表,可以省下重复查询的时间 3.如何使用视图 # 先使用内连接生成一张虚拟表 SELECT * FROM teacher INNER JOIN course ON teacher.tid = course.teacher_id; # 再把这张虚拟表设置为视图 CREATE VIEW teacher_course AS SELECT * FROM teacher INNER JOIN course ON teacher.tid = course.teacher_id; 生成的视图 强调: 1.在硬盘中,视图只有表结构文件,没有表数据文件 2.视图通常是用于查询,尽量不要修改视图中的数据 删除视图 # 删除视图 drop view teacher_course; 注意:在开发过程中是不会大量的使用视图,因为视图只是一个临时生成的文件,不是我们正常建出来的表,所以一切对视图的增、删、改操作,数据库管理员都不会正规的对待它,修改就涉及到跨部门沟通的问题,所以通常不会使用视图,并且视图也会占用存储空间,我们都是通过重新修改sql语句来扩展功能 二.触发器 触发器就是到达某种条件自动触发的功能,一般都是运用在对数据的增、删

视图、触发器、事务、存储过程、内置函数、流程控制、索引

白昼怎懂夜的黑 提交于 2019-11-28 08:29:47
视图、触发器、事务、存储过程、内置函数、流程控制、索引 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1、什么是视图 ​ 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2、为什么要用视图 ​ 如果要频繁使用一张虚拟表,可以不用重复查询 3、如何用视图 create view teacher_course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调 1、在硬盘中,视图只有表结构文件,没有表数据文件 2、视图通常是用于查询,尽量不要修改视图中的数据 drop view teacher_course; 思考:开发过程中会不会去使用视图? 不会!视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能 触发器 在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器 为何要用触发器 ​ 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为

视图、触发器、事务、存储过程、函数

大憨熊 提交于 2019-11-28 08:29:46
一、视图 1.什么是视图? 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来 它就变成了一个视图2.为什么要用视图? 当频繁需要用到多张表的连表结果,你就可以事先生成好视图 之后直接调用即可,避免了反复写连表操作的sql语句3.视图特点: 1.视图只有表结构,在数据库中只会生成表结构文件,视图中的数据还是来源于原来的表2.不要改动视图表中的数据,一旦改动就会改动原文件数据,并且在多表情况下,因为有关联关系,你也修改不了视图3.一般情况下不会频繁的使用视图来写业务逻辑 4.视图虽好可不要多用:1.视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便。企业中开发和数据库管理是分开的,如果你的大量逻辑都基于视图来写当你需要  新增视图或者修改视图就要跨部门交流,谁管你的吊事,并且人家可能也不会帮你去维护视图,一旦视图被误删或者丢失,你的所有代码都要重新从头再来,因此还是老老实实使用sql原生语句,该连表就连表2.生成一个视图就会生成一个表结构,当视图足够多的时候占用大量资源 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+