Mysql 2 視圖、函數、存儲過程和觸發器


第一部分、視圖

視圖保存的是一段select查詢語句,不保存實際數據,視圖可以被當成一張表來查看,也可以增刪改,會直接操作到原來的表上(只限於涉及單表的視圖)。

視圖保存的是創建時的狀態,如果修改了原表,視圖不變動,但是如果刪除某個字段,視圖會報錯。

create view v_name as select * from students;
select * from v_name;
drop view v_name;

 

第二部分、函數

函數就是用來對數據進行一些操作的函數。

一、操作符

between .. and ...
is null
in (xx,xx,xx)

二、常用函數

greatest(10,20)  # 返回最大值
isnull(10)  # 是否為null
substring(str, 2, 3)  # 截取字符串從第二位開始的3位字符
char_length(str)  # 返回字符串長度
concat(str1, str2, str3)  # 拼接字符串
concat_ws(',', str1, str2)  # 用,拼接字符串
insert(str, 3, 4, xx)  # 將3-4為用xx替代
instr(str, xx)  # 第一次出現xx的位置
lower(xx)
ltrim(xx)  # 去除左邊的空白
repeat(xx, 3)  # 重復三次
replace(xx, xx, xx)  # 替換

三、邏輯語句

if(xx1, xx2, xx3)  # 如果xx1為true則返回xx2,否則返回xx3
ifnull(xx, str)  # 如果xx為null則返回str
case gender when 1 then 'male' else 'female' end;

四、自定義函數

delimiter //
create function xxx(s CHAR(32)) RETURNS CHAR(32)
begin
RETURN concat('hello', s); end //
delimiter ;

 

第三部分、存儲過程

存儲過程保存一段sql語句,通過call調用

delimiter //
create procedure xxx(IN param1 int, OUT param2 int)
begin
select count(*) INTO param2 from xxx where xx>param1;
end //
delimiter ;

declare用來定義內部變量,但是只允許出現在begin后的第一行。

delimiter //
create procedure xxx(sid INT)
begin
declare x default 10;
declare xname, xgender;
select sname, gender INTO xname, xgender from xxx where sid=x;
end //
delimiter ;

 

第四部分、觸發器

觸發器就是讓mysql取監聽某個事件,當發生這個事件時就執行某些命令。

DELIMITER ;;
create trigger trigger_name before/after insert on tablename for each row
begin
   xxxx
end;
DELIMITER ;

 

第五部分、流程控制語句

一、if

if m > n then set s = '>';
elseif m = n then set s = '=';
else set s = '<';
end if;

二、case

方式一
case gender when 0 then 'male' when 1 then 'female' end case;

方式二
case when gender=0 then 'male' when gender != 0 then 'female' end case;

三、while

while xx do
    xxxx;
end while;

四、repeat

repeat
    xxxx;
until xxxx end repeat;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM