mysql 預處理器 MySql 的預處理

2021-10-17 16:01:34 字數 1298 閱讀 9634

基本的策略

將sql語句強制的一分為二:

第一部分為前面相同的命令和結構部分

第二部分為後面的可變資料的部分

在執行sql語句的時候,首先將前面相同的命令和結構部分傳送給mysql伺服器,讓mysql伺服器事先進行一次預處理(此時並沒有真正的執行sql語句),而為了保證sql語句的結構完整性,在第一次傳送sql語句的時候將其中可變的資料部分都用乙個資料佔位符來表示!比如問號?就是常見的資料佔位符!

在mysql預處理中有兩種形式:帶引數/不帶引數預處理

簡單的語句執行操作

set @i=3; 相當於設定乙個乙個變數 必須以@開頭 並賦值

execute test using @i; 好比 select * from t1 where id>3;

drop prepare test; #刪除預處理

不用每次都去請求mysql

不帶引數的預處理語句

1.1 準備預處理語句

prepare 語句名稱 from 「預處理的sql語句」;

prepare sql_1 from "select * from pdo";

1.2 執行預處理語句

execute sql_1;

1.3 刪除預處理

drop prepare 語句名稱;

drop prepare sql_1;

帶引數的預處理語句

2.1準備預處理語句

prepare 語句名稱 from 「預處理的sql語句」;

prepare sql_2 from "select * from pdo where id = ?";

2.2 定義引數變數

set @**變數名 = *值; *--這裡的@是在mysql中定義變數的一種語法形式(模擬php中的$符號)

set @id=2;

2.3 傳遞引數變數並執行預處理語句

execute **語句名稱 using **引數變數;

execute sql_2 using @id; --選出id=2的資訊

2.4 刪除預處理

drop prepare 語句名稱;

drop prepare sql_2;

注意:如果資料佔位符不止乙個,就按資料佔位符的順序傳參就行了:

prepare sql_2 from "select * from pdo where id > ? && age > ?";

set @id=2;

set @age=30;

execute sql_2 using @id,@age;

注意此處的引數未知應與步驟一中的佔位符對應

mysql 預處理 MySQL的預處理技術

所謂的預處理技術,最初也是由mysql提出的一種減輕伺服器壓力的一種技術!傳統mysql處理流程 1,在客戶端準備sql語句 2,傳送sql語句到mysql伺服器 3,在mysql伺服器執行該sql語句 4,伺服器將執行結果返回給客戶端 這樣每條sql語句請求一次,mysql伺服器就要接收並處理一次...

預處理器小結

預處理器發生在程式被編譯之前,所有的預處理器指令都以 開頭。1.include預處理器指令 使指定檔案的乙個副本被包含到指令所在的位置。include 與 include filename 區別 簡單不加以說明 include 指令用於包含標準類庫標頭檔案,也可以用於由多個原始檔組成的程式。2.in...

預處理器簡介

預處理是c編譯器做的第一件事情,主要是做一些文字方面的工作。包括 刪除注釋 插入被 include包含的檔案 定義和替換由 define指令定義的符號以及 的部份內容,和條件編譯。預定義符號 預定義符號如下表所示 file 進行編譯的檔名 line 檔案的當前行號 date 檔案編譯的日期 time...