国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中的變量 流程控制與游標咋用

2024-07-24 12:33:42
字體:
來源:轉載
供稿:網友
  今天小編給大家分享一下MySQL中的變量、流程控制與游標怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
  
  1. 變量
  在MySQL數據庫的存儲過程和函數中,可以使用變量來存儲查詢或計算的中間結果數據,或者輸出最終的結果數據。
 
  在 MySQL 數據庫中,變量分為系統變量以及用戶自定義變量。【相關推薦:mysql視頻教程】
 
  1.1 系統變量
  1.1.1 系統變量分類
  變量由系統定義,不是用戶定義,屬于服務器層面。啟動MySQL服務,生成MySQL服務實例期間,MySQL將為MySQL服務器內存中的系統變量賦值,這些系統變量定義了當前MySQL服務實例的屬性、特征。這些系統變量的值要么是編譯MySQL時參數的默認值,要么是配置文件(例如my.ini等)中的參數值。大家可以通過網址 https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html 查看MySQL文檔的系統變量。
 
  全局系統變量針對于所有會話(連接)有效,但不能跨重啟
  會話系統變量僅針對于當前會話(連接)有效。會話期間,當前會話對某個會話系統變量值的修改,不會影響其他會話同一個會話系統變量的值。
  會話1對某個全局系統變量值的修改會導致會話2中同一個全局系統變量值的修改。
  在MySQL中有些系統變量只能是全局的,例如 max_connections 用于限制服務器的最大連接數;有些系統變量作用域既可以是全局又可以是會話,例如 character_set_client 用于設置客戶端的字符集;有些系統變量的作用域只能是當前會話,例如 pseudo_thread_id 用于標記當前會話的 MySQL 連接 ID。
 
  1.1.2 查看系統變量
  查看所有或部分系統變量
  #查看所有全局變量
  SHOW GLOBAL VARIABLES;
  
  SELECT @@變量名;
  修改系統變量的值
  有些時候,數據庫管理員需要修改系統變量的默認值,以便修改當前會話或者MySQL服務實例的屬性、特征。具體方法:
 
  方式1:修改MySQL配置文件,繼而修改MySQL系統變量的值(該方法需要重啟MySQL服務)
 
  方式2:在MySQL服務運行期間,使用“set”命令重新設置系統變量的值
 
  #為某個系統變量賦值
  #方式1:
  SET @@global.變量名=變量值;
  #方式2:
  SET GLOBAL 變量名=變量值;
 
 
  #為某個會話變量賦值
  #方式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;
  1.2 用戶變量
  1.2.1 用戶變量分類
  用戶變量是用戶自己定義的,作為 MySQL 編碼規范,MySQL 中的用戶變量以一個“@”開頭。根據作用范圍不同,又分為會話用戶變量和局部變量。
 
  會話用戶變量:作用域和會話變量一樣,只對當前連接會話有效。
  局部變量:只在 BEGIN 和 END 語句塊中有效。局部變量只能在存儲過程和函數中使用。
  1.2.2 會話用戶變量
  變量的定義
  #方式1:“=”或“:=”
  SET @用戶變量 = 值;
  SET @用戶變量 := 值;
 
  #方式2:“:=” 或 INTO關鍵字
  SELECT @用戶變量 := 表達式 [FROM 等子句];
  SELECT 表達式 INTO @用戶變量  [FROM 等子句];
  查看用戶變量的值 (查看、比較、運算等)
  SELECT @用戶變量
  舉例
  SET @a = 1;
 
  SELECT @a;
  SELECT @num := COUNT(*) FROM employees;
 
  SELECT @num;
  SELECT AVG(salary) INTO @avgsalary FROM employees;
 
  SELECT @avgsalary;
  SELECT @big;  #查看某個未聲明的變量時,將得到NULL值

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁国市| 茶陵县| 牡丹江市| 肇东市| 仙桃市| 曲沃县| 成安县| 瓦房店市| 赤峰市| 招远市| 常德市| 仁化县| 元朗区| 泰安市| 霍邱县| 富锦市| 阿坝| 西畴县| 呼伦贝尔市| 阿合奇县| 天祝| 宣武区| 富顺县| 财经| 开化县| 金乡县| 新田县| 京山县| 元江| 宜宾县| 恩平市| 东至县| 明水县| 酉阳| 疏勒县| 忻城县| 肃南| 阜城县| 南靖县| 滕州市| 商丘市|