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')

 

posted @ 2021-04-02 16:47  sea-gull  阅读(574)  评论(0)    收藏  举报