Mysql中Round,unix_timestamp,DATE_FORMAT,函数与存储过程
一.Round用法
1、round(x,d) ,x指要处理的数,d是指保留几位小数
这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
2、round(x) ,其实就是round(x,0),也就是默认d为0;
下面是几个实例
1、查询: select round(1123.26723,2);
结果:1123.27
2、查询: select round(1123.26723,1);
结果: 1123.3
3、查询: select round(1123.26723,0);
结果:1123
4、查询: select round(1123.26723,-1);
结果: 1120
5、查询: select round(1123.26723,-2);
结果:1100
5、查询: select round(1123.26723);
结果:1123
二.unix_timestamp
1)返回当前时间的时间戳:select unix_timestamp();
2)如果参数date满足yyyy-MM-dd HH:mm:ss形式,则可以直接unix_timestamp(string date) 得到参数对应的时间戳
或者满足yyyy-MM-dd形式
select unix_timestamp('2018-12-05 01:10:00','yyyy-MM-dd HH:mm:ss');
select unix_timestamp('2018-12-05','yyyy-MM-dd');
from_unixtime函数用法
from_unixtime(tt)
tt为10位数的时间戳
select from_unixtime(1543943400);
from_unixtime(tt,‘yyyy-MM-dd’) 可以加上时间格式
select from_unixtime(1543943400,'yyyy-MM-dd');
三.DATE_FORMAT(date,format)
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
四.Mysql中函数与存储过程
存储过程
定义:事先经过编译并存储在数据库中的一组sql语句的集合。
存储过程的优点:①提高代码重用性 ②减少编译与连接次数 ③提高效率。
创建语法:
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的sql语句);
END 结束符
调用语法:
CALL 存储过程名(实参列表)
删除语法:
DROP PROCEDURE 存储过程名;
查看语法:
SHOW CREATE PROCEDURE 存储过程名;
存储过程的参数别聊提供了3种参数:
IN:需要输入,需要调用方传入值。
OUT:可以输出,可以作为返回值。
INOUT:可以输入和输出,既需要入参又需要返回值。
注意:
- 如果存储过程只有一句话,可以省略BEGIN END。
- 存储过程体中的每条sql语句的结尾要求必须加分号。
- 存储过程的结尾可以使用delimiter重写结束标志,DELIMITER 结束标记。
1.【空参存储过程】
# 案例:向user表中插入1条记录
# 调用存储过程
CALL test()
2.【带in模式的存储过程】
CREATE DEFINER=`root`@`localhost` PROCEDURE `testin`(in userv int)
BEGIN
SELECT * FROM `user` WHERE id = userv;
END
案例:创建存储过程,查看用户是否登录成功
CREATE PROCEDURE myp3(IN username VARCHAR(10),IN PASSWORD VARCHAR(10))
BEGIN
DECLARE result INT DEFAULT 0;# 声明并初始化
SELECT COUNT(*) INTO result# 赋值
FROM admin
WHERE admin.username=username
AND PASSWORD=PASSWORD;
SELECT IF(result,'成功','失败');#打印变量
END
# 调用
CALL myp3('john','8888')
3.【带out模式的存储过程】
CREATE DEFINER=`root`@`localhost` PROCEDURE `testout`(out stage VARCHAR(8) character set utf8,in idd int)
BEGIN
select userName INTO stage from `user` WHERE id = idd;
END
调用:
call testout(@stag,1)
select @stag;
函数
存储过程和函数的区别?
- 存储过程可以有0个或多个返回;函数有且只有一个返回。
- 存储过程适合做批量插入、批量更新;函数适合做处理数据后返回一个结果。
创建语法:
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体(一定有return语句);
END 结束符
调用语法:
SELECT 函数名(参数列表)
查看函数:
SHOW CREATE FUNCTION my_f3;
删除函数:
DROP FUNCTION my_f3;
1.【无参有返回】
# 返回个数
CREATE DEFINER=`root`@`localhost` FUNCTION `fuction_Name`() RETURNS int(11) BEGIN DECLARE n INT DEFAULT 0;# 定义变量 select COUNT(userName) INTO n from `user`;#into表示赋值 RETURN n; END
调用: SELECT fuction_Name()
2.【有参有返回】
# 根据id,返回用户名称
CREATE DEFINER=`root`@`localhost` FUNCTION `fuction_yes`(idd INT) RETURNS varchar(24) CHARSET utf8 BEGIN SET @star = '' ;# 定义用户变量 SELECT userName INTO @star # 赋值 FROM `user` WHERE id = idd; RETURN @star; END
调用:SELECT fuction_yes(1)
3.【根据部门名,返回该部门平均工资】
CREATE FUNCTION my_f3(deptName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARE sal DOUBLE; SELECT AVG(Salary) INTO sal FROM employees e JOIN departments d ON e.department_id=d.department_id WHERE d.department_name=deptName; RETURN sal; END
SELECT my_f3('IT')

浙公网安备 33010602011771号