Mysql sql的系統變數和自定義變數

2021-09-11 02:55:43 字數 3763 閱讀 9232

#sql的變數

系統變數:是資料庫系統自己提供的

全域性變數global 開啟任何客戶端 都有效

會話變數session 針對乙個會話或一次連線

自定義變數:

使用者變數

區域性變數

#一、系統變數

說明:變數有系統提供,不是使用者定義,屬於伺服器層面

注意:如果時全域性級別,則需加global,如果是回話級別,則需加session,如果不寫則預設為session。

使用語法:

1、檢視所有的系統變數

show global|【session】 variables; #session不寫也是檢視會話變數

2、檢視滿足條件的部分系統變數

show global|【session】 variables like '%char%';

3、檢視指定的某個系統變數的值

select @@系統變數名

select @@global|【session】.系統變數名;

4、為某個系統變數賦值

方式一set global|【session】系統變數名=值;

方式二set @@global|【session】.系統變數名=值;

#1.》全域性變數

#ⅰ.檢視所有的全域性變數

show global variables;全域性變數global

#ⅱ.檢視部分的全域性變數

show global variables like '%char%'; 系統字符集

#ⅲ.檢視指定的全域性變數的值

開啟新的連線  檢視自動提交依然有效

#2》會話變數

作用域:僅僅針對當前會話(連線)有效

#ⅰ.檢視所有的會話變數

show session variables;會話變數session

show variables;

#ⅱ.檢視部分的會話變數

show session variables like '%char%';

show variables like '%char%';

#ⅲ.檢視指定的會話變數的值

select @@autocommit;

select @@session.tx_isolation;

#ⅳ.為某個指定的全域性變數賦值

方式一:

set @@session.tx_isolation='read-uncommitted';

set @@tx_isolation='read-uncommitted';

方式二:

set session tx_isolation='read-committed';

而會話變數更改 開啟新的連線  檢視隔離級別更改無效

#二、自定義變數

說明:變數是使用者定義的,不是由系統的

使用步驟:

宣告賦值

使用(檢視、比較、運算等)

#1.使用者變數

作用域:針對於當前會話(連線)有效,同於會話變數的作用域

應用在任何地方,運用在begin end裡面或begin ene外面

賦值的操作符:=或:= select方式只能用:=進行賦值

#ⅰ.宣告並初始化

set @使用者變數名=值;

set @使用者變數名:=值;

select @使用者變數名:=值;

#ⅱ.賦值(更新使用者變數的值)

方式一:通過set或select

set @使用者變數名=值;

set @使用者變數名:=值;

select @使用者變數名:=值;

方式二:通過select into

select 字段 into @變數名 #欄位必須是乙個值

from 表;

#ⅲ.使用(檢視使用者變數的值)

select @使用者變數名;

#案例:

#1.宣告初始化變數

set @name='kobe';

set @name=123;

#2.賦值變數

select count(*) into @count

from employees;

#3.檢視變數

select @count;

#2、區域性變數

作用域:僅僅在定義它的begin end中有效

應用在 begin end中的第一句話!!!

#ⅰ.宣告

declare 變數名 型別;

declare 變數名 型別 default 值;

#ⅱ.賦值

方式一:通過set或select

set 區域性變數名=值;

set 區域性變數名:=值;

select @區域性變數名:=值;

方式二:通過select into

select 字段 into 區域性變數名 #欄位必須是乙個值

from 表;

#ⅲ.使用

select 區域性變數;

對比使用者變數和區域性變數:

作用域                        定義和使用的位置                                        語法

使用者變數     當前會話                    會話中的任何地方                                       必須加@符號,不用限定型別

區域性變數     begin end 中           只能在begin end中,且為第一句話         一般不用加@符號,需要限定型別

#案例:宣告兩個變數並賦初始值,求和,並列印

#1.使用者變數

set @m:=1;

set @n:=2;

set @sum := @m+@n;

select @sum;

#2.區域性變數 下面語法報錯 放在begin end

declare m int default 1;

declare n int default 2;

declare sum int;

set sum=m+n;

select sum;

mysql sql語句中變數的使用

有乙個表,其中一列是城市 city 一列是人的姓名 personname 怎麼獲取每個城市中任意兩個人?ddl如下 table structure for myperson drop table ifexists myperson create table myperson id int 11 no...

mysql sql 用in和or的區別

做資料對比,千萬級別資料 sql語句中 in和or的區別為 來操作不同 適合不同 執行效率不同。一 操作不同 1 in in是把父查詢表和子自查詢表作hash連線。2 or or是對父查詢表作loop迴圈,每次loop迴圈再對子查詢表進行查詢。二 適合不同5261 1 in in適合用於子查詢表資料...

變數的自增 自減 自乘 自除

1.自增 自減 自乘 自除是乙個變數在原有值基礎上再增加 減去 乘以 除以乙個指定的值。通常用在迴圈語句中改變變數的值。2.自增 l 先加1 i 1 int i 0 i i 1 整數自增1 2 string s hello s s world 字串自增 3 自增1 的簡寫形式 i 先 1 再進行其他...