mysql事务

mysql(6)视图、事务、流程控制

假如想象 提交于 2019-11-28 08:22:56
目录 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 (尽量少用) 工作用的不是很多 原因:1.创建过多" 视图 ",占用硬盘资源和数据库资源 ​ 2.无法改表 1、什么是视图 ​ 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2、为什么要用视图 ​ 当频繁需要用到多张表的连表结果,你就可以事先生成好视图 ​ 之后直接调用即可,避免了反复写连表操作的sql语句 2 3、如何用视图 create view teacher_course as select * from teacher inner join course on teacher.tid = course.teacher_id; 视图存在于“视图”中 强调 1、在硬盘中,视图只有表结构文件,没有表数据文件, 视图中的数据还是来源于原来的表 2、视图通常是用于查询,尽量不要修改视图中的数据 3、一般情况下不会频繁的使用视图来写业务逻辑 drop view teacher2course; 视图 只有表结构文件: 不要 修改 视图中的数据(默认也不让修改): 思考:开发过程中会不会去使用视图? 不会!视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下

20190823 尚硅谷MySQL核心技术

独自空忆成欢 提交于 2019-11-28 08:16:47
背景 视频时间:2017.09 MySQL版本:5.5 MySQL基础 命令行启动、停止MySQL: net start MySQL(这里是注册的服务名称) net stop MySQL 命令行连接MySQL: mysql -h localhost -P 3306 -u root -p xxx -h 主机,可省略 -P 端口号,可省略 -u 用户名 -p 密码,与密码之间不能有空格,其他可有可无 常用命令 1.查看当前所有的数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 show tables; 4.查看其它库的所有表 show tables from 库名; 5.查看当前所在数据库 select DATABASE(); 6.查看表结构 desc 表名; 7.查看服务器的版本 方式一:登录到mysql服务端 select version(); 方式二:没有登录到mysql服务端 mysql --version 或 mysql --V MySQL的语法规范 不区分大小写,但建议关键字大写,表名、列名小写 每条命令最好用分号结尾 每条命令根据需要,可以进行缩进 或换行 注释 单行注释:#注释文字 单行注释:-- 注释文字 多行注释:/* 注释文字 */ SQL的语言分类 DQL(Data Query Language):数据查询语言

MySQL的四种事务隔离级别

不打扰是莪最后的温柔 提交于 2019-11-28 08:12:28
1.背景   事务在实际开发中必不可少.....直接进入正题 2.事务的4大特征   1、 原子性 (Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。   事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。    2、 一致性 (Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。    3、 隔离性 (Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。    4、 持久性 (Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。 3.事务的并发问题   1、 脏读 :事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据   2、 不可重复读 :事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。   3、 幻读 :系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级

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

蹲街弑〆低调 提交于 2019-11-28 08:07:00
一、视图 1.什么是视图 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来 它就变成了一个视图 2.为什么要用视图 当频繁需要用到多张表的连表结果,你就可以事先生成好视图 之后直接调用即可,避免了反复写连表操作的sql语句 3.如何使用视图 创建视图语句: create view teacher_course as select * from teacher INNER JOIN course on teacher.tid = course.teacher_id; 注意: 1.视图只有表结构,视图中的数据是来源于原来的表 2.不要改动视图表中的数据 3.一般情况下不会频繁的使用视图来写业务逻辑 二、触发器 1.什么是触发器 触发器是达到某个条件自动触发, 当对数据进行增、删、改的情况下会自动触发触发器的运行 2.为何要使用触发器 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行 就会触发触发器的执行,即自动运行另外一段sql代码 3.固定语法结构 create trigger 触发器的名字 after/before insert/update/delete on 表名 for each row begin sql语句 end 如下: t1为表名 触发器名:tri_befor_t1 在触发器之前或者之后进行插入或更改或删除t1

视图等

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

mysql数据库 day06

╄→гoц情女王★ 提交于 2019-11-28 07:59:59
1.视图 2.触发器 3.事务 4.存储过程 5.pymysql调用存储过程 6.函数(内置函数) 7.流程控制 一.视图 1.什么是视图   视图就是通过查询得到的一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要使用视图   当频繁需要用到多张表的连表的结果,你就可以事先生成好视图, 之后直接调用即可,这样避免了反复写连表操作的sql语句 3.如何使用   create view teacher_course as select * from teacher INNER JOIN course   on teacher.tid = course.teacher_id; 强调:   1.视图只有表结构,视图中的数据还是来源于原来的表   2.不要改动视图表中的数据   3.一般情况下不会频繁的使用视图来写业务逻辑 补充:那么在开发中会不会取使用视图 不会 不会!视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能 二.触发器 1.什么是触发器   在满足对某张表数据的增,删,改的情况下,自动触发的功能称之为触发器 2

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

一笑奈何 提交于 2019-11-28 07:59:10
视图 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来,它就变成了一个视图 当频繁需要用到多张表的连表结果,你就可以事先生成好视图,之后直接调用即可,避免了反复写连表操作的sql语句。 create view teacher_course as select * from teacher INNER JOIN course on teacher.tid = course.teacher_id;  1.视图只有表结构,视图中的数据还是来源于原来的表 2.不要改动视图表中的数据 3.一般情况下不会频繁的使用视图来写业务逻辑 触发器 到达某个条件自动触发, 当你在对数据进行增 删 改的情况下会自动触发触发器的运行 触发器分为六种情况 固定语法结构:     create trigger 触发器的名字 after/before insert /update/delete on 表名 for each row     begin       sqly语句     end     create trigger tri_brfore/after_insert /update/delete_t1 after/before insert/update/delete on t1 for each row     begin       sql语句     end 增前

MySQL之事务

浪尽此生 提交于 2019-11-28 07:52:41
MySQL的四种事务 一、事务的基本要素(ACID) 原子性(Atomicity) 要么都成功,要么都失败 实现机制是undo log 一致性(Consistency) 操作前后,系统稳定,数据一致 隔离性(Isolation) 每个事务都是独立的,相互不会影响 实现机制,多版本并发控制(MVCC)+锁 持久性(Durability) 保证事务的执行结果一定能在数据库中同步完成,无论数据库所在硬件是否瘫痪 实现机制redo log 小结:原子性 持久性 隔离性 实现了一致性 二、事务的并发问题 更新丢失:a事务中更新一条记录,却被b事务的更新操作给覆盖了。也就是说,a事务的操作没有生效 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 不可重复读:事务A多次读取统一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致 幻读:系统管理员A将数据库中的所有学生成绩从具体改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。 小结:不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需要锁住满足条件的行,解决幻读需要锁表 三、事务的四个隔离级别 Read_Uncommited 读未提交

【MySQL】存储引擎

徘徊边缘 提交于 2019-11-28 07:47:22
原文: http://blog.gqylpy.com/gqy/245 目录 #. MySQL支持的存储引擎 1. InnoDB 2. MyISAM 3. NDB 4. Memory 5. Infobright 6. NTSE 7. BLACKHOLE MySQL中的库即文件夹,表即文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制.(如:处理文本用txt类型,处理表格用excel, 处理图片 用png等) 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. PS:存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库 中数据 的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据库存储管理机制都是一样的,而MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 ![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/f065e887-be54-4608-a236-c400c1478427.png) SQL解释器

视图,触发器,事物...

半腔热情 提交于 2019-11-28 07:46:57
3 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1、什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2、为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3、如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id;    思考:开发过程中会不会去使用视图? 不会!视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能 触发器 在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器 为何要用触发器 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行 ​ 就会触发触发器的执行,即自动运行另外一段sql代码 创建触发器语法 # 针对插入 create trigger tri_after_insert_t1 after insert on 表名 for each