数据库Mysql的学习(七)-自定义函数和流程控制
DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把)
CREATE FUNCTION ym_date(mydate DATE) (创建函数 函数名字(参数))
RETURNS VARCHAR(20) (指定函数的返回类型)
BEGIN (函数开始,如果函数只有一句可以省略bigin和end)
RETURN DATE_FORMAT(mydate,%Y-%m); (函数体)
END// (函数结束)
DELIMITER ; (把结束符再变成;) CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
RETURN (SELECT CONCAT_WS('-----',book_name,store) FROM bookinfo WHERE book_id=bid); (into的介绍)
DELIMITER //
CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE result VARCHAR(20) (声明变量)
SELECT CONCAT_WS('-----',book_name,store) INTO result FROM bookinfo WHERE book_id=bid;(对变量result进行赋值。emmm没啥说的)
RETURN result;
END//
DELIMITER ; (删除函数)
DROP FUNCTION xxxxx; (又是if else)
DELIMITER //
CREATE FUNCTION show_level(cid VARCHAR(20))
RETURNS VARCHAR(10)
BEGIN
DECLARE lev VARCHAR(20);
DECLARE money DECIMAL(7,3);
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
IF money>=500 THEN
SET lev='高级';
ELSEIF money>=300 THEN
SET lev='普通';
ELSE
SET lev='非会员';
END IF;
RETURN lev;
END//
DELIMITER ; (case的样例)
DELIMITER //
CREATE FUNCTION show_lev2(cid CHAR(18))
RETURNS barchar(10)
BEGIN
DECLARE lev VARCHAR(10);
DECLARE money DECIMAL(7,3);
DECLARE num INT;
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
SET num=TRUNCATE(money/100,0);
CASE num
WHEN 0 THEN SET lev='非会员';
WHEN 1 THEN SET lev='普通';
WHEN 2 THEN SET lev='高级';
ELSE SET lev='金牌';
END CASE;
RETURN lev;
END//
DELIMITER ;
(CASE 也可以这样用)
CASE
WHEN money>500 THEN SET lev='高级';
WHEN money>=300 THEN SET lev='普通';
ELSE SET lev='不是';
END CASE; (以下是循环的样例)
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
WHILE num<n DO
SET num= num + 1;
SET SUM=SUM + num;
END WHILE;
RETURN SUM;
END//
DELIMITER ; DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
labl:LOOP
SET num=num+1;
SET SUM=SUM+num;
IF num>=n THEN
LEAVE labl;
END IF;
END LOOP labl;
RETURN SUM;
END//
DELIMITER ; DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
REPEAT
SET num=num+1;
SET SUM=SUM+num;
UNTIL num>=n
END REPEAT;
RETURN SUM;
END//
DELIMITER ;
DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把)
CREATE FUNCTION ym_date(mydate DATE) (创建函数 函数名字(参数))
RETURNS VARCHAR(20) (指定函数的返回类型)
BEGIN (函数开始,如果函数只有一句可以省略bigin和end)
RETURN DATE_FORMAT(mydate,%Y-%m); (函数体)
END// (函数结束)
DELIMITER ; (把结束符再变成;)
CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
RETURN (SELECT CONCAT_WS('-----',book_name,store) FROM bookinfo WHERE book_id=bid);
(into的介绍)
DELIMITER //
CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE result VARCHAR(20) (声明变量)
SELECT CONCAT_WS('-----',book_name,store) INTO result FROM bookinfo WHERE book_id=bid;(对变量result进行赋值。emmm没啥说的)
RETURN result;
END//
DELIMITER ;
(删除函数)
DROP FUNCTION xxxxx;
(又是if else)
DELIMITER //
CREATE FUNCTION show_level(cid VARCHAR(20))
RETURNS VARCHAR(10)
BEGIN
DECLARE lev VARCHAR(20);
DECLARE money DECIMAL(7,3);
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
IF money>=500 THEN
SET lev='高级';
ELSEIF money>=300 THEN
SET lev='普通';
ELSE
SET lev='非会员';
END IF;
RETURN lev;
END//
DELIMITER ;
(case的样例)
DELIMITER //
CREATE FUNCTION show_lev2(cid CHAR(18))
RETURNS barchar(10)
BEGIN
DECLARE lev VARCHAR(10);
DECLARE money DECIMAL(7,3);
DECLARE num INT;
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
SET num=TRUNCATE(money/100,0);
CASE num
WHEN 0 THEN SET lev='非会员';
WHEN 1 THEN SET lev='普通';
WHEN 2 THEN SET lev='高级';
ELSE SET lev='金牌';
END CASE;
RETURN lev;
END//
DELIMITER ;
(CASE 也可以这样用)
CASE
WHEN money>500 THEN SET lev='高级';
WHEN money>=300 THEN SET lev='普通';
ELSE SET lev='不是';
END CASE;
(以下是循环的样例)
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
WHILE num<n DO
SET num= num + 1;
SET SUM=SUM + num;
END WHILE;
RETURN SUM;
END//
DELIMITER ;
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
labl:LOOP
SET num=num+1;
SET SUM=SUM+num;
IF num>=n THEN
LEAVE labl;
END IF;
END LOOP labl;
RETURN SUM;
END//
DELIMITER ;
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
REPEAT
SET num=num+1;
SET SUM=SUM+num;
UNTIL num>=n
END REPEAT;
RETURN SUM;
END//
DELIMITER ;
数据库Mysql的学习(七)-自定义函数和流程控制的更多相关文章
- Mysql变量、存储过程、函数、流程控制
一.系统变量 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量需要添加sessi ...
- R语言学习4:函数,流程控制,数据框重塑
本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...
- MySQL学习——操作自定义函数
MySQL学习——操作自定义函数 摘要:本文主要学习了使用DDL语句操作自定义函数的方法. 了解自定义函数 是什么 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由SQL ...
- 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
---------------------------存储过程-------------------- 语法: 创建存储过程: CREATE [definer = {user|current_user ...
- MySQL(10)---自定义函数
MySQL(10)---自定义函数 之前讲过存储过程,存储过程和自定义函数还是非常相似的,其它的可以认为和存储过程是一样的,比如含义,优点都可以按存储过程的优点来理解. 存储过程相关博客: 1.MyS ...
- [MySQL数据库之Navicat.pymysql模块、视图、触发器、存储过程、函数、流程控制]
[MySQL数据库之Navicat.pymysql模块.视图.触发器.存储过程.函数.流程控制] Navicat Navicat是一套快速.可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降 ...
- mysql:视图、触发器、事务、存储、函数、流程控制
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 回到顶部 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只 ...
- MySQL知识补充(表字段操作、视图、触发器、事物、存储过程、内置函数、流程控制、索引、慢查询)
今日内容概要 表字段操作补充(掌握) 视图(了解) 触发器(了解) 事务(掌握) 存储过程(了解) 内置函数(了解) 流程控制(了解) 索引(熟悉) 内容详细 1.表字段操作补充 # 1.添加表字段 ...
- 14 MySQL--事务&函数与流程控制
一.事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 一堆sql语句:要么同时执行成功,要么同时失败 # 事务的原子性 场景: ...
随机推荐
- OOP导论系列---抽象过程
OOP导论系列---抽象过程 所有编程语言都提供抽象机制.可以认为,人们所能解决的问题的复杂性直接取决于抽象的类型和质量.所谓“类型”是指“所抽象的是什么?”你可以抽取待求解问题的任何概念化构件,如: ...
- jQuery 属性操作 - addClass() 和 removeClass() 方法
实例 向第一个 p 元素添加一个类: $("button").click(function(){ $("p:first").addClass("int ...
- Vue填坑(1)----通过vue-cli,认识vue-router
开始 首先,确保之前已经安装过 npm 和 nodejs(为了避免版本的问题,最好使用较新的版本). 全局安装 vue-cli : npm install -g vue-cli 新建文件夹 my-pr ...
- node.js使用Sequelize 操作mysql
Sequelize就是Node上的ORM框架 ,相当于java端的Hibernate 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, SQLite ...
- mysql 几种搜索引擎的比较
mysql中常见的数据库引擎之间的比较 转载自 深入浅出mysql数据库 MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表. 若 ...
- Spring初始化机制
一.main的运行入口 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml ...
- Leecode刷题之旅-C语言/python-203移除链表元素
/* * @lc app=leetcode.cn id=203 lang=c * * [203] 移除链表元素 * * https://leetcode-cn.com/problems/remove- ...
- 2018南京网络赛L题:Magical Girl Haze(最短路分层图)
题目链接:https://nanti.jisuanke.com/t/31001 解题心得: 一个BZOJ的原题,之前就写过博客了. 原题地址:https://www.lydsy.com/JudgeOn ...
- Alexander的Python机器学习 之目录分析。
无聊,顺应一下潮流,学习一下python机器学习吧. 买了一本书,首先分析一下目录吧. 1.第一章是 Python机器学习的生态系统. 1.1.数据科学或机器学习的工作流程. 然后又分成6点进行详细说 ...
- 每天看一片代码系列(二):WebSocket-Node
简介 我们都知道,websocket主要是通过在浏览器和服务端建立长连接,继而实现二者的相互数据通信.不同于HTTP的轮询,它不会有大量无效的HTTP消息交换,从而节省了花销.websocket其实就 ...