国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL 自定義變量的概念及特點

瀏覽:2日期:2023-10-03 10:13:34

MySQL 的自定義 就是存儲值的臨時容器,只要與服務端的連接是活躍的,容器中的值可以保存和使用。可以通過簡單的 SET 或 SELECT語句 設置自定義變量,如下所示:

SET @one := 1;SET @min_actor := (SELECT MIN(actor_id) FROM sakila.actor);SET @last_week := CURRENT_DATE-INTERNAL 1 WEEK;

定義好變量后,就可以在 SQL 語句中使用這個變量:

SELECT * FROM film WHERE created_date <= @last_week;

雖然 MySQL 自定義變量很強大,但是也需要知道自定義變量本身也是有缺陷的,這些缺陷包括:

自定義變量會禁用查詢緩存。 不可以用做替代語義上的標識符,例如表名稱或列名稱,或者是在 LIMIT 子句中使用。 自定義變量是基于單次連接的,因此不可以跨連接使用。 如果使用連接池或持久連接,自定義變量會導致你的代碼與交互隔離,這出現的時候可能是代碼的 bug 或連接池的 bug,但是是可能發生的。 在 MySQL 5.0以前的版本中是大小寫敏感的,因此要注意(在 MySQL 5.0以后已經不區分大小寫了)。 無法顯示地指定變量類型,而實際變量的類型依賴于不確定的類型推斷,并且不同的版本會有差異,最好的方式是在一開始定義的時候指定類型,比如使用0設定整數變量,0.0設定浮點數變量,’’用于字符串。但是如果后面指定了新的值,類型會跟隨新的值改變,這是因為 MySQL 的自定義變量的類型是動態的。 優化器在某些情況下有可能會將自定義變量優化掉,導致無法按照期望的方式進行查詢。 賦值的次序,甚至包括賦值的時間都是不確定的,這取決于優化器選擇的查詢計劃。因此,最終的結果可能讓人困惑。 賦值操作符的優先級低于任何其他操作符,因此必須顯示地使用括號。 未定義變量不會報錯,這很容導致錯誤出現。

自定義變量可以用在所有類型的語句中,而不僅僅是 SELECT 語句。事實上,這是自定義變量的一個最大的優勢。例如,我們可以重寫復雜的查詢,例如利用子查詢進行排序的計算,或者是完成一次低代價的UPDATE 語句。

有些時候,優化器會認為這個變量是編譯時常量而不進行賦值,這會導致期望的行為很怪異。而將自定義變量的賦值放入類似 LEAST函數中通常會避免這個問題。另一個方式是在使用之前檢查一下自定義變量是否有值。有時候你想這樣做,但有些時候你不想這么做。

通過一些小的實驗,我們可以使用自定義變量做很多有趣的事情,例如:

計算總量和平均值; 對于分組查詢模擬 FIRST 和 LAST 函數; 對于很大的數做數學運算; 將一整張表轉換成 MD5哈希值; 過濾掉0值附近但超過設定邊界的樣本值; 模擬讀寫指針位置; 將變量嵌入到 WHERE 條件并在 SHOW 語句中顯示。

自定義變量在某些應用場合很有用,例如統計出現次數的排序值,計算更新和插入相同數據的次數,以及延遲的聯合查詢,下一篇文章將介紹具體的用法。

以上就是MySQL 的自定義變量的概念及特點的詳細內容,更多關于MySQL 自定義變量的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 一级视频免费观看 | 久草在线看 | 99精品在线播放 | 日韩精品在线一区 | 在线亚洲精品 | 欧美一级别 | 久久影院一区二区三区 | 午夜性爽视频男人的天堂在线 | 成人欧美| 欧美日韩免费做爰视频 | 久久久久亚洲国产 | 精品一区二区三区的国产在线观看 | 欧美日本一二三区 | 成年女人永久免费观看片 | 精品视频一区二区三三区四区 | 日韩中文字| 国产精品国内免费一区二区三区 | 在线观看国产区 | 农村三级孕妇视频在线 | 精品国产三级v | 小泽玛利亚的一级毛片的 | 草草伊人| 日韩中文在线观看 | 4455永久在线毛片观看 | 好吊妞国产欧美日韩视频 | 亚洲激情视频网站 | 我要看一级大片 | 女人扒开腿让男人捅啪啪 | 欧美日韩乱国产 | 成人在线欧美 | 日韩午夜 | 精品国产一二三区在线影院 | 朝鲜美女免费一级毛片 | 久久久视 | 久久精品成人国产午夜 | 久久18| 在线看国产视频 | 91精品国产高清久久久久久91 | 色偷偷亚洲女人天堂观看欧 | 国内精品成人女用 | 国产三级a三级三级 |