前言

做CTF题的时候遇到的所以参考资料学习一波。。。。

MySQL的SQL预处理(Prepared)

一、SQL 语句的执行处理

1、即时 SQL

一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下:

1. 词法和语义解析;

2. 优化 SQL 语句,制定执行计划;

3. 执行并返回结果;

如上,一条 SQL 直接是走流程处理,一次编译,单次运行,此类普通语句被称作 Immediate Statements (即时 SQL)。

2、预处理 SQL

但是,绝大多数情况下,某需求某一条 SQL 语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如 select 的 where 子句值不同,update 的 set 子句值不同,insert 的 values 值不同)。如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显不行了。

所谓预编译语句就是将此类 SQL 语句中的值用占位符替代,可以视为将 SQL 语句模板化或者说参数化,一般称这类语句叫Prepared Statements。

预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止 SQL 注入。

二、Prepared SQL Statement Syntax

MySQL 官方将 prepare、execute、deallocate 统称为 PREPARE STATEMENT。翻译也就习惯的称其为预处理语句。

MySQL 预处理语句的支持版本较早,所以我们目前普遍使用的 MySQL 版本都是支持这一语法的。

预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。

绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。

预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

PREPARE:准备一条SQL语句,并分配给这条SQL语句一个名字供之后调用EXECUTE:执行命令DEALLOCATE PREPARE:释放命令

1.简单使用

PREPARE xiaohua FROM 'SELECT ?+?';SET @a=1,@b=10;EXECUTE xiaohua USING @a,@b;DEALLOCATE PREPARE xiaohua;

执行结果 :

参考学习

deallocate mysql_Mysql预处理语句prepare、execute、deallocate相关推荐

  1. deallocate mysql_MySQL 预处理语句prepare、execute、deallocate的使用

    语法 PREPARE stmt_name FROM preparable_stmt EXECUTE stmt_name [USING @var_name [, @var_name] ...] - {D ...

  2. from用法 prepare_MySQL 预处理语句prepare、execute、deallocate的使用

    所以对于中文乱码,需要去check的地方有如下3个:1.mysql窗口的字符编码(xshell连接的远程工具的字符集设置): 2.数据库的字符编码(show variables like '%char ...

  3. deallocate mysql_MySQL中预处理语句prepare、execute与deallocate的使用教程

    前言 MySQL官方将prepare.execute.deallocate统称为PREPARE STATEMENT,我习惯称其为[预处理语句],其用法十分简单,下面话不多说,来一起看看详细的介绍吧. ...

  4. MySQL 预处理语句prepare、execute、deallocate的使用,执行动态sql

    MySQL官方将prepare.execute.deallocate统称为PREPARE STATEMENT. 我习惯称其为[预处理语句]. 其用法十分简单, PREPARE stmt_name FR ...

  5. deallocate mysql_mysql fetch into?len函数?deallocate是什么意思

    你是否正在寻找关于deallocate的内容?让我把最吸引人的东西奉献给你: deallocate 英 ['diːləkeɪt] 美 ['diːləkeɪt] v.重新分配:去分配:解除分配 deal ...

  6. mysql deallocate,MySQL中prepare与execute以及deallocate预处理语句的使用教程

    这篇文章主要介绍了MySQL中预处理语句prepare.execute与deallocate的使用教程,需要的朋友可以参考下 MySQL官方将prepare.execute.deallocate统称为 ...

  7. php mysql 占位符_PDO中预处理语句占位符的使用

    摘要:占位符在php程序中有着非常重要的作用,对数据安全也有着非常重要的意义,通过占位符我们可以有效验证传入参数的有效性,从而防止恶意的SQL注入攻击. 使用PDO时不使用预处理语句占位符也可以防止S ...

  8. 理解Mysql prepare预处理语句

    1.Prepare 介绍 Prepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用 prepared statements 获得很多好处,无论是性能问题还是 ...

  9. mysql 1117_1117Mysql prepare预处理语句

    转自http://www.jb51.net/article/81378.htm 综述:一般用来拼凑SQL然后执行 MySQL 5.1对服务器一方的预制语句提供支持.如果您使用合适的客户端编程界面,则这 ...

最新文章

  1. Pivotal发布Spring Cloud Data Flow 1.5版本
  2. linux java程序启动脚本
  3. java自定义线程_Java自定义线程池详解
  4. OPencv像素操作
  5. 1438.最小公倍数
  6. 楼房顶顶面起渣是何原因?怎么修补?
  7. PHP面试常考内容之面向对象(2)
  8. 金士顿U盘不断自动连接断开解决方法
  9. 如何定义用户模型(persona)
  10. input隐藏边框和选中样式
  11. 王欣的哲学逻辑与产品猜想
  12. 为什么没有人投资 Livid 的 V2EX.com ?
  13. linux 性能分析工具——perf
  14. Ubuntu 16.04 桌面字体太小让它大大大
  15. python七段数码管绘制实验报告_python实现七段数码管和倒计时效果
  16. 计算机技术在扬声器单元应用,晶莹剔透的水晶魅力-细赏Waterfall玻璃扬声器的独特设计...
  17. 鸿蒙harmonyOS 方舟框架ARK使用ets的页面间转场动画的使用
  18. fla文件中切记不能使用TLF文本
  19. 51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序
  20. 01-【浏览器】chrome浏览器收藏夹(书签)的导出与导入

热门文章

  1. 数据库基础学习笔记——数据库分类
  2. AXI协议(3):AXI架构的握手机制和实现细节
  3. OAuth2授权客户端访问资源服务
  4. 解密:A股日内“T+0”赚钱的策略
  5. 【NLP基础】英文关键词抽取RAKE算法
  6. unity获取设备经纬度(unity使用GPS)详解
  7. 本宝宝blog的背景图片。。
  8. CVPR2023 目标检测论文合集
  9. 分时线的9代表什么_一位65岁长沙股神告诉你:为什么要打板?写给那些一年想几十倍的人!...
  10. CF721C Journey 题解