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

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

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

前言

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

示例代碼

PREPARE stmt_name FROM preparable_stmt

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

{DEALLOCATE | DROP} PREPARE stmt_name

舉個(gè)栗子:

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的語(yǔ)法分析,比如用于執(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時(shí),養(yǎng)成好習(xí)慣,須執(zhí)行DEALLOCATE PREPARE … 語(yǔ)句,這樣可以釋放執(zhí)行中使用的所有數(shù)據(jù)庫(kù)資源(如游標(biāo))。

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

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

而且在任意方式(正常或非正常)退出會(huì)話時(shí),之前定義好的預(yù)處理語(yǔ)句將不復(fù)存在。

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    解決mysql8.0.19 winx64版本的安裝問(wèn)題

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

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

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

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

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

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

    MySQL 是一種關(guān)系型數(shù)據(jù)庫(kù),在Java企業(yè)級(jí)開發(fā)中非常常用,因?yàn)?MySQL 是開源免費(fèi)的,并且方便擴(kuò)展MySQL是開放源代碼的,因此任何人都可以在 GPL的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(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安裝、配置完整過(guò)程記下來(lái),或許對(duì)新手來(lái)說(shuō)有用。希望大家能夠喜歡
    2018-01-01
  • MySQL 8.2 Command Line Client打開時(shí)一閃而過(guò)閃退問(wèn)題的解決

    MySQL 8.2 Command Line Client打開時(shí)一閃而過(guò)閃退問(wèn)題

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

    解決Can''t locate ExtUtils/MakeMaker.pm in @INC報(bào)錯(cuò)

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

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

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

最新評(píng)論

仲巴县| 安远县| 深水埗区| 海林市| 江城| 子长县| 宜宾市| 安图县| 马龙县| 阿克苏市| 青州市| 定安县| 新宾| 晴隆县| 兴仁县| 景洪市| 卢氏县| 绍兴县| 双鸭山市| 寿阳县| 榆林市| 嘉禾县| 上虞市| 离岛区| 潮安县| 元江| 鹿邑县| 乌鲁木齐县| 林甸县| 阳朔县| 龙游县| 高陵县| 随州市| 丹棱县| 柳江县| 交城县| 沁水县| 凌源市| 芜湖市| 浦北县| 靖边县|