my sql存儲過程學習總結

1、存儲過程基本語法:
create procedure sp_name()
begin
……
end;


2、如何調用:
call sp_name();


3、刪除存儲過程:隻能在一個存儲過程中調用另外一個存儲過程,不能刪除
drop procedure sp_name;


4、區塊,可以給區塊取名
begin
……
end;


lable begin
……
end lable;


5、if循環
if 條件 then
……
else
……
end if;


6、三種循環
(1)while循環
while 條件 do
……
end while;
(2)loop循環
CREATE PROCEDURE myProc()
BEGIN
     DECLARE i int;
     SET i=0;
     loop1: LOOP
          SET i=i+1;
          IF i>=10 THEN         
               LEAVE loop1;
          ELSEIF MOD(i,2)=0 THEN
               ITERATE loop1;
          END IF;
          SELECT CONCAT(i,” is an odd number”);
  END LOOP loop1;
END;
(3)repeat util循環
repeat
……
util 條件
end repeat;


7、常用命令
a、show procedure status; — 顯示所有存儲過程詳細信息
b、show create procedure sp_name; –顯示指定名稱存儲過程的詳細信息
c、leave loop_name; –跳出loop循環
d、iterate loop_name; –循環loop循環



8、基本函數
(1)、字符串類
(註:mysql中處理字符串時,默認第一個字符下標為1,即參數position必須大於等於1)
CHARSET(str) //返回字符編碼
CONCAT (string2  [,… ]) //連接字串
INSTR (string ,substring ) //返回substring首次在string中出現的位置,不存在返回0
LCASE (string2 ) //轉換成小寫
LEFT (string2 ,length ) //從string2中的左邊起取length個字符
LENGTH (string ) //string長度
LOAD_FILE (file_name ) //從文件讀取內容
LOCATE (substring , string  [,start_position ] ) 同INSTR,但可指定開始位置
LPAD (string2 ,length ,pad ) //重復用pad加在string開頭,直到字串長度為length
LTRIM (string2 ) //去除前端空格
REPEAT (string2 ,count ) //重復count次
REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
RPAD (string2 ,length ,pad) //在str後用pad補充,直到長度為length
RTRIM (string2 ) //去除後端空格
STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,
SUBSTRING (str , position  [,length ]) //從str的position開始,取length個字符
(2)、數學類
ABS (number2 ) //絕對值
BIN (decimal_number ) //十進制轉二進制
CEILING (number2 ) //向上取整
CONV(number2,from_base,to_base) //進制轉換
FLOOR (number2 ) //向下取整
FORMAT (number,decimal_places ) //保留小數位數
HEX (DecimalNumber ) //轉十六進制
註:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX(‘DEF’)返回4142143
也可以傳入十進制整數,返回其十六進制編碼,如HEX(25)返回19
LEAST (number , number2  [,..]) //求最小值
MOD (numerator ,denominator ) //求餘
POWER (number ,power ) //求指數
RAND([seed]) //隨機數
ROUND (number  [,decimals ]) //四舍五入,decimals為小數位數]
(3)、日期時間類
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區
CURRENT_DATE (  ) //當前日期
CURRENT_TIME (  ) //當前時間
CURRENT_TIMESTAMP (  ) //當前時間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間
DATEDIFF (date1 ,date2 ) //兩個日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name  FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串
MONTHNAME (date ) //英文月份名
NOW (  ) //當前時間
SEC_TO_TIME (seconds ) //秒數轉成時間
STR_TO_DATE (string ,format ) //字串轉成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉秒數]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時
LAST_DAY(date) //date的月的最後日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分

發佈留言