03_MySQL高级

1.存储过程和函数

1.1.介绍

image.png
image.png

1.2.创建和调用

image.png

注意:为什么要修改结束分隔符,因为在控制台操作数据库,写完一个sql语句加上;按回车默认就执行了,所以要重新更换分隔符
image.png
image.png
image.png

1.3.查看和删除

image.png
image.png
image.png

1.4.存储过程语法-变量

image.png
image.png
image.png

1.5.存储过程语法-if语句

image.png
image.png
image.png

1.6.存储过程语法-参数传递

image.png
image.png
image.png
image.png
  • SET @name = '张三'
  • SELECT @name
    image.png

    输出参数用一个用户变量去接收,调用完存储过程之后,查询这个用户变量得到输出值。

1.7.存储过程语法-case结构

image.png
image.png

1.8.存储过程语法-while循环

image.png
image.png
image.png

1.10.存储过程语法-repeat循环

image.png
image.png

1.11.存储过程语法-loop循环

image.png
image.png

1.12.存储过程语法-游标

image.png
image.png
image.png
图片.png

fetch几次就打印几次结果,注意结果是分开展示的,如果fetch次数大于表记录就会报错

1.13.存储过程语法-循环获取游标

图片.png
图片.png

1.14.存储函数

图片.png
image.png
image.png
image.png

2.触发器

2.1.使用场景

账户表每一次有数据的变动,账户日志表通过触发器生成一条日志记录
image.png

2.2.概述

image.png
image.png

2.3.触发器的操作

image.png
image.png
image.png

2.3.1.insert型触发器

image.png
image.png

2.3.2.update型触发器

image.png
image.png

2.3.3.delete型触发器

image.png
image.png

2.3.4.触发器的操作

image.png

3.事务

3.1.事务介绍

image.png

异常情况
image.png
image.png

3.2.事务的基本操作

image.png
image.png
image.png

先执行开启事务语句,然后一并执行转账的语句(可以包含错误语句),查看结果,此时的结果是一个临时结果(断开连接之后再重新连,结果没有保存),根据结果选择执行提交事务语句或者执行回滚事务语句,从而把结果持久化

3.3.事务的提交方式

image.png
image.png

修改事务提交方式为0手动提交,执行更新语句,若没有提交,断开连接,再重新连,数据没有更改。每次重新连接,事务提交方式都会被置为自动提交

3.4.事务的四大特征(ACID)

image.png

一致性:转账前总和是2000,转账后总和还是2000

3.5.事务的隔离级别

image.png
image.png
image.png
  • 脏读的问题演示和解决
    image.png

    问题:窗口一设置隔离级别读未提交,窗口一窗口二分别开启事务,窗口一执行转账语句,窗口一窗口二分别查询表,看到数据变化,窗口二就是脏读,窗口二读到了窗口一未提交事务的数据(张三给李四转账,张三执行语句,说钱转过去了,李四看到变化,李四写了欠条,张三执行回滚,李四账户不会有变化,还有一个欠条)解决:设置隔离级别为读已提交,窗口一窗口二分别开启事务,窗口一执行转账语句,窗口一窗口二分别查询表,窗口一有变化,窗口二没有变化,窗口一提交,窗口二看到变化

  • 不可重复读的问题演示和解决:窗口一设置隔离级别读已提交,窗口一窗口二分别开启事务,窗口一执行转账语句,窗口一窗口二分别查询表,窗口一数据变化,窗口二数据没变,窗口一提交,窗口二看到数据变化.窗口二是不可重复读,两次查询结果不一致(多次查询数据不一致,老板上午让小王查营业额100万,下午开会,老板自己查营业额80万)
    image.png

    解决:设置可重复读,窗口一窗口二分别开启事务,窗口一执行转账语句,窗口一窗口二分别查询表,窗口一数据变化,窗口二数据没变,窗口一提交,窗口二数据还是没变,窗口二提交事务,看到变化。(老板上午让小王查营业额,小王说财务还在统计,等统计结束再查询)

  • 幻读现象:当前隔离级别是可重复读,窗口一窗口二分别开启事务,窗口一插入一条,查询发现有3条,窗口二查询发现只有2条,要插入一条,卡死,窗口一提交事务,窗口二报错,窗口二查询还是两条数据,但是提交就报错,窗口二提交事务,查询发现三条
    image.png

    解决:设置串行化,窗口一窗口二分别开启事务,窗口一插入一条,查询发现有3条,窗口二查询,卡死,窗口一事务不提交,窗口二不能操作,相当于锁表,窗口一事务提交,窗口二就能查出结果。

  • 隔离级别小结
    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容