自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL觸發(fā)器應(yīng)用與其存儲(chǔ)過(guò)程的實(shí)際操作

數(shù)據(jù)庫(kù) MySQL
今天我們主要向大家描述的是MySQL觸發(fā)器的實(shí)際應(yīng)用與其存儲(chǔ)過(guò)程的實(shí)際操作,以下就是文章的詳細(xì)內(nèi)容描述,望你看完會(huì)有所收獲。

以下的文章主要描述的是MySQL觸發(fā)器的實(shí)際應(yīng)用與其存儲(chǔ)過(guò)程的實(shí)際操作,以下的文章將會(huì)給你提供相應(yīng)的詳細(xì)方案講解,以下就是相關(guān)內(nèi)容的具體描述。希望會(huì)給你帶來(lái)一些幫助在此方面。

觸發(fā)器:

MySQL數(shù)據(jù)庫(kù)創(chuàng)建觸發(fā)器的格式如下:

create trigger <觸發(fā)器名稱(chēng)>

{ before | after}

 

{insert | update | delete}

 

on <表名>

 

for each row

 

<觸發(fā)器SQL語(yǔ)句>

 

 

<觸發(fā)器SQL語(yǔ)句>:觸發(fā)器要執(zhí)行的SQL語(yǔ)句,如果該觸發(fā)器要執(zhí)行多條SQL語(yǔ)句,要將多條語(yǔ)句放在begin…end塊中。

Show triggers 顯示所有的觸發(fā)器信息!

 

存儲(chǔ)過(guò)程:

 

創(chuàng)建 

  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `test`.`outprint`$$  
  3. CREATE PROCEDURE print1(out a varchar(100))  
  4. BEGIN  
  5. select name from info into a;  
  6. END$$  
  7. DELIMITER ;  

調(diào)用

  1. Call print1(@c);  
  2. Select @c;  

注意

這樣傳值只能查找一個(gè)值賦給a

Select * from info into a就錯(cuò)了

Show create {procedure | function } 名字

 

查看存儲(chǔ)過(guò)程和函數(shù)

 

Drop {procedure | function} [if exists] 名字

 

Alter {procedure | function} 名字

 

 

注意:通過(guò) begin end 可以來(lái)包含多個(gè)語(yǔ)句,每個(gè)語(yǔ)句以“;”結(jié)尾。

 

 

創(chuàng)建插入

  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `test`.`insert_info`$$  
  3. CREATE DEFINER=`root`@`%` PROCEDURE `insert_info`(in id int(5),in name varchar(50),in age int(5))  
  4. begin  
  5. insert into info values (id,name,age);  
  6. end$$  
  7. DELIMITER ;  

調(diào)用

 

  1. call insert_info(2,'rrr',56); 

 

創(chuàng)建插入輸出(驗(yàn)證密碼用)

 

  1. Delimiter $$   
  2. Create procedure validateuser  
  3. (in username varchar(20),out param1 varchar(100))   
  4. Begin   
  5. Select Pwd into param1 from welefen.user   
  6. where Name=username;   
  7. End $$ 

 

調(diào)用

 

 

  1. call check1('sss',@pw);  
  2. select @pw; 

驗(yàn)證角谷猜想

 

角谷猜想:給定一個(gè)整數(shù)x,若x%2=1,則x=3*x+1,

 

否則x=x/2,

 

如此循環(huán)下去

 

,經(jīng)過(guò)有限步驟必 能得到1。

 

例如: 初始整數(shù)為9 則

 

9->28->14->7->22->11->34->17->52->26

 

->13->40->20->10->5->16->8->4->2->1

 

為了說(shuō)明存儲(chǔ)過(guò)程語(yǔ)法的應(yīng)用,存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)它:

 

創(chuàng)建存儲(chǔ)過(guò)程:

  1. delimiter $$  
  2. drop procedure if exists jgguess$$  
  3. create procedure jgguess(in number int)   
  4. begin   
  5. declare param1 int default 1;   
  6. set @a=concat(number);   

jiaogu:loop #循環(huán)開(kāi)始

set param1=number%2;

if param1=1 then set number=number*3+1; #number 為奇數(shù),將它乘3加 1

else set number=number/2;

end if;

set @a=concat(@a,'->',number);

if number>1 then iterate jiaogu; #number 不為 1,繼續(xù)循環(huán)

else

leave jiaogu; #退出循環(huán)

  1. end if;  
  2. end loop jiaogu;   
  3. end $$   
  4. delimiter ;  

 

調(diào)用:

  1. call jgguess(9);  
  2. select @a;  

 

 

以上的相關(guān)內(nèi)容就是對(duì)MySQL中觸發(fā)器和存儲(chǔ)過(guò)程的介紹,望你能有所收獲。

 

【編輯推薦】

  1. MySQL觸發(fā)器如何正確使用
  2. MySQL修改root密碼并不難
  3. 恢復(fù)MySQL數(shù)據(jù)庫(kù)root密碼2方案
  4. MySQL數(shù)據(jù)表中字段的批量修改與復(fù)制
  5. MySQL查詢(xún)優(yōu)化的5個(gè)好用方法

 

責(zé)任編輯:佚名 來(lái)源: 博客園
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)