国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL變量(二十七)

這篇具有很好參考價(jià)值的文章主要介紹了MySQL變量(二十七)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

二八佳人體似酥,腰懸利劍斬愚夫,雖然不見人頭落,暗里教君骨髓枯。

上一章簡(jiǎn)單介紹了 MySQL觸發(fā)器(二十六) ,如果沒有看過,請(qǐng)觀看上一章

一. 變量

在MySQL數(shù)據(jù)庫的存儲(chǔ)過程和函數(shù)中,可以使用變量來存儲(chǔ)查詢或計(jì)算的中間結(jié)果數(shù)據(jù),或者輸出最終的結(jié)果數(shù)據(jù)。

在 MySQL 數(shù)據(jù)庫中,變量分為系統(tǒng)變量以及用戶自定義變量。

一.一 系統(tǒng)變量

變量由系統(tǒng)定義,不是用戶定義,屬于服務(wù)器層面。啟動(dòng)MySQL服務(wù),生成MySQL服務(wù)實(shí)例期間,MySQL將為MySQL服務(wù)器內(nèi)存中的系統(tǒng)變量賦值,這些系統(tǒng)變量定義了當(dāng)前MySQL服務(wù)實(shí)例的屬性、特征。這些系統(tǒng)變量的值要么是編譯MySQL時(shí)參數(shù)的默認(rèn)值,要么是配置文件(例如my.ini等)中的參數(shù)值。大家可以通過網(wǎng)址 https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html 查看MySQL文檔的系統(tǒng)變量。

系統(tǒng)變量分為全局系統(tǒng)變量(需要添加global 關(guān)鍵字)以及會(huì)話系統(tǒng)變量(需要添加 session 關(guān)鍵字),有時(shí)也把全局系統(tǒng)變量簡(jiǎn)稱為全局變量,有時(shí)也把會(huì)話系統(tǒng)變量稱為local變量。**如果不寫,默認(rèn)會(huì)話級(jí)別。**靜態(tài)變量(在 MySQL 服務(wù)實(shí)例運(yùn)行期間它們的值不能使用 set 動(dòng)態(tài)修改)屬于特殊的全局系統(tǒng)變量。

每一個(gè)MySQL客戶機(jī)成功連接MySQL服務(wù)器后,都會(huì)產(chǎn)生與之對(duì)應(yīng)的會(huì)話。會(huì)話期間,MySQL服務(wù)實(shí)例會(huì)在MySQL服務(wù)器內(nèi)存中生成與該會(huì)話對(duì)應(yīng)的會(huì)話系統(tǒng)變量,這些會(huì)話系統(tǒng)變量的初始值是全局系統(tǒng)變量值的復(fù)制。如下圖:

MySQL變量(二十七),MySQL,mysql,mysql變量

  • 全局系統(tǒng)變量針對(duì)于所有會(huì)話(連接)有效,但不能跨重啟
  • 會(huì)話系統(tǒng)變量?jī)H針對(duì)于當(dāng)前會(huì)話(連接)有效。會(huì)話期間,當(dāng)前會(huì)話對(duì)某個(gè)會(huì)話系統(tǒng)變量值的修改,不會(huì)影響其他會(huì)話同一個(gè)會(huì)話系統(tǒng)變量的值。
  • 會(huì)話1對(duì)某個(gè)全局系統(tǒng)變量值的修改會(huì)導(dǎo)致會(huì)話2中同一個(gè)全局系統(tǒng)變量值的修改。

在MySQL中有些系統(tǒng)變量只能是全局的,例如 max_connections 用于限制服務(wù)器的最大連接數(shù);有些系統(tǒng)變量作用域既可以是全局又可以是會(huì)話,例如 character_set_client 用于設(shè)置客戶端的字符集;有些系統(tǒng)變量的作用域只能是當(dāng)前會(huì)話,例如 pseudo_thread_id 用于標(biāo)記當(dāng)前會(huì)話的 MySQL 連接 ID。

一.一.一 查看所有或部分系統(tǒng)變量

#查看所有全局變量
SHOW GLOBAL VARIABLES;

#查看所有會(huì)話變量
SHOW SESSION VARIABLES;SHOW VARIABLES;

MySQL變量(二十七),MySQL,mysql,mysql變量

MySQL變量(二十七),MySQL,mysql,mysql變量

一.一.二 查看滿足條件的部分系統(tǒng)變量

#查看滿足條件的部分系統(tǒng)變量。
SHOW GLOBAL VARIABLES LIKE '%標(biāo)識(shí)符%';

#查看滿足條件的部分會(huì)話變量
SHOW SESSION VARIABLES LIKE '%標(biāo)識(shí)符%';
show session variables like '%log%';

MySQL變量(二十七),MySQL,mysql,mysql變量

一.一.三 查看指定的系統(tǒng)變量 具體的變量名

作為 MySQL 編碼規(guī)范,MySQL 中的系統(tǒng)變量以兩個(gè)“@”開頭,其中“@@global”僅用于標(biāo)記全局系統(tǒng)變量,“@@session”僅用于標(biāo)記會(huì)話系統(tǒng)變量。“@@”首先標(biāo)記會(huì)話系統(tǒng)變量,如果會(huì)話系統(tǒng)變量不存在,則標(biāo)記全局系統(tǒng)變量。

#查看指定的系統(tǒng)變量的值
SELECT @@global.變量名;

#查看指定的會(huì)話變量的值
SELECT @@session.變量名;
#或者
SELECT @@變量名;
select @@global.binlog_cache_size;

MySQL變量(二十七),MySQL,mysql,mysql變量

一.一.四 修改系統(tǒng)變量值

有些時(shí)候,數(shù)據(jù)庫管理員需要修改系統(tǒng)變量的默認(rèn)值,以便修改當(dāng)前會(huì)話或者M(jìn)ySQL服務(wù)實(shí)例的屬性、特征。具體方法:

方式1:修改MySQL配置文件,繼而修改MySQL系統(tǒng)變量的值(該方法需要重啟MySQL服務(wù))

方式2:在MySQL服務(wù)運(yùn)行期間,使用“set”命令重新設(shè)置系統(tǒng)變量的值

#為某個(gè)系統(tǒng)變量賦值
#方式1:
SET @@global.變量名=變量值;
#方式2:
SET GLOBAL 變量名=變量值;


#為某個(gè)會(huì)話變量賦值
#方式1:
SET @@session.變量名=變量值;
#方式2:
SET SESSION 變量名=變量值;

舉例:

SELECT @@global.autocommit;
SET GLOBAL autocommit=0;
SELECT @@session.tx_isolation;
SET @@session.tx_isolation='read-uncommitted';
SET GLOBAL max_connections = 1000;
SELECT @@global.max_connections;

一.二 用戶變量

用戶變量是用戶自己定義的,作為 MySQL 編碼規(guī)范,MySQL 中的用戶變量以一個(gè)“@”開頭。根據(jù)作用范圍不同,又分為會(huì)話用戶變量局部變量。

  • 會(huì)話用戶變量:作用域和會(huì)話變量一樣,只對(duì)當(dāng)前連接會(huì)話有效。
  • 局部變量:只在 BEGIN 和 END 語句塊中有效。局部變量只能在存儲(chǔ)過程和函數(shù)中使用。

一.二.一 會(huì)話用戶變量

變量定義:

#方式1:“=”或“:=”
SET @用戶變量 =;
SET @用戶變量 :=;

#方式2:“:=” 或 INTO關(guān)鍵字
SELECT @用戶變量 := 表達(dá)式 [FROM 等子句];
SELECT 表達(dá)式 INTO @用戶變量  [FROM 等子句];

查看用戶變量的值 (查看、比較、運(yùn)算等)

SELECT @用戶變量

舉例

SET @a = 1;

SELECT @a;

SELECT @num := COUNT(*) FROM user;

SELECT @num;


SELECT AVG(age) INTO @age FROM user;

SELECT @age;

-- 查看某個(gè)未聲明的變量時(shí),將得到NULL值

SELECT @big;  

一.二.二 局部變量

定義:可以使用DECLARE語句定義一個(gè)局部變量

作用域:僅僅在定義它的 BEGIN … END 中有效

位置:只能放在 BEGIN … END 中,而且只能放在第一句

BEGIN
	#聲明局部變量
	DECLARE 變量名1 變量數(shù)據(jù)類型 [DEFAULT 變量默認(rèn)值];
	DECLARE 變量名2,變量名3,... 變量數(shù)據(jù)類型 [DEFAULT 變量默認(rèn)值];

	#為局部變量賦值
	SET 變量名1 =;
	SELECTINTO 變量名2 [FROM 子句];

	#查看局部變量的值
	SELECT 變量1,變量2,變量3;
END

1.定義變量

DECLARE 變量名 類型 [default 值];  # 如果沒有DEFAULT子句,初始值為NULL

舉例:

DECLARE age INT DEFAULT 24;

2.變量賦值

方式1:一般用于賦簡(jiǎn)單的值

SET 變量名=值;
SET 變量名:=值;

方式2:一般用于賦表中的字段值

SELECT 字段名或表達(dá)式 INTO 變量名 FROM 表;

3.使用變量(查看、比較、運(yùn)算等)

SELECT 局部變量名;

舉例1:聲明局部變量,并分別賦值為 user 表中 id為 1 的 name 和 age

DELIMITER //

CREATE PROCEDURE set_value()
BEGIN
	DECLARE l_name VARCHAR(25);
	DECLARE l_age int(5);
	
	SELECT name,age INTO l_name,l_age
	FROM user 
	WHERE id = 1;
	
	SELECT l_name,l_age;
END //

DELIMITER ;

舉例2:聲明兩個(gè)變量,求和并打印 (分別使用會(huì)話用戶變量、局部變量的方式實(shí)現(xiàn))

MySQL變量(二十七),MySQL,mysql,mysql變量

#方式1:使用用戶變量
SET @m=1;
SET @n=1;
SET @sum=@m+@n;

SELECT @sum;

#方式2:使用局部變量
DELIMITER //

CREATE PROCEDURE add_value()
BEGIN
	#局部變量
	DECLARE m INT DEFAULT 1;
	DECLARE n INT DEFAULT 3;
	DECLARE SUM INT;
	
	SET SUM = m+n;
	SELECT SUM;
END //

DELIMITER ;

-- 切換標(biāo)識(shí)符
delimiter //

-- 創(chuàng)建存儲(chǔ)語句
create PROCEDURE p5(INOUT s_email varchar(100), IN s_username varchar(100)) 
begin
DECLARE dbEmail varchar(100) default '';
select email into dbEmail from auth_user where username = s_username ;
set  s_email = concat(s_email,dbEmail);
-- 結(jié)束
end //

-- 恢復(fù)標(biāo)識(shí)符為  ;
delimiter ;


-- 定義一個(gè)變量,要有默認(rèn)值為  '' 
set @s_email = 'hello:';

-- 查詢一下自定義的變量值
select @s_email;

-- 調(diào)用存儲(chǔ)函數(shù)
call p5(@s_email, 'admin');

-- 查詢一下變量,發(fā)現(xiàn)是有值的 
select @s_email;
1.2.4 對(duì)比會(huì)話用戶變量與局部變量
作用域 定義位置 語法
會(huì)話用戶變量 當(dāng)前會(huì)話 會(huì)話的任何地方 加@符號(hào),不用指定類型
局部變量 定義它的BEGIN END中 BEGIN END的第一句話 一般不用加@,需要指定類型


二. 變量應(yīng)用,處理表大小寫問題

在開發(fā)中,尤其是 Linux 服務(wù)器, 常常會(huì)出現(xiàn)表 大小寫的問題

在 Mysql 目錄下修改 my.cnf

加入

lower_case_table_names=1

show variables like ‘%case%’;

MySQL變量(二十七),MySQL,mysql,mysql變量

原因是文件權(quán)限的問題 , 修改權(quán)限為 777

chmod 777 my.cnf

重啟MySQL, 問題解決

謝謝!!!

方 |加@符號(hào),不用指定類型|
| 局部變量 | 定義它的BEGIN END中 | BEGIN END的第一句話 |一般不用加@,需要指定類型|



二. 處理表大小寫問題

在開發(fā)中,尤其是 Linux 服務(wù)器, 常常會(huì)出現(xiàn)表 大小寫的問題

在 Mysql 目錄下修改 my.cnf

加入

lower_case_table_names=1

show variables like ‘%case%’;

MySQL變量(二十七),MySQL,mysql,mysql變量

原因是文件權(quán)限的問題 , 修改權(quán)限為 777

chmod 777 my.cnf

重啟MySQL, 問題解決

三. MySQL 8.0的新特性—全局變量的持久化 set persist

在MySQL數(shù)據(jù)庫中,全局變量可以通過SET GLOBAL語句來設(shè)置。
例如,設(shè)置服務(wù)器語句超時(shí)的限制,可以通過設(shè)置系統(tǒng)變量max_execution_time來實(shí)現(xiàn):

SET GLOBAL MAX_EXECUTION_TIME=2000;

使用SET GLOBAL語句設(shè)置的變量值只會(huì)臨時(shí)生效數(shù)據(jù)庫重啟后,服務(wù)器又會(huì)從MySQL配置文件中讀取變量的默認(rèn)值。
MySQL 8.0版本新增了SET PERSIST命令。例如,設(shè)置服務(wù)器的最大連接數(shù)為1000:

SET PERSIST global max_connections = 1000;

MySQL會(huì)將該命令的配置保存到數(shù)據(jù)目錄下的mysqld-auto.cnf文件中,下次啟動(dòng)時(shí)會(huì)讀取該文件,用其中的配置來覆蓋默認(rèn)的配置文件。

舉例:

查看全局變量max_connections的值,結(jié)果如下:

mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

設(shè)置全局變量max_connections的值:

mysql> set persist max_connections=1000;
Query OK, 0 rows affected (0.00 sec)

重啟MySQL服務(wù)器,再次查詢max_connections的值:

mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 1000  |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set, 1 warning (0.00 sec)


謝謝!!!文章來源地址http://www.zghlxwxcb.cn/news/detail-631023.html

到了這里,關(guān)于MySQL變量(二十七)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL篇----第二十篇

    MySQL篇----第二十篇

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站,這篇文章男女通用,看懂了就去分享給你的碼吧。 NULL 這個(gè)值表示 UNKNOWN(未知):它不表示“”(空字符串)。對(duì) NULL 這個(gè)值的任何比較都會(huì)生產(chǎn) 一個(gè) NULL 值。您不能把

    2024年02月20日
    瀏覽(17)
  • 【大數(shù)據(jù)系列之MySQL】(二十五):MySQL中的子查詢

    子查詢:出現(xiàn)在其它語句內(nèi)部的select語句,稱為子查詢或內(nèi)查詢,就是嵌套的查詢結(jié)果集 子查詢分類 按子查詢出現(xiàn)的位置: select后面:僅僅支持標(biāo)量子查詢 from后面:支持表子查詢 where或having后面:標(biāo)量子查詢、列子查詢、行子查詢 exists后面(相關(guān)子查詢) 按結(jié)果集的行列

    2024年02月13日
    瀏覽(11)
  • MySQL高級(jí)第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    MySQL高級(jí)第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    在實(shí)際工作中,我們常常將Redis作為緩存與MySQL來配合使用,當(dāng)有請(qǐng)求的時(shí)候,首先會(huì)從緩存中進(jìn)行查找,如果存在就直接取出,如果不存在再訪問數(shù)據(jù)庫。 這樣就提升了讀取的效率,也減少了對(duì)后端數(shù)據(jù)庫的訪問壓力。 此外,對(duì)于一般數(shù)據(jù)庫應(yīng)用而言,都是 讀多寫少 的,

    2023年04月25日
    瀏覽(28)
  • MySQL基礎(chǔ)(二十四)索引的數(shù)據(jù)結(jié)構(gòu)

    MySQL基礎(chǔ)(二十四)索引的數(shù)據(jù)結(jié)構(gòu)

    順序查詢和數(shù)據(jù)使用二叉樹結(jié)構(gòu)再進(jìn)行查詢,如圖: 2.1 索引概述 MySQL官方對(duì)索引的定義為: 索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) 。 **索引的本質(zhì):**索引是數(shù)據(jù)結(jié)構(gòu)。你可以簡(jiǎn)單理解為“排好序的快速查找數(shù)據(jù)結(jié)構(gòu)”,滿足特定查找算法。這些數(shù)據(jù)結(jié)構(gòu)以某種方

    2024年02月03日
    瀏覽(40)
  • Linux學(xué)成之路(基礎(chǔ)篇0(二十三)MySQL服務(wù)(主從MySQL服務(wù)和讀寫分離——補(bǔ)充)

    Linux學(xué)成之路(基礎(chǔ)篇0(二十三)MySQL服務(wù)(主從MySQL服務(wù)和讀寫分離——補(bǔ)充)

    目錄 一、MySQL?Replication概述 優(yōu)點(diǎn) 異步復(fù)制(Asynchronous?repication) 全同步復(fù)制(Fully?synchronous?replication) 半同步復(fù)制(Semisynchronous?replication) 三、MySQL支持的復(fù)制 四、部署主從MySQL半異步復(fù)制 所有機(jī)器操作 主MySQL操作 從服務(wù)器操作 測(cè)試復(fù)制是否成功 ?五、基于主從半異步

    2024年02月15日
    瀏覽(21)
  • 第二十三天:mysql數(shù)據(jù)備份及還原

    第二十三天:mysql數(shù)據(jù)備份及還原

    一、備份類型 完全備份,部分備份 完全備份:整個(gè)數(shù)據(jù)集 部分備份:只備份數(shù)據(jù)子集,如部分庫或表 完全備份、增量備份、差異備份 增量備份:僅備份最近一次完全備份或增量備份(如果存在增量)以來變化的數(shù)據(jù),備份較快,還原復(fù)雜 差異備份:僅備份最近一次完全備

    2024年02月19日
    瀏覽(23)
  • 二十七、數(shù)據(jù)可視化

    借助圖形來清晰有效表達(dá)信息的方式成為可視化,可視化可以幫助我們更好地傳遞信息。 數(shù)據(jù)可視化的基礎(chǔ)還是數(shù)據(jù),要將數(shù)據(jù)圖表化,首先要整理數(shù)據(jù),明確要把哪些數(shù)據(jù)圖表化。 知道了要把哪些數(shù)據(jù)數(shù)據(jù)圖表化以后,就需要明確目的,可視化是用來表達(dá)信息的一種方式

    2024年02月16日
    瀏覽(24)
  • Rsync(二十七)

    Rsync(二十七)

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 目錄 前言 一、概述 二、特性 三、應(yīng)用場(chǎng)景 四、數(shù)據(jù)的同步方式 五、rsync傳輸模式 六、rsync應(yīng)用 七、rsync 命令 1. 格式 ?1.1 作為遠(yuǎn)程命令 ?1.?2 作為rsync服務(wù) 2. 選項(xiàng) 3. 配置文件 ?3.1? 全局配置 ? ? ?

    2024年02月16日
    瀏覽(20)
  • linux學(xué)成之路(基礎(chǔ)篇(二十三)MySQL服務(wù)(中)

    linux學(xué)成之路(基礎(chǔ)篇(二十三)MySQL服務(wù)(中)

    目錄 MySQL服務(wù)之SQL語句 一、SQL語句類型 一、 DDL語句 二、DML語句 三、DCL語句 四、DQL 語句 二、 數(shù)據(jù)庫操作 一、查看 二、創(chuàng)建 三、進(jìn)入 ?四、刪除數(shù)據(jù)庫 五、更改數(shù)據(jù)庫名稱 六、更改字符集 三、數(shù)據(jù)表管理 一、數(shù)據(jù)類型 一、數(shù)值類型 TINYINT SMALLINT INT BIGINT FLOAT(M,D) 二、

    2024年02月15日
    瀏覽(27)
  • 【MySQL數(shù)據(jù)庫 | 第二十篇】explain執(zhí)行計(jì)劃

    【MySQL數(shù)據(jù)庫 | 第二十篇】explain執(zhí)行計(jì)劃

    目錄 ?前言: explain:? 語法: 總結(jié): ? ? ? ? 上一篇我們介紹了從時(shí)間角度分析MySQL語句執(zhí)行效率的三大工具:SQL執(zhí)行頻率,慢日志查詢,profile。但是這三個(gè)方法也只是在時(shí)間角度粗略的查看SQL語句效率,我們要想看一個(gè)語句的真正性能,還要借助explain來查看SQL語句的優(yōu)

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包