最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

1.系統(tǒng)變量

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

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

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

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

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

SHOW [ SESSION | GLOBAL ] VARIABLES 

2)查找某一個系統(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ù)庫中,還支持用戶根據(jù)自己的需要,自定義的環(huán)境變量,用戶自定義的變量不需要提前聲明,直接賦值使用即可,用戶自定義的變量僅應(yīng)用于當(dāng)前的會話連接。

用戶自定義的變量是不需要聲明或者初始化的,如果沒有賦值直接使用自定義的變量名,變量值則為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)算時=符號也是運(yùn)算符號。

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

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

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

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

2)使用變量

SELECT @變量名1

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

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

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

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

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

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

2.一次性定義多個變量
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)查看變量的值

查詢各個定義的變量所對應(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.可以在存儲過程中定義的局部變量

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

3.1.局部變量的語法格式

1)聲明變量

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

2)變量賦值

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

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

創(chuàng)建一個存儲過程,在里面定義兩個局部變量,分別用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ǔ)充知識:變量的賦值

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

DECLARE total_count INT DEFAULT 0
 SET total_count = 10;

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

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

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

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

總結(jié)

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

相關(guān)文章

  • SQL GROUP BY 詳解及簡單實(shí)例

    SQL GROUP BY 詳解及簡單實(shí)例

    這篇文章主要介紹了SQL GROUP BY 詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 一次現(xiàn)場mysql重復(fù)記錄數(shù)據(jù)的排查處理實(shí)戰(zhàn)記錄

    一次現(xiàn)場mysql重復(fù)記錄數(shù)據(jù)的排查處理實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了一次現(xiàn)場mysql重復(fù)記錄數(shù)據(jù)的排查處理記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • MySQL數(shù)據(jù)讀寫分離MaxScale相關(guān)配置

    MySQL數(shù)據(jù)讀寫分離MaxScale相關(guān)配置

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)讀寫分離MaxScale相關(guān)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • MySQL8.0無法啟動3534的解決方法

    MySQL8.0無法啟動3534的解決方法

    本文主要是記錄一下自己使用MySQL的一次踩坑經(jīng)歷,我的MySQL安裝好后,使用一周后的同一時間必定報(bào)連接失敗,然后查找發(fā)現(xiàn)是MySQL本地服務(wù)沒有啟動,下面就詳細(xì)的介紹一下
    2021-06-06
  • MySQL子查詢操作實(shí)例詳解

    MySQL子查詢操作實(shí)例詳解

    這篇文章主要介紹了MySQL子查詢操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql表的創(chuàng)建、常見子查詢運(yùn)算與關(guān)鍵字使用技巧,需要的朋友可以參考下
    2018-06-06
  • MySQL索引事務(wù)詳細(xì)解析

    MySQL索引事務(wù)詳細(xì)解析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫索引事務(wù),索引是為了加速對表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散的存儲結(jié);事物是屬于計(jì)算機(jī)中一個很廣泛的概念,一般是指要做的或所做的事情,下面我們就一起進(jìn)入文章了解具體內(nèi)容吧
    2022-01-01
  • 一文分享10個常用的MySQL高級用法

    一文分享10個常用的MySQL高級用法

    MySQL?有很多高級但實(shí)用的功能,能讓你的查詢變得更簡潔、更高效,今天分享?10?個我在工作中經(jīng)常使用的?SQL?技巧,不用死記硬背,掌握了就能立刻提升你的數(shù)據(jù)庫操作水平
    2025-12-12
  • MySQL的UPPER函數(shù)最佳實(shí)踐

    MySQL的UPPER函數(shù)最佳實(shí)踐

    本文詳細(xì)介紹了MySQL的UPPER函數(shù),包括其語法、應(yīng)用場景、性能優(yōu)化和注意事項(xiàng),UPPER函數(shù)用于將字符串中的小寫字母轉(zhuǎn)換為大寫,適用于數(shù)據(jù)一致性、查詢優(yōu)化和數(shù)據(jù)標(biāo)準(zhǔn)化等場景,在使用時,應(yīng)注意索引策略和性能優(yōu)化,以確保高效處理,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Workbench通過遠(yuǎn)程訪問mysql數(shù)據(jù)庫的方法詳解

    Workbench通過遠(yuǎn)程訪問mysql數(shù)據(jù)庫的方法詳解

    這篇文章主要給大家介紹了Workbench通過遠(yuǎn)程訪問mysql數(shù)據(jù)庫的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • mysql 修改用戶密碼圖文介紹

    mysql 修改用戶密碼圖文介紹

    有許多朋友經(jīng)常需要修改mysql修改用戶密碼,今天提供圖文并茂來解決此類問題,需要的朋友可以參考下
    2012-11-11

最新評論

富民县| 崇州市| 平阴县| 周宁县| 清丰县| 威宁| 山阴县| 晋宁县| 呼玛县| 察隅县| 金湖县| 洛扎县| 介休市| 广饶县| 乐至县| 土默特左旗| 方城县| 威远县| 额济纳旗| 盐池县| 辽中县| 安化县| 兴义市| 靖边县| 平谷区| 保康县| 琼中| 东源县| 太谷县| 庄河市| 铁岭县| 灵川县| 高邑县| 右玉县| 五台县| 白城市| 上思县| 益阳市| 湖口县| 中山市| 广昌县|