MySQL的预编译入门

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的预编译入门相关的知识,希望对你有一定的参考价值。

文章目录

mysql的预编译

MySQL的预编译概念

通常我们发送一条SQL语句给MySQL服务器时,MySQL服务器每次都需要对这条SQL语句进行校验、解析等操作。

但是有很多情况下,我们的一条SQL语句可能需要反复的执行,而SQL语句也只可能传递的参数不一样,类似于这样的SQL语句如果每次都需要进行校验、解析等操作,未免太过于浪费性能了,因此我们提出了SQL语句的预编译。

所谓预编译就是将一些灵活的参数值以占位符?的形式给代替掉,我们把参数值给抽取出来,把SQL语句进行模板化。让MySQL服务器执行相同的SQL语句时,不需要在校验、解析SQL语句上面花费重复的时间。

MySQL预编译的语法

准备数据:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称',
  `birthday` datetime(0) NULL DEFAULT NULL COMMENT '生日',
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
  `address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '小龙', '2019-02-27 17:47:08', '男', '南昌市西湖区');
INSERT INTO `user` VALUES (2, '小刚', '2019-03-02 15:09:37', '男', '南昌市东湖区');
INSERT INTO `user` VALUES (3, '小兰', '2019-03-04 11:34:34', '女', '南昌市青山湖区');
INSERT INTO `user` VALUES (4, '小红', '2019-03-04 12:04:06', '女', '南昌市青云谱区');
INSERT INTO `user` VALUES (5, '小丽', '2019-03-07 17:37:26', '女', '南昌市红谷滩区');
INSERT INTO `user` VALUES (6, '小明', '2019-03-08 11:44:00', '男', '南昌市新建区');
INSERT INTO `user` VALUES (7, '龙龙', '2019-04-08 11:44:00', '男', '南昌市西湖区');

数据如下所示:

预编译语句编写

  • 定义预编译SQL语句:

语法如下:

-- 定义一个预编译语句
prepare name from statement; 

# name 你的预编译语句名
# statement 你的预编译语句

例如下面预编译代码

prepare statement_user from 'select * from user where id=?';
  • 设置参数值:
set @id=1;
  • 执行预编译SQL语句:
execute statement_user using @id;

完整代码:

-- 定义一个预编译语句
prepare statement_user from 'select * from user where id=?';
-- 设置参数值
set @id=1;
-- 执行预编译语句
execute statement_user using @id;

运行结果如下所示:

  • 释放预编译SQL语句:
deallocate prepare statement_user;

以上是关于MySQL的预编译入门的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础入门学习13存储过程

MySQL的预编译功能

Mysql的预编译和批处理

MySQL的预编译功能

PHP-Mysqli扩展库的预编译

JavaScript的预编译过程