一、基本語法
1.創建
create procedure sp_name()
begin
………
end
2.調用
call sp_name()
3.刪除
drop procedure sp_name
4.顯示數據庫中所有存儲的存儲過程基本信息,包括所屬數據庫,存儲過程名稱,創建時間等
show procedure status
5.顯示某一個存儲過程的詳細信息
show create procedure sp_name
6.區塊定義
begin
……
end;
#也可以給區塊起別名,如:
lable:begin
………..
end lable;
#可以用leave lable;跳出區塊,執行區塊以後的代碼
7.條件語句
if 條件 then
statement
else
statement
end if;
8.循環語句
while:
[label:] WHILE expression DO
statements
END WHILE [label] ;
loop:
[label:] LOOP
statements
END LOOP [label];
repeat until:
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;
二、運算符
算術運算符
+ 加 SET var1=2+2; 4
- 減 SET var2=3-2; 1
* 乘 SET var3=3*2; 6
/ 除 SET var4=10/3; 3.3333
DIV 整除 SET var5=10 DIV 3; 3
% 取模 SET var6=10%3 ; 1
比較運算符
> 大於 1>2 False
< 小於 2<1 False
<= 小於等於 2<=2 True
>= 大於等於 3>=2 True
BETWEEN 在兩值之間 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在兩值之間 5 NOT BETWEEN 1 AND 10 False
IN 在集合中 5 IN (1,2,3,4) False
NOT IN 不在集合中 5 NOT IN (1,2,3,4) True
= 等於 2=3 False
<>, != 不等於 2<>3 False
< => 嚴格比較兩個NULL值是否相等 NULL< =>NULL True
LIKE 簡單模式匹配 “Guy Harrison” LIKE “Guy%” True
REGEXP 正則式匹配 “Guy Harrison” REGEXP “[Gg]reg” False
IS NULL 為空 0 IS NULL False
IS NOT NULL 不為空 0 IS NOT NULL True
邏輯運算符
與(AND)
或(OR)
異或(XOR)
位運算符
| 位或
& 位與
< < 左移位
>> 右移位
~ 位非(單目運算,按位取反)
三、MYSQL基本函數
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個字符,
注:mysql中處理字符串時,默認第一個字符下標為1,即參數position必須大於等於1
TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) #去除指定位置的指定字符
UCASE (string2 ) #轉換成大寫
RIGHT(string2,length) #取string2最後length個字符
SPACE(count) #生成count個空格
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為小數位數]
SIGN (number2 ) #返回符號,正負或0
SQRT(number2) #開平方
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) #分
附:可用在INTERVAL中的類型
DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR