/*MySQL进阶19 函数

存储过程和函数:都类似于java中的方法;
存储过程和函数通用好处:
1.提高代码的重用性
2.简化操作
好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数,提高了效率
---------------
#区别
存储过程 (可以有0个或者多个返回值),适合做批量插入或者批量更新
函数: 有且仅有一个返回值 ; 适合做处理数据后的返回一个结果 */
/*
#一: 创建语法
create function 函数名(参数列表) returns 返回类型
begin
函数体
end 注意:
参数列表 包含两个部分;
参数名 参数类型;
函数体 : 肯定有return 语句,如果没有会报错;
3. 函数体中仅有一句话,则可以省略begin end
4. 使用delimiter 语句设置结束标记
delimiter $; #二: 调用自定义函数
select 函数名(参数列表) */
#-------------------案例演示函数------------------------------
#1 无参有返回 #根据提示,设置mysql函数权限
SHOW VARIABLES LIKE 'log_bin_trust_function_creators';
SET @@global.log_bin_trust_function_creators='ON';
#案例 : 返回公司的员工个数 [如下代码可在本地运行,不用在cmd终端打开运行]
DELIMITER $
CREATE FUNCTION myf1() RETURNS INT
BEGIN
DECLARE rt1 INT DEFAULT 0; #定义局部变量/赋值并returns SELECT COUNT(*) INTO rt1
FROM employees;
RETURN rt1;
END $
SELECT myf1() $; ##结果是 : 107 #2.有参数有返回
#案例1:根据员工名,返回它的工资
DELIMITER $
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE rt DOUBLE DEFAULT 0;
SELECT `salary` INTO rt
FROM employees e
WHERE e.last_name = empName AND e.first_name='empName';
RETURN rt;
END $
SET @empName='K_ing' $
SELECT myf2(@empName) $; ##返回值为 : 24000 #案例2: 根据部门名,返回该部门的平均工资
DELIMITER $
CREATE FUNCTION myf5(depName VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE rt DOUBLE ;
SELECT AVG(salary) INTO rt
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE d.department_name=depName;
RETURN rt;
END $
SELECT myf5('IT') $; ##结果是 : 5760 #三: 查看函数的过程/charset/Datebase collation等信息 SHOW CREATE FUNCTION myf5; #四: 删除函数(命令行可操纵!)
DROP FUNCTION myf3; #案例"
#1.创建函数,实现传入两个float ,返回两者之和
DELIMITER $
CREATE FUNCTION test_fun1(a FLOAT,b FLOAT) RETURNS FLOAT
BEGIN
DECLARE SUM FLOAT DEFAULT 0;
SET SUM=a+b;
RETURN SUM;
END $ SELECT test_fun1(1,12) $ ##结果为:13

MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子的更多相关文章

  1. 【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)

    系列目录 一.安装MySql 二.安装并破解Navicat 三.没有my.in配置文件怎么办 四.设置MySql的大小写敏感 五.重置MySql登陆密码 这一篇可以说是我的踩坑的血泪史了... MyS ...

  2. Mysql 整数类型的字段的属性设置及常用的函数

    数据类型 二.MySQL支持的数据类型 数值类型.日期类型.字符串类型 1.数值类型 1)整数类型 tinyint.smallint.mediumint.int和bigint 2)zerofill属性 ...

  3. MySQL(19):SQL语句(MySQL)大全

    SQL语句大全一.创建和删除数据库 1.创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行  ----必须在超级管理员身份下操作 create user hncu identifi ...

  4. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) : 第一次设置MySQL也适用

    [MySQL的安装环境]:windows7 64位 [MySQL的版本]:mysql-8.0.16-winx64 [错误描述]: ERROR 2003 (HY000): Can't connect t ...

  5. 【转】MySQL— 进阶

    [转]MySQL— 进阶 目录 一.视图 二.触发器 三.函数 四.存储过程 五.事务 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需 ...

  6. Linux 下操作Mysql指令的总结 远程连接的设置

    参考博客:https://www.cnblogs.com/liaocheng/p/4243579.html (常用命令) https://www.cnblogs.com/zhangzhu/archiv ...

  7. MySQL连接处理方式及最佳并发连接数设置

    MySQL连接处理方式及最佳并发连接数设置 mysql是单进程,多线程的架构,通过创建多个线程来服务不同的用户连接,通常情况下,随着用户连接数的增加,mysql内部用于处理用户连接的线程也会同步的增长 ...

  8. pycharm中创建并设置docker解释器

    在Windows上使用Docker的其中一个目的是使其与PyCharm结合,形成Python代码的解释器,避免重复的Python解释环境搭建的问题,同时保持Windows开发环境和部署环境所用的Pyt ...

  9. Mac平台重新设置MySQL的root密码

    Mac OS X - 重置 MySQL Root 密码 您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码: 1.  停止 mysql server.  通常是在 ...

随机推荐

  1. 仔细看参数--NGINX之tcp_nodelay

    一.知识准备 ● 在nginx优化中有个经常需要设置的参数,tcp_nodelay ● 该参数最核心的功能,就是把小包组成成大包,提高带宽利用率也就是著名的nagle算法 ● tcp协议中,有一个现象 ...

  2. DeviceEventEmitter React-Native 发送和接受消息(事件监听器)

    A页面注册通知: import {DeviceEventEmitter} from 'react-native'; //… //调用事件通知 DeviceEventEmitter.emit('xxxN ...

  3. QT中PRO文件解析(转)

    From csdn blog: QT中PRO文件写法的详细介绍,很有用,很重要! 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: ...

  4. 01 web概念概述

    1.JavaWeb: 使用Java语言开发基于互联网的项目 2.软件架构:(1) C/S: Client/Server 客户端/服务器端在用户本地有一个客户端程序,在远程有一个服务器端程序如:QQ,迅 ...

  5. [转帖]年经贴: ARM将为苹果开发高性能CPU核心 取代笔记本x86处理器?

    ARM将为苹果开发高性能CPU核心 取代笔记本x86处理器? https://www.cnbeta.com/articles/tech/899421.htm . 之前苹果的哥们说过 谁特别在意自己的软 ...

  6. (6)Spring Boot web开发 --- 错误处理页面

    文章目录 处理时间(`Date`)类型 thymeleaf 页面拼接字符串 映射路径占位符 使用 put.delete 方法 错误处理机制 处理时间(Date)类型 Spring Boot 进行参数绑 ...

  7. (一)SpringBoot Demo之 Hello World

    文章目录 最终效果 pom文件编写 编写资源类 编写控制器 运行项目 原文 : https://spring.io/guides/gs/rest-service/ 类型:官网入门指南 要求:JDK1. ...

  8. 第四章 函数之lambda 表达式和内置函数

    4.5 lambda 表达式 用于表示简单的函数. # 三元运算,为了解决简单的if else的情况,如:if 1 == 1:    a = 123else:    a = 456# 相当于a = 1 ...

  9. conda命令入坑记

    conda命令入坑记 本人使用的软件版本: TypeError: LoadLibrary() argument 1 must be str, not None 网上太多的资料,大多都是在讲path的设 ...

  10. JAVA实现种子填充算法

    种子填充算法原理在网上很多地方都能找到,这篇是继上篇扫描线算法后另一种填充算法,直接上实现代码啦0.0 我的实现只是实现了种子填充算法,但是运行效率不快,如果大佬有改进方法,欢迎和我交流,谢谢! 最后 ...