最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中預(yù)處理語句prepare、execute與deallocate的使用教程

 更新時間:2017年08月22日 08:30:43   作者:神諭丶  
這篇文章主要介紹了MySQL中預(yù)處理語句prepare、execute與deallocate的使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。

前言

MySQL官方將prepare、execute、deallocate統(tǒng)稱為PREPARE STATEMENT,我習(xí)慣稱其為【預(yù)處理語句】,其用法十分簡單,下面話不多說,來一起看看詳細(xì)的介紹吧。

示例代碼

PREPARE stmt_name FROM preparable_stmt

EXECUTE stmt_name
 [USING @var_name [, @var_name] ...] -

{DEALLOCATE | DROP} PREPARE stmt_name

舉個栗子:

mysql> PREPARE pr1 FROM 'SELECT ?+?';
Query OK, 0 rows affected (0.01 sec)
Statement prepared

mysql> SET @a=1, @b=10 ;
Query OK, 0 rows affected (0.00 sec)

mysql> EXECUTE pr1 USING @a, @b;
+------+
| ?+? |
+------+
| 11 |
+------+
1 row in set (0.00 sec)

mysql> EXECUTE pr1 USING 1, 2; -- 只能使用用戶變量傳遞。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the 
right syntax to use near '1, 2' at line 1

mysql> DEALLOCATE PREPARE pr1;
Query OK, 0 rows affected (0.00 sec)

使用PAREPARE STATEMENT可以減少每次執(zhí)行SQL的語法分析,比如用于執(zhí)行帶有WHERE條件的SELECT和DELETE,或者UPDATE,或者INSERT,只需要每次修改變量值即可。

同樣可以防止SQL注入,參數(shù)值可以包含轉(zhuǎn)義符和定界符。

適用在應(yīng)用程序中,或者SQL腳本中均可。

更多用法:

同樣PREPARE ... FROM可以直接接用戶變量:

mysql> CREATE TABLE a (a int);
Query OK, 0 rows affected (0.26 sec)

mysql> INSERT INTO a SELECT 1;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> INSERT INTO a SELECT 2;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> INSERT INTO a SELECT 3;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> SET @select_test = CONCAT('SELECT * FROM ', @table_name);
Query OK, 0 rows affected (0.00 sec)

mysql> SET @table_name = 'a';
Query OK, 0 rows affected (0.00 sec)

mysql> PREPARE pr2 FROM @select_test;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> EXECUTE pr2 ;
+------+
| a |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)

mysql> DROP PREPARE pr2; -- 此處DROP可以替代DEALLOCATE
Query OK, 0 rows affected (0.00 sec)

每一次執(zhí)行完EXECUTE時,養(yǎng)成好習(xí)慣,須執(zhí)行DEALLOCATE PREPARE … 語句,這樣可以釋放執(zhí)行中使用的所有數(shù)據(jù)庫資源(如游標(biāo))。

不僅如此,如果一個session的預(yù)處理語句過多,可能會達(dá)到max_prepared_stmt_count的上限值。

預(yù)處理語句只能在創(chuàng)建者的會話中可以使用,其他會話是無法使用的。

而且在任意方式(正?;蚍钦#┩顺鰰挄r,之前定義好的預(yù)處理語句將不復(fù)存在。

如果在存儲過程中使用,如果不在過程中DEALLOCATE掉,在存儲過程結(jié)束之后,該預(yù)處理語句仍然會有效。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MySql數(shù)據(jù)庫單表查詢與多表連接查詢效率對比

    MySql數(shù)據(jù)庫單表查詢與多表連接查詢效率對比

    在遇到數(shù)據(jù)之間的聯(lián)系很復(fù)雜,建表就很糾結(jié),到底該怎么去處理這些復(fù)雜的數(shù)據(jù)呢,是單表查詢,然后在業(yè)務(wù)層去處理數(shù)據(jù)間的關(guān)系,還是直接通過多表連接查詢來處理數(shù)據(jù)關(guān)系呢
    2021-09-09
  • MySQL數(shù)據(jù)庫索引的最左匹配原則

    MySQL數(shù)據(jù)庫索引的最左匹配原則

    sql查詢用到索引的條件是必須要遵守最左前綴原則,本文就詳細(xì)的介紹了MySQL數(shù)據(jù)庫索引的最左匹配原則,感興趣的可以了解一下
    2021-11-11
  • 解決mysql8.0.19  winx64版本的安裝問題

    解決mysql8.0.19 winx64版本的安裝問題

    這篇文章主要介紹了mysql8.0.19 數(shù)據(jù)庫 winx64版本的安裝問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • MySQL針對Discuz論壇程序的基本優(yōu)化教程

    MySQL針對Discuz論壇程序的基本優(yōu)化教程

    這篇文章主要介紹了MySQL針對Discuz論壇程序的基本優(yōu)化教程,包括在緩存和索引等方面的優(yōu)化方法,需要的朋友可以參考下
    2015-11-11
  • MySQL表不存在Table doesn't exist錯誤的常見原因及解決方案

    MySQL表不存在Table doesn't exist錯誤的常見原因及解決方案

    在MySQL數(shù)據(jù)庫操作中,Table doesn't exis是一個常見的錯誤,通常發(fā)生在嘗試訪問不存在的表時,這個錯誤可能由多種原因引起,本文將系統(tǒng)性總結(jié)Table doesn't exist錯誤的常見原因及解決方案,并提供豐富的代碼和表格示例分析,需要的朋友可以參考下
    2025-06-06
  • 新手入門Mysql--sql執(zhí)行過程

    新手入門Mysql--sql執(zhí)行過程

    MySQL 是一種關(guān)系型數(shù)據(jù)庫,在Java企業(yè)級開發(fā)中非常常用,因?yàn)?MySQL 是開源免費(fèi)的,并且方便擴(kuò)展MySQL是開放源代碼的,因此任何人都可以在 GPL的許可下下載并根據(jù)個性化的需要對其進(jìn)行修改
    2021-06-06
  • CentOS 7下安裝與配置MySQL 5.7

    CentOS 7下安裝與配置MySQL 5.7

    Mysql5.7和之前版本的MySQL有一些不同,現(xiàn)把CentOS 7下MySQL 5.7安裝、配置完整過程記下來,或許對新手來說有用。希望大家能夠喜歡
    2018-01-01
  • MySQL 8.2 Command Line Client打開時一閃而過閃退問題的解決

    MySQL 8.2 Command Line Client打開時一閃而過閃退問題

    MySQL8.2安裝成功后,發(fā)現(xiàn)打開MySQL 8.0 Command Line Client時出現(xiàn)一閃而過,打不開的情況,所以下面這篇文章主要給大家介紹了關(guān)于MySQL 8.2 Command Line Client打開時一閃而過閃退問題的解決,需要的朋友可以參考下
    2024-01-01
  • 解決Can''t locate ExtUtils/MakeMaker.pm in @INC報錯

    解決Can''t locate ExtUtils/MakeMaker.pm in @INC報錯

    今天小編就為大家分享一篇關(guān)于解決Can't locate ExtUtils/MakeMaker.pm in @INC報錯,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 小型Drupal數(shù)據(jù)庫備份以及大型站點(diǎn)MySQL備份策略分享

    小型Drupal數(shù)據(jù)庫備份以及大型站點(diǎn)MySQL備份策略分享

    為了防止web服務(wù)器出現(xiàn)故障而引起的數(shù)據(jù)丟失,數(shù)據(jù)庫備份顯得非常重要,以免出現(xiàn)重大損失。本文分析研究一下小型的Drupal站的備份策略以及大型站點(diǎn)的mysql備份策略
    2014-11-11

最新評論

平顺县| 定边县| 英超| 龙泉市| 佛山市| 泸水县| 周至县| 中江县| 翁牛特旗| 济宁市| 依安县| 会泽县| 嘉善县| 新疆| 宜川县| 威远县| 五台县| 东明县| 山阳县| 张家口市| 彭阳县| 阳泉市| 义乌市| 民县| 昭觉县| 西安市| 密云县| 乌兰浩特市| 楚雄市| 万山特区| 娱乐| 丰宁| 盖州市| 静安区| 莲花县| 永城市| 马关县| 仁化县| 上杭县| 全南县| 英超|