TIDB 预处理语句

1.TIDB 预处理语句

预处理语句是一种将多个仅有参数不同的 SQL 语句进行模板化的语句,它让 SQL 语句与参数进行了分离。可以用它提升 SQL 语句的:

安全性:因为参数和语句已经分离,所以避免了 SQL 注入攻击的风险。
性能:因为语句在 TiDB 端被预先解析,后续执行只需要传递参数,节省了完整 SQL 解析、拼接 SQL 语句字符串以及网络传输的代价。
在大部分的应用程序中,SQL 语句是可以被枚举的,可以使用有限个 SQL 语句来完成整个应用程序的数据查询,所以使用预处理语句是最佳实践之一。

#创建预处理语句
PREPARE {prepared_statement_name} FROM '{prepared_statement_sql}';
{prepared_statement_name}	预处理语句名称
{prepared_statement_sql}	预处理语句 SQL,以英文半角问号做占位符
#使用预处理语句
预处理语句仅可使用用户变量作为参数,因此,需先使用 SET 语句 设置变量后,供 EXECUTE 语句 调用预处理语句。

SET @{parameter_name} = {parameter_value};
EXECUTE {prepared_statement_name} USING @{parameter_name};
#删除预处理语句
DEALLOCATE PREPARE {prepared_statement_name};

#SELECT 例子:
PREPARE `books_query` FROM 'SELECT * FROM `books` WHERE `id` = ?';
SET @id = 1;
EXECUTE `books_query` USING @id;

#运行结果为:

+---------+---------------------------------+--------+---------------------+-------+--------+
| id      | title                           | type   | published_at        | stock | price  |
+---------+---------------------------------+--------+---------------------+-------+--------+
| 1       | The Adventures of Pierce Wehner | Comics | 1904-06-06 20:46:25 |   586 | 411.66 |
+---------+---------------------------------+--------+---------------------+-------+--------+
1 row in set (0.05 sec)

#INSERT 示例
PREPARE `books_insert` FROM 'INSERT INTO `books` (`title`, `type`, `stock`, `price`, `published_at`) VALUES (?, ?, ?, ?, ?);';
SET @title = 'TiDB Developer Guide';
SET @type = 'Science & Technology';
SET @stock = 100;
SET @price = 0.0;
SET @published_at = NOW();
EXECUTE `books_insert` USING @title, @type, @stock, @price, @published_at;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值