MySql学习笔记——存储函数
在学习完存储过程后,今天主要回顾一下mysql中的存储函数的知识。
函数与存储过程的区别
首先,存储函数也是过程式对象之一,与存储过程相似。它们都是由SQL和过程式语句组成的代码片断,并且可以从应用程序和SQL中调用。
区别:
1.存储函数不能拥有输出参数,因为存储函数本身就是输出参数;
2.不能用CALL语句来调用存储函数;
3.存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。
存储函数的创建
创建存储函数使用CREATE FUNCTION语句。查看数据库中的存储函数,可以使用SHOW FUNCTION STATUS命令。
创建存储函数的语法为:
CREATE FUNCTION sp_name ([func_parameter[,....]])
RETURN type
[characteristic...] routine_body
说明:存储函数的定义格式和存储过程相关不大。
- sp_name是存储函数的名称。存储函数不能拥有与存储过程相同的名字。
- func_parameter是存储函数的参数,参数只有名称和类型,不能指定IN,OUT和INOUT。RETURN type子句声明函数返回值的数据类型。
- routine_body是存储函数的主体,也叫存储函数数体。
例子:
delimiter $$
create function ss(ac char(6))
returns char(8)
begin
return (select username from user where id=ac);
end $$
delimiter ;
说明:RETURN子句中包含SELECT语句时,SELECT语句的返回结果只能是一行且只能有一列值。
存储函数的调用、删除和修改
调用
调用函数用select 关键字。
语法格式:
SELECT sp_name ([func_parameter[,...]])
例子:
select ss('11');
结果:
删除
语法格式:
DROP FUNCTION [IF EXISTS] sp_name
例子:
drop function if exists ss;
修改
语法格式:
ALTER FUNCTION sp_name [characteristic ...]
说明:函数其实不能修改,只能先删除再重新定义。
总结
函数与存储过程很相似,理解起来就很容易了。
MySql学习笔记——存储函数的更多相关文章
- mysql学习笔记--- 字符串函数、日期时间函数
一.常见字符串函数: 1.CHAR_LENGTH 获取长度(字符为单位) 2.FORMAT 格式化 3.INSERT 替换的方式插入 4.INSTR 获取位置 5.LEFT/RIGHT 取左 ...
- MySQL学习笔记——存储引擎的索引特性
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-MySQL体系结构总览
MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...
- 数据库MySQL学习笔记高级篇
数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...
- 一千行MySQL学习笔记 (转)
出处: 一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- 题解 P1682 【过家家】
P1682 过家家 题目描述 有2n个小学生来玩过家家游戏,其中有n个男生,编号为1到n,另外n个女生,编号也是1到n.每一个女生可以先选择一个和她不吵嘴的男生来玩,除此之外,如果编号为X的女生的朋友 ...
- Ubuntu无法进入图形界面的解决办法
Ubuntu无法进入图形界面的解决办法 Ubuntu系统启动,输入用户密码后,屏幕显示彩色背景,但是始终不能进入图形界面. 如果你也遇到过这种情况,可以参照以下方法解决(在 ubuntu14.04 验 ...
- [转]标准C++中的string类的用法总结
原文地址:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常 ...
- 重构改善既有代码设计--重构手法10:Move Method (搬移函数)
你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或被后者调用.在该函数最常用引用的类中建立一个有着类似行为的新函数.将旧函数编程一个单纯的委托函数,或是将旧函数完全移除. 动机: ...
- TED_Topic1:Why we need to rethink capitalism
Topic 1:Why we need to rethink capitalism By Paul Tudor Jones II # Background about our speaker ...
- vue-router.esm.js?fe87:16 [vue-router] Route with name 'page' does not exist
本文地址:http://www.cnblogs.com/veinyin/p/7910525.html 我的路由配置 { path: '/page', name: page, component: pa ...
- favico.js笔记
1. favicon.js是什么 一个js库可以使用徽标.图像.视频等来设置网页的favicon,即网页标题栏上的小图标. 2. 如何使用 2.1 使用徽标 basic demo: <!DOCT ...
- IIS7.5 配置应用程序初始化功能
IIS进程回收后,第一次访问会超级慢,这对于用户是不能接受的,怎么解决这个问题? 我们不能设置IIS不回收进程,因为这样可能会导致IIS内存泄漏.有效的方法时,尽量在业务空闲时间回收进程,回收后立刻预 ...
- OkHttp与Cookie及Cookie的持久化
http://blog.csdn.net/u011150924/article/details/52780931 http://blog.csdn.net/chen19960724/article/d ...
- Linux kernel学习-内存管理
转自:https://zohead.com/archives/linux-kernel-learning-memory-management/ 本文同步自(如浏览不正常请点击跳转):https://z ...