程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL存儲進程中的根本函數和觸發器的相干進修教程

MySQL存儲進程中的根本函數和觸發器的相干進修教程

編輯:MySQL綜合教程

MySQL存儲進程中的根本函數和觸發器的相干進修教程。本站提示廣大學習愛好者:(MySQL存儲進程中的根本函數和觸發器的相干進修教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL存儲進程中的根本函數和觸發器的相干進修教程正文


MySQL存儲進程的經常使用函數

一.字符串類
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

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 ) //轉換成年夜寫
RIGHT(string2,length) //取string2最初length個字符
SPACE(count) //生成count個空格

二.數學類

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為小數位數]
注:前往類型並不是均為整數,如:
(1)默許變成整形值

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)可以設定小數位數,前往浮點型數據

mysql> select round(1.567,2);
+----------------+
| round(1.567,2) |
+----------------+
| 1.57 |
+----------------+
1 row in set (0.00 sec)

SIGN (number2 ) //前往符號,正負或0
SQRT(number2) //開平方


三.日期時光類

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

 MySql存儲進程和觸發器
1.創立存儲進程

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 ;

挪用存儲進程:

CALL PROC_TEST('USER',20);

刪除存儲進程:

DROP PROCUDURE productpricing

2.創立觸發器
~~語法~~
CREATE TRIGGER <觸發器稱號> --觸發器必需著名字,最多64個字符,能夠前面會附有分隔符.它和MySQL中其他對象的定名方法根本相象.
{ BEFORE | AFTER } --觸發器有履行的時光設置:可以設置為事宜產生前或後。
{ INSERT | UPDATE | DELETE } --異樣也能設定觸發的事宜:它們可以在履行insert、update或delete的進程中觸發。
ON <表稱號> --觸發器是屬於某一個表的:當在這個表上履行拔出、 更新或刪除操作的時刻就招致觸發器的激活. 我們不克不及給統一張表的統一個事宜支配兩個觸發器。
FOR EACH ROW --觸發器的履行距離:FOR EACH ROW子句告訴觸發器 每隔一行履行一次舉措,而不是對全部表履行一次。
<觸發器SQL語句> --觸發器包括所要觸發的SQL語句:這裡的語句可所以任何正當的語句, 包含復合語句,然則這裡的語句受的限制和函數的一樣。

--你必需具有相當年夜的權限能力創立觸發器(CREATE TRIGGER),假如你曾經是Root用戶,那末就足夠了。這跟SQL的尺度有所分歧。
 
創立觸發器:t_afterinsert_on_tab1
 
感化:增長tab1表記載後主動將記載增長到tab2表中
 

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;

創立觸發器:t_afterdelete_on_tab1
感化:刪除tab1表記載後主動將tab2表中對應的記載刪去

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;

刪除觸發器:
 

DROP TRIGGER [schema_name.]trigger_name;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved