MySQL安全管理预处理
1、什么是预处理
预处理:prepare statement,一种预先编译SQL指令的方式,预处理不同于直接处理,要将要执行的SQL指令先发送给服务器编译,然后通过指令执行 预处理:prepare statement,一种预先编译SQL指令的方式,预处理不同于直接处理,要将要执行的SQL指令先发送给服务器编译,然后通过指令执行
预处理的基本语法
发送预处理:prepare 预处理名字 from '要执行的SQL指令'
执行预处理:execute 预处理名字
2、什么是预处理管理
预处理属于会话级别:即当前用户单次连接(断开会被服务器清理掉)
删除预处理:deallocate | drop prepare 预处理名字
3、预处理的作用
性能优化
效率优化:同样的SQL不用每次都进行编译
普通处理:每次都要编译
预处理:编译一次
网络传输优化:复杂的SQL指令只需要传输一次
普通处理:每次都需要网络传输SQL指令
预处理:发送的是结构,数据是后期执行传入(传入协议不一样,数据安全性高)
安全:有效防止SQL注入(外部通过数据的特殊使用使得SQL的执行方式改变)
普通处理:直接发送给服务器执行(容易出现SQL注入)
预处理:发送的是结构,数据是后期执行传入(传入协议不一样,数据安全性高)
4、预处理参数
预处理参数:在执行预处理的时候传入预处理需要的可变数据,一般预处理都不会是固定死的SQL指令,而是具有一些数据可变的执行(条件),可变数据的位置使用占用符?占位
基本语法:prepare 预处理名字 from '预处理指令,变化部分使用?代替'
在执行预处理的时候将实际数据传进去代替占位符号执行SQL在执行预处理的时候将实际数据传进去代替占位符号执行SQL
数据存储到变量(预处理传入的值必须是变量保存的)
set @变量名=值
使用using关键字传参
execute预处理名字 using @变量名
数据传入的顺序与预处理中占位符的顺序一致