欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL存儲(chǔ)過程中變量的定義以及應(yīng)用詳解

 更新時(shí)間:2023年06月05日 11:12:39   作者:Jiangxl~  
MySQL變量定義和應(yīng)用是我們經(jīng)常會(huì)遇到的問題,下面這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程中變量的定義以及應(yīng)用的相關(guān)資料,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

在MySQL數(shù)據(jù)庫(kù)種分為三種類型的變量,分別是系統(tǒng)變量、用戶自定義的變量、局部變量。

1.系統(tǒng)變量

系統(tǒng)變量是由MySQL數(shù)據(jù)庫(kù)提供的系統(tǒng)變量,屬于服務(wù)層面的系統(tǒng)變量,系統(tǒng)變量在使用時(shí)的級(jí)別又分為兩種:

  • 全局變量(global):全局變量針對(duì)所有的會(huì)話生效,但是當(dāng)重啟MySQL后,修改的系統(tǒng)變量值將會(huì)失效,若想永久修改變量的值,可以在MySQL的配置文件中聲明。
  • 局部變量(session):會(huì)話變量只針對(duì)與單個(gè)會(huì)話生效,到另一個(gè)會(huì)話窗口將失效。

系統(tǒng)變量的兩種使用級(jí)別可以在使用變量時(shí)指定使用哪一個(gè)級(jí)別,如果不明確指定系統(tǒng)變量的級(jí)別,默認(rèn)是session。

1.1.查看系統(tǒng)變量的語法格式

1)查看所有的系統(tǒng)變量

SHOW [ SESSION | GLOBAL ] VARIABLES 

2)查找某一個(gè)系統(tǒng)變量

SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '變量名'

3)查看指定變量的值

SELECT @@[SESSION | GLOBAL].變量名

1.2.設(shè)置系統(tǒng)變量值的語法格式

兩種方式可以設(shè)置變量的值。

SET [ SESSION | GLOBAL ] 系統(tǒng)變量名 = 值 
SET @@[SESSION | GLOBAL].系統(tǒng)變量名 = 值 

1.3.系統(tǒng)變量使用案例

1)查看所有的系統(tǒng)變量

mysql> show variables;

2)查看名稱包含auto的系統(tǒng)變量

左側(cè)是變量名,右側(cè)是變量值。

mysql> show variables like '%auto%';
+----------------------------------------------+-------+
| Variable_name                                | Value |
+----------------------------------------------+-------+
| auto_generate_certs                          | ON    |
| auto_increment_increment                     | 1     |
| auto_increment_offset                        | 1     |
| autocommit                                   | ON    |
| automatic_sp_privileges                      | ON    |
| caching_sha2_password_auto_generate_rsa_keys | ON    |
| innodb_autoextend_increment                  | 64    |
| innodb_autoinc_lock_mode                     | 2     |
| innodb_stats_auto_recalc                     | ON    |
| sha256_password_auto_generate_rsa_keys       | ON    |
| sql_auto_is_null                             | OFF   |
+----------------------------------------------+-------+
11 rows in set (0.00 sec)

3)查看指定變量的變量值

mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

4)修改系統(tǒng)變量的值

mysql> set @@session.autocommit = 0;
Query OK, 0 rows affected (0.02 sec)
或者
mysql> set session autocommit = 0;
Query OK, 0 rows affected (0.00 sec)

2.用戶自定義的變量

在MySQL數(shù)據(jù)庫(kù)中,還支持用戶根據(jù)自己的需要,自定義的環(huán)境變量,用戶自定義的變量不需要提前聲明,直接賦值使用即可,用戶自定義的變量?jī)H應(yīng)用于當(dāng)前的會(huì)話連接。

用戶自定義的變量是不需要聲明或者初始化的,如果沒有賦值直接使用自定義的變量名,變量值則為NULL。

2.1.用戶自定義變量的語法格式

1)定義變量并賦值

方式一,使用SET直接定義變量并賦值。

SET @變量名1 = 變量值1
SET @變量名1 = 變量值1 , @變量名2 = 變量值2

SET @變量名1 := 變量值1 
SET @變量名1 := 變量值1 , @變量名2 := 變量值2 

建議使用:=的方式為變量賦值,因?yàn)樵谧兞窟\(yùn)算時(shí)=符號(hào)也是運(yùn)算符號(hào)。

方式二,由于用戶自定義的變量不需要聲明,可以使用SELECT直接定義變量和賦值。

SELECT @變量名1 := 變量值1 , @變量名2 := 變量值2 

方式三,將SQL的查詢結(jié)果賦值給變量。

SELECT 字段名 INTO @變量名 FROM 表名
將某個(gè)表的某個(gè)字段的結(jié)果賦值給變量。

2)使用變量

SELECT @變量名1

2.2.用戶自定義變量的案例

1)使用set定義變量并賦值

1.一次性定義一個(gè)變量
mysql> set @name = 'jiangxl';
或者
mysql> set @username :=  'wang';
2.一次性定義多個(gè)變量
mysql> set @username = 'wang' , @userid = '1';
或者
mysql> set @age := '19' , @book := 'linux';

2)使用select定義變量并賦值

使用select定義完變量賦完值之后就可以看到變量的值。

1.一次性定義一個(gè)變量
mysql> select @myzhiwu := 'devops_linux';
+----------------------------+
| @myzhiwu := 'devops_linux' |
+----------------------------+
| devops_linux               |
+----------------------------+

2.一次性定義多個(gè)變量
mysql> select @myzhiwu := 'devops_linux' , @myage := '25';
+----------------------------+----------------+
| @myzhiwu := 'devops_linux' | @myage := '25' |
+----------------------------+----------------+
| devops_linux               | 25             |
+----------------------------+----------------+

3)將ryxxb的總數(shù)賦值給變量

mysql> select count(*) into @mycount from ryxxb;

4)查看變量的值

查詢各個(gè)定義的變量所對(duì)應(yīng)的值。

mysql> select @name,@username,@userid,@age,@book,@myzhiwu,@myage;
+---------+-----------+---------+------+-------+--------------+--------+
| @name   | @username | @userid | @age | @book | @myzhiwu     | @myage |
+---------+-----------+---------+------+-------+--------------+--------+
| jiangxl | wang      | 1       | 19   | linux | devops_linux | 25     |
+---------+-----------+---------+------+-------+--------------+--------+

3.可以在存儲(chǔ)過程中定義的局部變量

局部變量是在存儲(chǔ)過程中聲明的,僅應(yīng)用于存儲(chǔ)過程的BEGIN…END這個(gè)范圍中,局部變量需要通過DECLARE關(guān)鍵字聲明,聲明完成后再通過SET或者SELECT進(jìn)行賦值,局部變量和用戶自定義變量的賦值方式是一模一樣的。

3.1.局部變量的語法格式

1)聲明變量

DECLARE 變量名 變量值的類型 [DEFAULT 默認(rèn)值]
變量值的類型就是數(shù)據(jù)庫(kù)字段的類型,例如:INT BIGINT CHAR VARCHAR DATE TIME等等。

2)變量賦值

SET 變量名 = 變量值
SET 變量名 := 變量值
SELECT 字段名 INTO 變量名 FROM 表名;

3.2.局部變量的應(yīng)用案例

創(chuàng)建一個(gè)存儲(chǔ)過程,在里面定義兩個(gè)局部變量,分別用SET和SELECT賦值,最后查看變量的內(nèi)容。

1.創(chuàng)建視圖
create procedure proc_2()
begin
	declare ryxxb_count int default 0;			#聲明ryxxb表總數(shù)的變量,類型為int,默認(rèn)值為0
	declare username varchar(10);				#聲明username變量,類型為varchar
	set username := 'jiangxl';						#賦值username變量
	select count(*) into ryxxb_count from ryxxb;		#將ryxxb表的總數(shù)據(jù)量賦值為ryxxb_count變量
	select ryxxb_count,username;						#查詢變量的值
end;

2.調(diào)用視圖
mysql> call proc_2();
+-------------+----------+
| ryxxb_count | username |
+-------------+----------+
|          22 | jiangxl  |
+-------------+----------+
1 row in set (0.00 sec)

補(bǔ)充知識(shí):變量的賦值

同程序里面一樣,定義了變量,我們也需要在程序中對(duì)他賦值,下面是示例代碼:

DECLARE total_count INT DEFAULT 0
 SET total_count = 10;

可以看到進(jìn)行賦值時(shí)候需要在前面加上:SET 這個(gè)關(guān)鍵字。

當(dāng)然由于存儲(chǔ)過程的特殊性(用于數(shù)據(jù)庫(kù)的數(shù)據(jù)操作),所以除了SET這種賦值方法,還可以通過SELECT INTO語句將返回的值賦給變量:

DECLARE total_products INT DEFAULT 0
 SELECT COUNT(*) INTO total_products
 FROM products 

看到這里把products的記錄數(shù)賦給了total_products這個(gè)變量。所以如果上面我們表格內(nèi)是3個(gè)記錄的話,這里total_products就是等于3了

總結(jié)

到此這篇關(guān)于MySQL存儲(chǔ)過程中變量的定義以及應(yīng)用詳解的文章就介紹到這了,更多相關(guān)MySQL存儲(chǔ)過程變量應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • insert...on?duplicate?key?update語法詳解

    insert...on?duplicate?key?update語法詳解

    本文主要介紹了insert...on?duplicate?key?update語法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MAC下MySQL初始密碼忘記怎么辦

    MAC下MySQL初始密碼忘記怎么辦

    MySQL初始密碼忘記如何解決,這篇文章主要介紹了MAC下MySQL忘記初始密碼的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL中存儲(chǔ)時(shí)間的最佳實(shí)踐指南

    MySQL中存儲(chǔ)時(shí)間的最佳實(shí)踐指南

    這篇文章主要給大家介紹了關(guān)于MySQL中存儲(chǔ)時(shí)間的最佳實(shí)踐,文中詳細(xì)介紹了哪種存儲(chǔ)時(shí)間的方式更好,對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • MySQL大內(nèi)存配置方案 如my-medium.ini、my-huge.ini等

    MySQL大內(nèi)存配置方案 如my-medium.ini、my-huge.ini等

    這篇文章主要介紹了MySQL大內(nèi)存配置方案 如my-medium.ini、my-huge.ini等,經(jīng)測(cè)試確實(shí)不錯(cuò),訪問mysql速度快了很多
    2014-08-08
  • MySQL觸發(fā)器的使用

    MySQL觸發(fā)器的使用

    觸發(fā)器用于在 MySQL 執(zhí)行插入、更新或刪除語句時(shí),自動(dòng)觸發(fā)執(zhí)行其他SQL代碼。本文講解觸發(fā)器的正確使用方式
    2021-05-05
  • 64位CentOs7源碼安裝mysql-5.6.35過程分享

    64位CentOs7源碼安裝mysql-5.6.35過程分享

    本文給大家分享的是在64位CentOs7系統(tǒng)中使用源碼安裝mysql-5.6.35的詳細(xì)過程,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-02-02
  • 詳解MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本

    詳解MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本

    這篇文章主要介紹了MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 詳解mysql中explain的type

    詳解mysql中explain的type

    這篇文章主要介紹了mysql中explain的type的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-11-11
  • windows下安裝mysql8.0.18的教程(社區(qū)版)

    windows下安裝mysql8.0.18的教程(社區(qū)版)

    本文章簡(jiǎn)單介紹一下mysql在windows下的安裝方式,主要介紹了mysql社區(qū)版8.0.18版本,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2020-01-01
  • MySQL默認(rèn)sql_mode淺析

    MySQL默認(rèn)sql_mode淺析

    這篇文章主要為大家介紹了MySQL默認(rèn)sql_mode淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論