MySQL学习随记---存储函数

来源:互联网 发布:2017淘宝开店认证手机 编辑:程序博客网 时间:2024/06/05 03:25

概念

自定义函数

他跟js中的函数几乎一样: 需要先定义, 然后调用(使用). 只是规定这个函数必须要返回数据----要有返回值

(1)定义语法

create function 函数名(参数) returns 返回值类型
begin
    //代码
end



特别注意第三点!!!!!

(2)调用

跟系统函数调用一样: 任何需要数据的位置, 都可以调用该函数

案例一: 返回两个数的和

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

案例二: 返回1到n的和

CREATE FUNCTION nhe (n INT) RETURNS INTBEGINDECLARE i INT DEFAULT 1;DECLARE sum INT DEFAULT 0;WHILE i<=n DOSET 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');

原创粉丝点击