概念
自定义函数
他跟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');