数据库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语句:要么同时执行成功,要么同时失败 # 事务的原子性 场景: ...
随机推荐
- STM32平台SD卡的FatFS文件系统开发
STM32平台SD卡的FatFS文件系统开发 系统平台: STM32系列的STM32F103ZE SPI方式与SD卡通信 SD上移植FatFS系统 1 FatFS文件系统 1.1 FatFS简介 Fa ...
- Gradle Goodness: Check Task Dependencies With a Dry Run
We can run a Gradle build without any of the task actions being executed. This is a so-called dry ru ...
- java Scanner和异常
Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scann ...
- Swift_闭包
Swift_闭包 点击查看源码 闭包优化 //闭包优化 func testClosures() { //函数做参数 排序 let names = ["XuBaoAiChiYu", ...
- mybatis if 语句嵌套
在使用mybatis的时候,可以在 if 标签下面加上if标签. 比如要对这个sql语句进行改进. select a.* from emp a inner join dept b on a.deptn ...
- Java之环境变量配置
1.首先安装Java的JDK(Java开发工具包 包含JRE(Java运行环境))下载地址URL:www.oracle.com (64位或32位) 安装:傻瓜式安装(点击下一步即可)中间可更改安装目录 ...
- 创建<Bean>sessionFactory错误, init方法调用失败;嵌套异常是org.hibernate.exception。
未知原因:在Maven中hibernate映射开启了自动更新表,出现此异常 org.springframework.beans.factory.BeanCreationException: Error ...
- PHP中级程序员常见面试题
1).写一个函数,从一个标准url里取出文件的扩展名,需要取出php或.php <?php $a="http://www.test.com.cn:88/abc/de/fg.php?id ...
- JavaScript 时间对象 date()
getYear() 获得的是距离1900年过了多少年 var d = new Date(); document.write(d+"<br />"); document. ...
- 「PHP」设计模式介绍
引言 最近再看PHP设计模式相关的一些技术文章,网上有关PHP的设计模式范例很少,这里做一些总结仅供参考,不足之处望提出. 参考资料: <大话设计模式>程杰 什么是设计模式 设 ...