儲存過程和函式是事先經過編譯並儲存在資料庫中的一段sql語句的 集合。
使用好處:
1、簡化應用開發人員的很多任務作2、減少資料在資料庫和應用伺服器之間的傳輸
3、提高了資料處理的效率
變數
系統變數:
全域性變數
會話變數
自定義變數:
使用者變數
區域性變數
一、系統變數
說明:變數由系統提供,不是使用者定義,屬於伺服器層面
使用的語法:
1、檢視所有的系統變數
show variables;
global/session
2、檢視滿足條件的部分系統變數
show global|【session】 variables like '%char%';
3、檢視指定的某個系統變數的值
select @@ global|session.系統變數名
4、為某個系統變數賦值
方式一:
set 系統變數名 = 值;
方式二:
set global|session.系統變數名 = 值;
如果是全域性級別,則需要加global;
如果是會話級別,則需要加session
預設session
檢視所有全域性變數
show global variables;
二、區域性變數
使用者變數:也稱全域性變數,要加@
set @bname = 10;
區域性變數:不用加@
set a = 20;
儲存過程:
含義:一組預先編譯好的sql語句的集合,理解成批處理語句
1、提高**的重用性
2、簡化操作
3、減少編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率
一、建立語法
create procedure 儲存過程名(引數列表)
begin
方法體,儲存過程題(一組合法的sql語句)
end注意:
1、引數列表包含三部分
引數模式 引數名 引數型別
舉例:in stuname varchar(20)
引數模式:
in:該引數可以作為輸入,也就是該引數需要呼叫方傳入值
out:該引數可以作為輸出,也就是該引數可以作為返回值
inout:該引數既可以作為輸入,又可以作為輸出。
2、如果儲存過程體僅僅只有一句話,begin end可以省略
儲存過程體中的每條sql語句結尾要求必須加分號。
儲存過程的結尾可以使用 delimiter 重新設定
語法:delimiter 結束標記
案例:delimiter $
二、呼叫語法
call 儲存過程名(實參列表);
1.空參列表
案例 插入到admin表中5條記錄
use girls;
select * from admin;
delimiter $
create procedure myp1()
begin
insert into admin(username,password) values('john1','0000'),
('jack','0000');
end $
呼叫:call myp1()$
記住,上述語句在命令列使用。
2.建立帶in模式引數的儲存過程
案例一:建立儲存過程實現,根據女神名,查詢對應的男神資訊
create procedure myp4(in beautyname varchar(20))
begin
select bo.*
from boys bo
right join beauty b
on bo.id = b.boyfriend_id
where b.name = beautyname;
end $
帶out模式的儲存過程
案例1 根據女神名,返回對應的男神名
create procedure myp3(in beautyname varchar(20),out boyname varchar(20))
begin
select bo.boyname
from boys bo
inner join beauty b on bo,id = b.borfriend_id
where b,name = beautyname;
end$
呼叫set @bname$
call myp5('小昭',@bname)$
select @bname$
建立帶inout模式引數的儲存過程
案例1 傳入a\b兩個值,最終a b都翻倍並返回
create procedure myp3(inout a int,inout b int)
begin
set a = a*2;
set b = b*2;
end$
set @m = 10$
set @n = 20$
call myp3(@m,@n)$
函式
create function 函式名(引數列表)
returns 返回型別
begin
函式體return 值;
end注意:
引數列表包含兩部分:
引數名 引數型別
函式體:肯定會有return 語句,如果沒有 會報錯
如果return語句沒有放在函式體的最後 也不會報錯,但不建議
當函式體中僅有一句話,則可以省略begin end
使用delimiter語句設定結束標記
delimiter $;
二、呼叫語法
不是用call
而是用select
select 函式名(引數列表)
案例:1.無參有返回 返回公司的員工個數
create function myf1() returns int
begin
declare c int default 0;
select count(*) into c
from employees;
return c;
end $
select myf1() $
mysql過程函式 mysql 儲存過程和函式
乙個儲存程式是可以被儲存在伺服器中的一套sql語句。可以通過客戶端用create procedure和create function 建立乙個儲存過程或函式。在客戶端通過call語句 呼叫所建立的存數過程或函式。語法 建立儲存子程式 create procedure sp name proc par...
MYSQL基礎十 儲存過程
mysql命令的執行流程 sql語句 mysql引擎 分析 語法正確 可識別命令 執行 執行結果 返回 儲存過程是sql語句和控制語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程的意義在於省略了分析和識別命令的過程,直接得到結果。因此大大的節省了編譯時間。效率是很高的。儲存過程的優點 增...
mysql 儲存過程基礎 MySQL基礎 儲存過程
儲存過程 定義 將一批為了完成特定功能的sql語句集,根據傳入的引數 也可沒有 呼叫,完成單個sql語句更複雜的功能 儲存過程思想很簡單,就是sql語句層面上的 封裝和重用 優點 1 可封裝,並隱藏複雜的業務邏輯 2 可回傳值,且可接受引數 缺點 因支援的程式語言不通,效能調校和撰寫,受限於各種資料...