翻譯:用戶變量(User-Defined Variable)(已提交到MariaDB官方手冊)

本文為mariadb官方手冊:User-Defined Variables的譯文。

原文:https://mariadb.com/kb/en/user-defined-variables/
我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/user-defined-variables/

用戶變量是指由用戶創建,并存在于會話當中的變量。這意味著其他用戶無法訪問,且在當前會話關閉時,該用戶變量自動過期。但是,這些變量可以在多個查詢和存儲程序stored programs之間共享使用。

用戶變量的名稱前必須加上單個 at 符號作為前綴(@)。用戶變量的名稱部分可以安全地使用保留關鍵詞,名稱部分所允許的字符包括ASCII字母、數字、美元符($)、下劃線(_)和點(.)。如果要使用其他字符,需要使用以下幾種引用方式包圍它:

  • @`var_name`
  • @'var_name'
  • @"var_name"

這些字符可以進行正常的轉義(逃逸)。

現在用戶變量是不區分大小寫的,但在MySQL 4.1和更老的版本中是區分大小寫的。

用戶變量是無法聲明的。可以直接讀取一個存在或不存在的用戶變量,只不過不存在的用戶變量返回值為NULL。要設置一個用戶變量,可以使用以下幾種方式:

  • SET語句;
  • SQL語句中使用 := 操作符;
  • SELECT ... INTO

由于無法聲明用戶變量的類型,唯一能夠強制它們類型的方式是使用CAST()CONVERT()進行轉換:

SET @str = CAST(123 AS CHAR(5));

如果變量未賦值,則其值為NULL:

SELECT @x IS NULL;
+------------+
| @x IS NULL |
+------------+
|          1 |
+------------+

在同一個語句中同時讀取變量、設置變量的值是不安全的行為(除非使用的是SET命令),因為這些操作的順序是不定的。

用戶變量可以用在絕大多數可以接受SQL表達式的MariaDB語句和子句中。但是有一些例外,例如LIMIT子句。

用戶變量不能替代語句中的關鍵字、標識符等,除非它們用在預編譯PREPARE語句中。(譯者注:英文版內容缺失,此句為本人自行修改。例如@a="SELECT",卻無法@a * from t。正如下面的例子中,如果用戶變量@sql不在PREPARE語句中進行預編譯,它無法直接執行)

@sql = 'DELETE FROM my_table WHERE c>1;';
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

另一個較常用的功能是在查詢語句中充當計數器:

SET @var = 0;
SELECT a, b, c, (@var:=@var+1) AS counter FROM my_table;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/283815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/283815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/283815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

移植Python3到TQ2440(一)

平臺 硬件:TQ2440 64MB內存 256MB NandFlashbootloader:U-Boot 2015.04kernel:linux-4.9Python: Python-3.6.0工具鏈:arm-none-linux-gnueabi-gcc 4.8.3概述 現在樹莓派很火,在樹莓派上面用戶可以通過Python來控制板…

WinForm(六)組合布局屬性

WinForm是基于控件的,不像codemark的架構,可以非常靈活的用mark來布局,它只能用控件布局屬性和窗口控件來完成對UI的布局。容器控件有一組控件叫容器控件,對布局特別有作用,它們分別是:TableLayoutPanel&am…

Qt 網絡編程

QT 網絡編程 TCP 編程 模塊引入 QT network 頭文件 #include <QTcpServer> // TCP服務器端使用 #include <QTcpSocket> // TCP服務器和客戶端都使用 編程流程 服務端 1&#xff09;實例化 QTcpServer 對象 -----------------------------> socket 2&#x…

HDU 5037 Frog(2014年北京網絡賽 F 貪心)

開始就覺得有思路&#xff0c;結果越敲越麻煩。。。   題意很簡單&#xff0c;就是說一個青蛙從0點跳到m點&#xff0c;最多可以跳l的長度&#xff0c;原有石頭n個&#xff08;都僅表示一個點&#xff09;。但是可能跳不過去&#xff0c;所以你是上帝&#xff0c;可以隨便在哪…

Kafka高性能高吞吐的原因總結

1、磁盤順序讀寫 保證了消息的堆積 順序讀寫 磁盤會預讀,預讀即在讀取的起始地址連續讀取多個頁面&#xff0c;主要時間花費在了傳輸時間,而這個時間兩種讀寫可以認為是一樣的。 隨機讀寫 因為數據沒有在一起&#xff0c;將預讀浪費掉了&#xff0c;需要多次尋道和旋…

日利率

2019獨角獸企業重金招聘Python工程師標準>>> 利率計算 轉載于:https://my.oschina.net/u/3342652/blog/1649028

linux下使用tar命令

解壓語法&#xff1a;tar [主選項輔選項] 文件或者目錄 使用該命令時&#xff0c;主選項是必須要有的&#xff0c;它告訴tar要做什么事情&#xff0c;輔選項是輔助使用的&#xff0c;可以選用。主選項&#xff1a;c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件&…

Kafka 安裝詳解

注意&#xff1a;確保有JDK1.8版本及以上 官方文檔&#xff1a;https://kafka.apache.org/quickstart 清華鏡像下載&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/ 首先下載安裝包&#xff0c;在linux及Windows都可以使用。 1. Centos 安裝部署 1.1 下載 將下…

【Maui正式版】創建可跨平臺的Maui程序,以及有關依賴注入、MVVM雙向綁定的實現和演示...

前言&#xff1a;Maui終于在2022年8月9日推送出來了。今兒就迫不及待來把玩一下先。A、我本地已有VS2022&#xff0c;不過版本比較老&#xff0c;此處選擇更新。工具 -> 獲取功能和更新里面&#xff0c;可以獲取到新版本更新。B、最新版本是17.3.0&#xff0c;我本地只有17.…

學go語言能做什么工作?

Go語言主要用作服務器端開發&#xff0c;其定位是用來開發“大型軟件”的&#xff0c;適合于很多程序員一起開發大型軟件&#xff0c;并且開發周期長&#xff0c;支持云計算的網絡服務。Go語言能夠讓程序員快速開發&#xff0c;并且在軟件不斷的增長過程中&#xff0c;它能讓程…

WebSQL存儲

2019獨角獸企業重金招聘Python工程師標準>>> WebSQL這種存儲技術&#xff0c;相對于學過數據庫的人來說&#xff0c;還是比較容易理解和上手的&#xff0c;主要就是它的存儲風格和我們一般所學的SQL Server 和Oracle比較像&#xff0c;對于HTML5來說&#xff0c;當然…

軟件工程第一次作業補充

1.關注《構建之法》的作者鄒欣老師的博客&#xff1b;2.花二十分鐘寫一個能自動生成小學四則運算題目的“軟件”&#xff0c;要求除了整數以外&#xff0c;還要支持真分數的四則運算。將代碼上傳至coding.net,并將地址發布至自己的博客。代碼地址&#xff1a; https://coding.n…

抖音服務器帶寬有多大,才能供上億人同時刷?

最近看到一個有意思的提問&#xff1a;抖音服務器帶寬有多大&#xff0c;為什么能夠供那么多人同時刷&#xff1f;今天來給小伙伴們科普一下。 抖音&#xff0c;百度&#xff0c;阿里云&#xff0c;騰訊都是自建的數據中心&#xff0c;都是 T 級別出口帶寬&#xff08;總出口帶…

ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程

通過Rider調試的方式看了下ASP.NET Core 5.0的Web API默認項目&#xff0c;重點關注Host.CreateDefaultBuilder(args)中的執行過程&#xff0c;主要包括主機配置、應用程序配置、日志配置和依賴注入配置這4個部分。由于水平和篇幅有限&#xff0c;先整體理解、建立框架&#xf…

404和302

為什么80%的碼農都做不了架構師&#xff1f;>>> 404 php中用header()函數是可以為返回頁面添加404的頭信息的&#xff0c;從而提示瀏覽器該網頁找不到了。 所以可以使用&#xff1a;header("HTTP/1.0 404 Not Found");或者&#xff1a;header("Stat…

oracle sqlplus使用

2019獨角獸企業重金招聘Python工程師標準>>> 1、常用連接方式 sqlplus / as sysdba 無需數據庫進入可用狀態&#xff0c;就可用用該命令登錄&#xff0c;運行startup來啟動。 sqlplus username/pwdhost/service_name&#xff0c;如&#xff1a; sqlplus tiger/scott…

20款IDEA 神級插件 效率提升 30 倍,寫代碼必備

插件目錄 1. Alibaba Java Coding Guidelines 2.GsonFormat 3.A8Translation 4.Maven Helper 5.Free Mybatis plugin 6.Grep Console 7.Lombok 8.Nyan progress bar 9.FindBugs-IDEA 10.Key Promoter X 11.JavaDoc 12.ignore 13.RainbowBrackets 14.Activate-power-mode 15.C…

【溫故知新】C# Linq中 Where使用技巧

微信公眾號&#xff1a;趣編程ACE關注可了解更多的.NET日常實戰開發技巧&#xff0c;如需源碼 后臺回復 源碼 即可;如果覺得對你有幫助&#xff0c;歡迎關注C# Linq中 Where使用技巧hello 大家好&#xff0c;很開心又能重新分享C#編程開發技巧了&#xff0c;之前因為工作和生活…

JS引用類型 -- Array類型

ECMAScript數組與其他語言中的數組都是數據的有序列表&#xff0c;但與其他語言不同的是&#xff0c;ECMAScript數組的每一項可以保存任何類型的數據。而且ECMAScript數組的大小是可以動態調整的&#xff0c;即可以隨著數據的添加自動增長。 創建數組的基本方式有兩種&#xff…

分布式id解決方案

文章目錄 1.分布式id實現方案 1.1.uuid1.2 數據庫主鍵自增1.3 Redis自增1.4 號段模式1.5 雪花算法&#xff08;snowflake&#xff09; 1.5.1 百度&#xff08;uid-generator&#xff09;1.5.2 美團&#xff08;Leaf&#xff09;所謂id就是能夠用作唯一標識的記號。 在我們日常的…