《Mysql應(yīng)用MySQL存儲過程中的基本函數(shù)和觸發(fā)器的相關(guān)學(xué)習(xí)教程》要點(diǎn):
本文介紹了Mysql應(yīng)用MySQL存儲過程中的基本函數(shù)和觸發(fā)器的相關(guān)學(xué)習(xí)教程,希望對您有用。如果有疑問,可以聯(lián)系我們。
MySQL存儲過程的常用函數(shù)MYSQL學(xué)習(xí)
一.字符串類
CHARSET(str) //返回字串字符集
CONCAT (string2 [,... ]) //連接字串
INSTR (string ,substring ) //返回substring首次在string中出現(xiàn)的位置,不存在返回0
LCASE (string2 ) //轉(zhuǎn)換成小寫
LEFT (string2 ,length ) //從string2中的左邊起取length個字符
LENGTH (string ) //string長度
LOAD_FILE (file_name ) //從文件讀取內(nèi)容
LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定開始位置
LPAD (string2 ,length ,pad ) //重復(fù)用pad加在string開頭,直到字串長度為length
LTRIM (string2 ) //去除前端空格
REPEAT (string2 ,count ) //重復(fù)count次
REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
RPAD (string2 ,length ,pad) //在str后用pad補(bǔ)充,直到長度為length
RTRIM (string2 ) //去除后端空格
STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,
SUBSTRING (str , position [,length ]) //從str的position開始,取length個字符,
注:mysql中處理字符串時,默認(rèn)第一個字符下標(biāo)為1,即參數(shù)position必須大于等于1
MYSQL學(xué)習(xí)
mysql> select substring('abcd',0,2);
+-----------------------+ | substring('abcd',0,2) | +-----------------------+ | | +-----------------------+ 1 row in set (0.00 sec) mysql> select substring('abcd',1,2); +-----------------------+ | substring('abcd',1,2) | +-----------------------+ | ab | +-----------------------+ 1 row in set (0.02 sec)
TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
UCASE (string2 ) //轉(zhuǎn)換成大寫
RIGHT(string2,length) //取string2最后length個字符
SPACE(count) //生成count個空格MYSQL學(xué)習(xí)
二.數(shù)學(xué)類MYSQL學(xué)習(xí)
ABS (number2 ) //絕對值
BIN (decimal_number ) //十進(jìn)制轉(zhuǎn)二進(jìn)制
CEILING (number2 ) //向上取整
CONV(number2,from_base,to_base) //進(jìn)制轉(zhuǎn)換
FLOOR (number2 ) //向下取整
FORMAT (number,decimal_places ) //保留小數(shù)位數(shù)
HEX (DecimalNumber ) //轉(zhuǎn)十六進(jìn)制
注:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX('DEF')返回4142143
也可以傳入十進(jìn)制整數(shù),返回其十六進(jìn)制編碼,如HEX(25)返回19
LEAST (number , number2 [,..]) //求最小值
MOD (numerator ,denominator ) //求余
POWER (number ,power ) //求指數(shù)
RAND([seed]) //隨機(jī)數(shù)
ROUND (number [,decimals ]) //四舍五入,decimals為小數(shù)位數(shù)]
注:返回類型并非均為整數(shù),如:
(1)默認(rèn)變?yōu)檎沃?br>MYSQL學(xué)習(xí)
mysql> select round(1.23);
+-------------+ | round(1.23) | +-------------+ | 1 | +-------------+ 1 row in set (0.00 sec) mysql> select round(1.56); +-------------+ | round(1.56) | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)
(2)可以設(shè)定小數(shù)位數(shù),返回浮點(diǎn)型數(shù)據(jù)
MYSQL學(xué)習(xí)
mysql> select round(1.567,2);
+----------------+ | round(1.567,2) | +----------------+ | 1.57 | +----------------+ 1 row in set (0.00 sec)
SIGN (number2 ) //返回符號,正負(fù)或0
SQRT(number2) //開平方MYSQL學(xué)習(xí)
三.日期時間類MYSQL學(xué)習(xí)
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉(zhuǎn)換時區(qū)
CURRENT_DATE ( ) //當(dāng)前日期
CURRENT_TIME ( ) //當(dāng)前時間
CURRENT_TIMESTAMP ( ) //當(dāng)前時間戳
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 ( ) //當(dāng)前時間
SEC_TO_TIME (seconds ) //秒數(shù)轉(zhuǎn)成時間
STR_TO_DATE (string ,format ) //字串轉(zhuǎn)成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉(zhuǎn)秒數(shù)]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分MYSQL學(xué)習(xí)
附:可用在INTERVAL中的類型
DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEARMYSQL學(xué)習(xí)
?MySql存儲過程和觸發(fā)器
1.創(chuàng)建存儲過程
MYSQL學(xué)習(xí)
DELIMITER // DROP PROCEDURE IF EXISTS `PROC_TEST`// CREATE PROCEDURE `PROC_TEST`(TABLE_NAME VARCHAR(20),NUM INT) BEGIN SELECT * FROM TABLE_NAME LIMIT NUM; END// DELIMITER ;
調(diào)用存儲過程:
MYSQL學(xué)習(xí)
CALL PROC_TEST('USER',20);
刪除存儲過程:MYSQL學(xué)習(xí)
DROP PROCUDURE productpricing
2.創(chuàng)建觸發(fā)器
~~語法~~
CREATE TRIGGER <觸發(fā)器名稱> --觸發(fā)器必須有名字,最多64個字符,可能后面會附有分隔符.它和MySQL中其他對象的命名方式基本相象.
{ BEFORE | AFTER } --觸發(fā)器有執(zhí)行的時間設(shè)置:可以設(shè)置為事件發(fā)生前或后.
{ INSERT | UPDATE | DELETE } --同樣也能設(shè)定觸發(fā)的事件:它們可以在執(zhí)行insert、update或delete的過程中觸發(fā).
ON <表名稱> --觸發(fā)器是屬于某一個表的:當(dāng)在這個表上執(zhí)行插入、 更新或刪除操作的時候就導(dǎo)致觸發(fā)器的激活. 我們不能給同一張表的同一個事件安排兩個觸發(fā)器.
FOR EACH ROW --觸發(fā)器的執(zhí)行間隔:FOR EACH ROW子句通知觸發(fā)器 每隔一行執(zhí)行一次動作,而不是對整個表執(zhí)行一次.
<觸發(fā)器SQL語句> --觸發(fā)器包含所要觸發(fā)的SQL語句:這里的語句可以是任何合法的語句, 包括復(fù)合語句,但是這里的語句受的限制和函數(shù)的一樣.MYSQL學(xué)習(xí)
--你必須擁有相當(dāng)大的權(quán)限才能創(chuàng)建觸發(fā)器(CREATE TRIGGER),如果你已經(jīng)是Root用戶,那么就足夠了.這跟SQL的標(biāo)準(zhǔn)有所不同.
?
創(chuàng)建觸發(fā)器:t_afterinsert_on_tab1
?
作用:增加tab1表記錄后自動將記錄增加到tab2表中
?
MYSQL學(xué)習(xí)
DROP TRIGGER IF EXISTS `t_afterinsert_on_tab1`; CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON `tab1` FOR EACH ROW BEGIN insert into tab2(tab2_id) values(new.tab1_id); END;
創(chuàng)建觸發(fā)器:t_afterdelete_on_tab1
作用:刪除tab1表記錄后自動將tab2表中對應(yīng)的記錄刪去
MYSQL學(xué)習(xí)
DROP TRIGGER IF EXISTS `t_afterdelete_on_tab1`; CREATE TRIGGER `t_afterdelete_on_tab1` AFTER DELETE ON `tab1` FOR EACH ROW BEGIN delete from `tab2` where tab2_id=old.tab1_id; END;
刪除觸發(fā)器:
?
MYSQL學(xué)習(xí)
DROP TRIGGER [schema_name.]trigger_name;
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5957.html