MySQL學習隨記---存儲函數

概念

自定義函數

他跟js中的函數幾乎一樣: 需要先定義, 然後調用(使用). 只是規定這個函數必須要返回數據----要有返回值

(1)定義語法

create function 函數名(參數) returns 返回值類型
begin
    //代碼
end



特別注意第三點!!!!!

(2)調用

跟系統函數調用一樣: 任何需要數據的位置, 都可以調用該函數

案例一: 返回兩個數的和

CREATE FUNCTION he (num1 INT, num2 INT) RETURNS INT
BEGIN
	RETURN num1 + num2;
END;

案例二: 返回1到n的和

CREATE FUNCTION nhe (n INT) RETURNS INT
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE sum INT DEFAULT 0;
WHILE i<=n DO
	SET sum=sum+i;
	SET i=i+1;
END WHILE;
RETURN sum;
END;

注意: 創建的函數是隸屬於數據庫的, 只能在創建函數的數據庫中使用


系統函數

(1)數字類

SELECT RAND(); // 返回0到1之間的隨機數
SELECT * FROM pcuser ORDER BY RAND() LIMIT 2; // 隨機取出2條記錄
SELECT FLOOR(3.9); // 地板數
SELECT CEIL(4.1); // 天花板數
SELECT ROUND(3.5); // 四捨五入

(2)大小寫轉換

SELECT UCASE('I am a boy!'); // 轉成大寫
SELECT LCASE('I am a boy!'); // 轉成小寫

(3)截取字符串

SELECT LEFT('abcde',3); //從左邊截取
SELECT RIGHT ('abcde', 3); //從右邊截取
SELECT SUBSTRING('abcde', 2, 3); //從第二個位置開始, 截取3個, 注意: 起始位置從1開始

SELECT CONCAT(10,'hh'); //字符串相連
SELECT CONCAT(id,'-',username) FROM pcuser;

SELECT COALESCE(str1,str2); //如果str1爲null, 就顯示str2

SELECT LENGTH('哈哈'); //輸出6 數據庫採用utf-8編碼 顯示字節個數
SELECT CHAR_LENGTH('哈哈'); // 輸出2    顯示字符個數


SELECT TRIM('    哈哈'); //去掉字符串兩邊的空格

SELECT REPLACE ('abc', 'bc', 'pache'); //將abc 中的bc 替換成pache

(4)時間類

SELECT UNIX_TIMESTAMP(); // 當前時間戳  結果:1501729122
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()); // 將時間戳轉成日期默認格式  結果: 2017-08-03 10:59:12
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d'); // 指定格式 結果: 2017-08-03 
SELECT FROM_UNIXTIME(0); --1970-01-01 08:00:00

SELECT CURDATE(); //返回今天的時間日期; 格式 2017-08-03
SELECT NOW(); //取當前時間 格式 2017-08-03 10:57:27
SELECT YEAR(NOW()); 年
SELECT MONTH(NOW()); 月
SELECT DAY(NOW()); 日
SELECT HOUR(NOW()); 時
SELECT MINUTE(NOW()); 分
SELECT SECOND(NOW()); 秒

SELECT DATEDIFF(NOW(),'2017-07-03'); 兩個日期相距多少天 前-後 31

DATE_SUB(date,INTERVAL expr unit); // 取出指定間隔的日期 -
DATE_ADD(date,INTERVAL expr unit);//  取出指定間隔的日期 +

SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY); //取出昨天的日期
SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY);

案例一: 一個電影網站, 求出今天添加的電影; 在添加電影時候, 有一個添加的時間戳
//curdate() 求出今天的日期
//把添加的時間戳, 轉換成日期
select title from archives where curdate() = FROM_UNIXTIME(timestamp,'%Y-%m-%d');


案例二: 一個電影網站, 求出昨天添加的電影; 在添加電影時候, 有一個添加的時間戳
把添加的時間戳, 轉換成日期, 和昨天的日期比較
select title from archives where DATE_ADD(CURDATE(), INTERVAL -1 DAY) = FROM_UNIXTIME(timestamp,'%Y-%m-%d');

發佈了31 篇原創文章 · 獲贊 10 · 訪問量 9409
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章