一、存储过程

  1.简介

  原始的SQL执行的流程:

  

  通过存储过程,便可以简化以上流程,那么存储过程是什么,如何进行性能提高呢?

  是什么?

  

     存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

   性能提高原理:

    只在第一次的时候编译分析,以后客户端调用只需要调用编译后的结果

  优点:

  

  2.语法分析

  存储过程语法分析:

  

  参数分析:

  

  过程体分析:

  

  注意点:

     和函数一样,需要使用 DELIMITER更改 分隔符

    若过程有多个SQL组成,需要用 BEGIN ... END(类似于Java中if后的{},单独一句时可以省略,但建议不要省略

    每次定义完存储过程,请更改回分隔符

  3.存储过程调用与删除

  

  

  4.创建无参存储过程

    

  5.创建有参存储过程

    一般而言都不会有过于简单的存储过程与函数在实际中,所以创建时请指定DELIMITER并使用BEGIN ...END(即使它只有一条SQL)

    带有IN类型参数

    要操作的数据表:

    

    创建存储过程:

    

    调用存储过程:

    

    神奇的发现居然传了一个 1 ,把所有id都删除掉了,原因是MySQL认为两个id是指 id = id,本身 = 本身的条件,而无法区分哪个是入参

    所以,定义入参时,请考虑这样的冲突问题:

    但是存储过程和函数类似,无法实时编辑修改,想要修改,只能删除,重建

    

    重建存储过程:(请先使用DELIMITER)

    

    带有IN和OUT类型参数

    请注意初始创建时修改分隔符,创建完成需要修改回

    

    这里出现了一点新面孔,我们来简单介绍一下MySQL中的变量:

    通过变量来实现Mysql增加行号:https://blog.csdn.net/gao763024185/article/details/79638052

    

mysql变量的术语分类:

1.用户变量:以"@"开始,形式为"@变量名"
用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名  或者  set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
3.会话变量:只对连接的客户端有效。
4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量

   如何设值用户变量(只对当前用户客户端有效):——一般而言,用户变量以@开头

  语法:SET 变量名 = 变量值 [,变量名= 变量值 ...]

    实例:(所以上文的INTO也可以改用用户变量进行存储管理)

  

    带有多个OUT类型参数

  给出需求:

    根据用户名删除用户,返回被删除的用户和剩余的用户

  操作的表如下:

  

    操作之前介绍一个先导知识:ROW_COUNT()函数,表示的是被影响的行(增删改的行)

  实例:

  

    创建存储过程:再次提醒,若创建错误存储过程,请删除后翻阅命令重新创建

  

    调用前信息:

  

    调用结果:

  

  6.存储过程的注释

     1.使用 --,如--判断是否签约

    2.C注释风格

  一般而言,存储过程可以单独使用,而函数针对性较强,多用在SQL语句中作为组成部分

  更多详细存储过程介绍(如流程控制等),参见:http://www.cnblogs.com/mark-chan/p/5384139.html

二、存储引擎

  1.简介

    我们可以通过之前接触过的命令:SHOW CREATE TABLE tb_name来查看数据库创建语句,从而得知存储引擎:

  

  概述:(也可以称之为表类型)

  

  MySQL支持的引擎:(前两种见的比较多)

    

  2.各种存储引擎

    先导知识:

  

    并发控制,就可以理解为我们常见的锁

    锁的分类:

  

    锁的颗粒:

  

  为什么说表锁开销最小呢?

    因为表锁只需要一把锁,而行锁需要每条记录加锁,所以说开销大。

    事务处理:更多的事务介绍不在此处展开

  

    外键和索引:也暂不在这里展开

  

  

    各大引擎都是基于上述的不同方式:

  

  常见引擎选择:(当然,引擎是可以扩展的,像阿里的数据库也叫MySQL,但除了名字都叫MySQL外,内在是天壤之别)

  

  3.设值存储引擎

    修改配置文件:

  当前使用的MySQL5.5中找到安装目录下的配置文件:my.ini:

  

    建表时手动指定:

  

    实例:

  

    建表后修改表引擎

  

    实例:

  

转载于:https://www.cnblogs.com/jiangbei/p/7398853.html

MySQL入门第三天(下)——存储过程与存储引擎相关推荐

  1. MySQL入门第三天——数据表的约束

    数据表的约束简介 为防止错误的数据被插入到数据表,MySQL中定义了一些维护数据库完整性的规则:这些规则常称为表的约束.常见约束如下: 约束条件 说明 PRIMARY KEY 主键约束用于唯一标识对应 ...

  2. R语言入门第三集 实验二:基本数据处理

    R语言入门第三集 实验二:基本数据处理 一.资源 [R语言]R语言数据处理--东北大学大数据班R实训第二次作业 二.答案更新纠正 2.11.从df中选取date . item_id . cate_id ...

  3. LaTeX入门第三集!LaTeX的几个应用!

    LaTeX入门第三集!LaTeX的几个应用! 一.制作PPT Ctex+Texstudio beamer 制作slide(ppt)安装 二.画图 一般人们并不直接使用PGF底层命令,而是通过它前端Ti ...

  4. Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程!

    Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程! 提取码均为0916 jdk-8u301-linux-x ...

  5. python编程入门第3版pdf-Python编程入门第三版

    Python编程入门第三版PDF下载.Python编程入门第三版PDF是一款为Python编程人员制作的一款专业的Python编程从业基础教程,大量的实战例子让你轻松驾驭各种场景! Python编程入 ...

  6. LabVIEW入门第三天(软件及驱动包下载)

    LabVIEW入门第三天 欢迎大家阅读本篇文章,今天我给大家介绍LabVIEW的相关版本和驱动,欢迎有兴趣的一起学习探讨. 一,LabVIEW软件及驱动包下载 前面讲过LabVIEW是美国国家仪器(N ...

  7. jQuery入门 jQuery入门第三天

    jQuery入门 jQuery入门第三天 老师:黑马程序员 文章目录 jQuery入门 jQuery入门第三天 老师:黑马程序员 3. jQuery事件 3.1 jQuery事件注册 3.1.1 单个 ...

  8. C# 编程入门第三课 类型转换,++,关系运算符,bool类型(布尔类型),逻辑运算符,判断闰年,结构

    C# 编程入门第三课 文章目录 C# 编程入门第三课 1. 类型转换 2. ++,-- 3. 关系运算符 4. bool 类型(布尔类型) 5. 逻辑运算符 6.判断闰年 7. 结构 1. 类型转换 ...

  9. 介绍一下mysql的存储过程和搜索引擎_MySQL基础(四)—存储过程和存储引擎

    上一篇 MySQL基础(三)-函数.自定义函数 这一篇是对存储过程和存储引擎的笔记,其中操作的数据库在上一篇文章中有代码,可以去看一下. 1.存储过程 存储过程是SQL语句和控制语句的预编译集合,以一 ...

最新文章

  1. java中的实例初始化
  2. tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
  3. java for循环_愉快地学Java语言:第五章 循环
  4. mysql 设置某个字段等于某个字段_学习记录-第十八天(李玉婷MySQL基础 第12天)...
  5. 漫画TCP——一个悲伤的故事
  6. [iOS]Unable to run app in Simulator
  7. 某一年某一年_过去一年里有关开放式组织的5个最受欢迎的故事
  8. 南京航空航天大学计算机网课,南京航空航天大学课程教学大纲-南京航空航天大学计算机科学与技术(9页)-原创力文档...
  9. Hi3519V101开发环境搭建(二)
  10. 一个软件测试员的工作与学习(二)
  11. C语言 输出100以内的质数
  12. 计算机专业英语复习第一天
  13. Oracle11g RAC集群重启操作
  14. 这个案例你可以直接拿去用。
  15. A component required a bean of type ‘com.yida.data.religion.common.dao.AddressInfoMapper‘ that could
  16. ch.ethz.ganymed包ganymed-ssh2的使用
  17. Android Studio 笔记3.3 相对布局
  18. css textarea行数_超级简单:在一个TextArea中如何限制行数和字符数-阿里云开发者社区...
  19. 08-认识margin
  20. 真•业界第一个性能统计分析框架 -- Hiper

热门文章

  1. 什么是pdi检测_为什么国人买车钟爱白色?这几点购车陷阱不要踩
  2. mysql在windows启动_MySQL笔记:mySQL在windows环境启动
  3. vb.net word 自定义工具栏_Word|用这20个技巧办公从此告别龟速工作
  4. 如何用微观数据分析玩家流失
  5. 无法将W ndOWs配置为在,配置Wndows2000中的磁盘配额.doc
  6. jmeter校验结果_JMeter(1)--请求内容验证
  7. 左右边界二分查找小总结
  8. 运动目标跟踪(九)--Struck跟踪原理
  9. Git教程_2 所有操作讲解
  10. C语言:采用交互式方式打开指定的文件,若文件打开成功,则显示该文件的大小,并显示文件内容,若文件打开失败,则提示出错信息