MySQL詳細(xì)講解變量variables的用法
變量 variables
MySQL本質(zhì)是一種編程語言
1、系統(tǒng)變量
對(duì)所有用戶客戶端都有效
1.1、查看系統(tǒng)變量
1、方式一
show variables [like 'pattern'];
示例
mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+
2、方式二:
使用select查詢變量的數(shù)據(jù)值
select @@變量名;
示例
select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+
1.2、修改系統(tǒng)變量
1、局部修改(會(huì)話級(jí)別)
-- 只針對(duì)當(dāng)前客戶端當(dāng)次連接有效 set 變量名 = 值; -- eg: set autocommit = 'off'; show variables like 'autocommit';
2、全局修改
-- 所有客戶端,都有效 set global 變量名 = 值; set @@global.變量名 = 值; -- eg: set global autocommit = 'off';
注意,全局修改之后,重啟客戶端生效
2、會(huì)話變量
也稱為用戶變量,設(shè)置的變量,只針對(duì)當(dāng)前用戶使用的客戶端生效
-- 定義用戶變量 set @變量名 = 值; set @age = 23;
mysql中沒有比較符號(hào) == ,使用的是 =;
為了避免分不清是賦值還是比較,賦值使用:=
set @變量名 := 值; set @name := 'Tom';
mysql允許將數(shù)據(jù)從表中取出存儲(chǔ)到變量中,只能是一行數(shù)據(jù)
-- 1、賦值且查看賦值過程 select @變量1 := 字段1, @變量2 := 字段2 from 表 where 條件 select @name := name, @age := age from my_student limit 1; +---------------+-------------+ | @name := name | @age := age | +---------------+-------------+ | 劉備 | 18 | +---------------+-------------+ --- 2、只賦值不看過程 select 字段1, 字段2 from 表 where 條件 into @變量1, @變量2; select name, age from my_student limit 1 into @name, @age;
查看變量
select @變量名 mysql> select @name, @age; +--------+------+ | @name | @age | +--------+------+ | 劉備 | 18 | +--------+------+
3、局部變量
作用范圍在begin到end語句塊之間,在該語句塊里設(shè)置的變量
- declare語句用于定義局部變量
- 局部變量 declare語句出現(xiàn)在begin到end語句塊之間
聲明語法
declare 變量名 數(shù)據(jù)類型 [屬性];
4、變量作用域
變量能夠使用的區(qū)域范圍
4.1、局部作用域
declare 關(guān)鍵字聲明 (結(jié)構(gòu)體中使用:函數(shù)/存儲(chǔ)過程/觸發(fā)器)
declare關(guān)鍵字聲明的變量沒有任何符號(hào)修飾,就是普通字符串,如果再外部訪問該變量,系統(tǒng)會(huì)自動(dòng)認(rèn)為是字段
4.2、會(huì)話作用域
用戶定義的,使用@符號(hào)定義的變量,使用set關(guān)鍵字
會(huì)話作用域,當(dāng)次連接有效只要再本連接中,任何地方都可以使用(可以在結(jié)構(gòu)內(nèi)容,也可以跨庫)
會(huì)話變量可以再函數(shù)內(nèi)部使用
set @name = '張三'; create function get_name() returns char(4) return @name; select get_name(); +------------+ | get_name() | +------------+ | 張三 | +------------+
會(huì)話變量可以跨庫
use mydatabase2; mysql> select @name; +--------+ | @name | +--------+ | 張三 | +--------+
4.3、全局作用域
所有的客戶端,所有的連接都有效,需要使用全局符號(hào)來定義
set global 變量名 = 值; set @@global.變量名 = 值;
通常,在sql編程的時(shí)候,不會(huì)使用自定義變量來控制全局,一般定義會(huì)話變量或者結(jié)構(gòu)中使用局部變量來解決問題
到此這篇關(guān)于MySQL詳細(xì)講解變量variables的用法的文章就介紹到這了,更多相關(guān)MySQL variables內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 邏輯備份與恢復(fù)測試的相關(guān)總結(jié)
數(shù)據(jù)庫邏輯備份就是備份軟件按照我們最初所設(shè)計(jì)的邏輯關(guān)系,以數(shù)據(jù)庫的邏輯結(jié)構(gòu)對(duì)象為單位,將數(shù)據(jù)庫中的數(shù)據(jù)按照預(yù)定義的邏輯關(guān)聯(lián)格式一條一條生成相關(guān)的文本文件,以達(dá)到備份的目的。本文將具體介紹MySQL 邏輯備份的相關(guān)概念及如何做恢復(fù)測試。2021-05-05MySQL優(yōu)化必須調(diào)整的10項(xiàng)配置
這篇文章主要介紹了MySQL優(yōu)化必須調(diào)整的10項(xiàng)配置,使用這些方法可以讓你快速地獲得一個(gè)穩(wěn)健的MySQL配置,需要的朋友可以參考下2014-02-02MySQL在關(guān)聯(lián)復(fù)雜情況下所能做出的一些優(yōu)化
這篇文章主要介紹了MySQL在關(guān)聯(lián)復(fù)雜情況下所能做出的一些優(yōu)化,作者通過添加索引來不斷優(yōu)化查詢時(shí)間,需要的朋友可以參考下2015-05-05mysql數(shù)據(jù)庫常見基本操作實(shí)例分析【創(chuàng)建、查看、修改及刪除數(shù)據(jù)庫】
這篇文章主要介紹了mysql數(shù)據(jù)庫常見基本操作,結(jié)合實(shí)例形式分析了mysql創(chuàng)建、查看、修改及刪除數(shù)據(jù)庫實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04允許遠(yuǎn)程用戶訪問mysql服務(wù)sql語句
本節(jié)主要介紹了如何允許遠(yuǎn)程用戶訪問mysql服務(wù),本例授權(quán)192.168.14.1 主機(jī)的cakephp用戶訪問cakephp數(shù)據(jù)庫2014-07-07詳解騰訊云CentOS7.0使用yum安裝mysql及使用遇到的問題
本篇文章主要介紹了騰訊云CentOS7.0使用yum安裝mysql,詳細(xì)的介紹了使用yum安裝mysql及使用遇到的問題,有興趣的可以了解一下。2017-01-01