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

MySQL Prepared語句的具體使用

 更新時間:2024年09月03日 09:44:27   作者:V1ncent Chen  
本文主要介紹了MySQL Prepared語句的具體使用,可以利用prepared語句來避免重復(fù)解析SQL的開銷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在數(shù)據(jù)庫應(yīng)用中,很多SQL語句都會重復(fù)執(zhí)行很多次,每次執(zhí)行可能只是where條件中的變量值不同,但MySQL依然會解析SQL語法并生成執(zhí)行計劃。對于這類情況,可以利用prepared語句來避免重復(fù)解析SQL的開銷。

一、prepared語句優(yōu)點(diǎn)

prepared語句通過準(zhǔn)備一個SQL執(zhí)行對象,然后通過execute語句來重復(fù)進(jìn)行執(zhí)行,在每次執(zhí)行的過程中提供變量的實(shí)際值。相比于重復(fù)執(zhí)行SQL語句,prepared statement具有如下優(yōu)勢:

  • 在execute語句重復(fù)執(zhí)行的過程中,每次只有傳入的變量值不同,SQL的執(zhí)行計劃不會改變,避免重復(fù)解析SQL。
  • 避免SQL注入攻擊。

二、prepare語句用法

prepare statement主要有3個組成部分:

  • prepare語句:生成一個prepared statement對象并為其指定別名,可使用占位符?指定變量。
  • execute語句:通過別名執(zhí)行一個prepared statement,可通過using子句為變量提供值。
  • deallocate prepared語句:通過別名釋放一個prepared statement。

Prepare語句的生效范圍是會話,MySQL使用參數(shù)max_prepared_stmt_count來控制語句的最大數(shù)量,如果將該參數(shù)設(shè)置為0,將會禁用prepared statement功能。

show variables like 'max_prepared_stmt_count';

在這里插入圖片描述

執(zhí)行如下SQL準(zhǔn)備示例數(shù)據(jù):

create table person(
id int auto_increment primary key,
name varchar(32));
insert into person values (null, 'Vincent'), (null, 'Victor'), (null, 'Grace');
select * from person;

在這里插入圖片描述

2.1 prepare語句

prepare語句根據(jù)文本生成一個SQL語句對象,并為其指定一個別名,在準(zhǔn)備過程中,可以使用占位符?來替代變量:

set @sql = 'select name from person where id=?';
prepare stmt from @sql;

在這里插入圖片描述

示例中通過變量名來傳入SQL文本,也可以直接通過SQL文本prepare,例如:prepare stmt from ‘select name from person where id=?’;

prepare語句還有一個較常用的場景為動態(tài)SQL拼接。即根據(jù)用戶選擇的條件來快速調(diào)整過濾條件拼接出不同的SQL:

set @base = 'select * from person where 1=1';
set @id_filter = ' and id=?';
set @name_filter = ' and name=?';
set @sql2 = concat(@base, @id_filter, @name_filter);   -- 選擇了條件,就加入拼接
prepare stmt2 from @sql2;

在這里插入圖片描述

2.2 execute語句

執(zhí)行完prepare語句后,即可用execute語句來執(zhí)行,如果有?代替的變量,則需要通過using語句為其指定值(數(shù)量要和prepare語句中?數(shù)量相同)。execute語句在每次執(zhí)行提供不同的變量,即可實(shí)現(xiàn)一次解析,多次執(zhí)行:

set @var1 = 1;
execute stmt using @var1;
set @var2 = 2;
execute stmt using @var2;

在這里插入圖片描述

注意using子句中只能通過變量來提供值,如果通過常量提供值,則會報錯:

execute stmt using 1;

在這里插入圖片描述

2.3 deallocate prepare語句

prepare語句使用完成后可以使用deallocate/drop prepare ….語句手動進(jìn)行釋放,另外當(dāng)會話斷開時,所有未釋放的prepare語句也會自動釋放,因此重連或者異常中斷都會導(dǎo)致prepare statement丟失。

deallocate prepare stmt;

在這里插入圖片描述

到此這篇關(guān)于MySQL Prepared語句的具體使用的文章就介紹到這了,更多相關(guān)MySQL Prepared語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python機(jī)器學(xué)習(xí)入門(五)之Python算法審查

    Python機(jī)器學(xué)習(xí)入門(五)之Python算法審查

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解

    Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解

    這篇文章主要介紹了Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python Selenium自動化獲取頁面信息的方法

    Python Selenium自動化獲取頁面信息的方法

    這篇文章主要介紹了Python Selenium自動化獲取頁面信息的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • pycharm配置python環(huán)境的詳細(xì)圖文教程

    pycharm配置python環(huán)境的詳細(xì)圖文教程

    PyCharm是一款功能強(qiáng)大的Python編輯器,具有跨平臺性,下面這篇文章主要給大家介紹了關(guān)于pycharm配置python環(huán)境的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Python中常用的os操作匯總

    Python中常用的os操作匯總

    這篇文章主要匯總了Python中常用的os操作,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • python解析PDF程序代碼

    python解析PDF程序代碼

    python解析pdf信息,目前還是不能做到很完善,每個方法都會有它的弊端,都需要結(jié)合自己的業(yè)務(wù)場景來和其它方法一塊進(jìn)行使用,從而達(dá)到一個相對滿意的目標(biāo),接下來給大家介紹python解析PDF的程序代碼,一起看看吧
    2021-06-06
  • python之json文件讀寫操作的四種方法

    python之json文件讀寫操作的四種方法

    本文介紹了Python中處理JSON數(shù)據(jù)的四個主要方法,包括json.loads用于將JSON字符串轉(zhuǎn)化為Python字典,json.load用于從JSON文件讀取數(shù)據(jù),json.dumps將Python對象轉(zhuǎn)換為JSON字符串,而json.dump則用于將數(shù)據(jù)寫入JSON文件,感興趣的可以了解一下
    2025-12-12
  • python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例

    python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例

    這篇文章主要介紹了python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python scrapy爬蟲代碼及填坑

    python scrapy爬蟲代碼及填坑

    這篇文章主要介紹了python scrapy爬蟲代碼及填坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Java分治歸并排序算法實(shí)例詳解

    Java分治歸并排序算法實(shí)例詳解

    這篇文章主要介紹了Java分治歸并排序算法,結(jié)合實(shí)例形式詳細(xì)分析了分治歸并排序算法的原理及java實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12

最新評論

屏南县| 平陆县| 克拉玛依市| 长丰县| 南投市| 乌海市| 麻江县| 滦平县| 通化市| 湄潭县| 陆川县| 扎囊县| 合水县| 阿瓦提县| 南通市| 邹平县| 连州市| 儋州市| 西充县| 宁阳县| 沽源县| 广东省| 唐海县| 宕昌县| 太湖县| 绥芬河市| 华亭县| 波密县| 电白县| 溧水县| 郴州市| 会昌县| 河津市| 宜春市| 合川市| 星子县| 九寨沟县| 新建县| 遵义市| 尚志市| 穆棱市|