Mysql臨時(shí)變量的具體使用
前言
臨時(shí)變量主要分為用戶(hù)變量和會(huì)話變量
1. 用戶(hù)變量
用戶(hù)變量是特定于會(huì)話的,在單個(gè)會(huì)話內(nèi)可以在多個(gè)語(yǔ)句中共享
- 以
@符號(hào)開(kāi)頭 - 在 SQL 語(yǔ)句中使用 SET 語(yǔ)句或直接在查詢(xún)中賦值
聲明和賦值
SET @var_name = value; -- 或者 SELECT @var_name := value;
使用
SELECT @var_name;
注意事項(xiàng)如下:
- 在聲明時(shí)不需要指定數(shù)據(jù)類(lèi)型,MySQL 會(huì)自動(dòng)根據(jù)賦值的內(nèi)容推斷類(lèi)型
- 在 SQL 語(yǔ)句中區(qū)分大小寫(xiě)
- 聲明用戶(hù)變量時(shí)沒(méi)有賦值,它們的值將為 NULL
- 在查詢(xún)中,用戶(hù)變量會(huì)根據(jù)查詢(xún)的執(zhí)行順序進(jìn)行賦值和計(jì)算,容易引起不期望的結(jié)果,需要小心使用
簡(jiǎn)單賦值:

在查詢(xún)中使用用戶(hù)變量:
-- 創(chuàng)建示例表
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
amount DECIMAL(10, 2)
);
-- 插入示例數(shù)據(jù)
INSERT INTO sales (amount) VALUES (100.00), (200.00), (300.00);
-- 使用用戶(hù)變量計(jì)算累計(jì)總和
SET @total = 0;
SELECT id, amount, @total := @total + amount AS cumulative_total
FROM sales;
截圖如下:

2. 會(huì)話變量
會(huì)話變量也稱(chēng)為系統(tǒng)變量,整個(gè)會(huì)話期間保持有效
不過(guò)可以是全局的或會(huì)話特定的
設(shè)置會(huì)話變量:SET SESSION var_name = value;設(shè)置全局變量:SET GLOBAL var_name = value;查看會(huì)話變量:SHOW VARIABLES LIKE 'var_name';
注意事項(xiàng):
- 會(huì)話變量?jī)H在當(dāng)前會(huì)話中有效,而全局變量在所有會(huì)話中有效,但必須有足夠的權(quán)限來(lái)設(shè)置全局變量
- 設(shè)置會(huì)話變量時(shí),應(yīng)該確保其值是合理的,以避免對(duì)數(shù)據(jù)庫(kù)性能產(chǎn)生負(fù)面影響
- 一些會(huì)話變量的更改可能會(huì)立即生效,而另一些可能需要重新啟動(dòng)服務(wù)器才能生效
示例 1:設(shè)置并查看會(huì)話變量
-- 設(shè)置會(huì)話變量 SET SESSION sql_mode = 'STRICT_TRANS_TABLES'; -- 查看會(huì)話變量 SHOW VARIABLES LIKE 'sql_mode';
截圖如下:

示例 2:設(shè)置并查看全局變量
-- 設(shè)置全局變量 SET GLOBAL max_connections = 200; -- 查看全局變量 SHOW VARIABLES LIKE 'max_connections';
截圖如下:

到此這篇關(guān)于Mysql臨時(shí)變量的具體使用的文章就介紹到這了,更多相關(guān)Mysql臨時(shí)變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL語(yǔ)句中LEFT JOIN的ON和WHERE有什么區(qū)別
這篇文章主要介紹了SQL語(yǔ)句中LEFT JOIN的ON和WHERE之間的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12
mysql如何匹配數(shù)組字段中的某一個(gè)具體值
在數(shù)據(jù)庫(kù)操作中,有時(shí)需要查詢(xún)數(shù)組字段中包含特定值的數(shù)據(jù),傳統(tǒng)like查詢(xún)可能會(huì)帶來(lái)錯(cuò)誤結(jié)果,如查詢(xún)包含數(shù)字1的數(shù)組可能錯(cuò)誤返回包含數(shù)字10的結(jié)果,為此,可以使用MySQL的FIND_IN_SET函數(shù)或REGEXP正則表達(dá)式進(jìn)行精確匹配,FIND_IN_SET適用于匹配單個(gè)固定值2024-11-11
MySQL中數(shù)據(jù)類(lèi)型的驗(yàn)證
這篇文章主要介紹了MySQL中數(shù)據(jù)類(lèi)型的驗(yàn)證 的相關(guān)資料,需要的朋友可以參考下2016-04-04
MySQL通過(guò)show processlist命令檢視性能的講解
今天小編就為大家分享一篇關(guān)于MySQL通過(guò)show processlist命令檢視性能的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
MySQL中使用SQL語(yǔ)句對(duì)字段進(jìn)行重命名
MySQL中,如何使用SQL語(yǔ)句來(lái)對(duì)表中某一個(gè)字段進(jìn)行重命名呢?我們將使用alter table 這一SQL語(yǔ)句,需要的朋友可以參考下2016-04-04

