一、存储函数
相当于php或者js中有返回值的函数 --完成一定“计算”后返回单个的数据值
- 定义:
create function 函数名(parameter p1 value_type, parameter p2 value_type, ...)
returns value_type
begin
[statement_list]
return value;
end
- value_type 数据类型 必须有返回语句 return 且返回值类型和设定的类型一致
- 调用形式::跟系统函数调用一样,直接使用名字,定义有参数则必须给定实参
- 实例:求 n的阶乘
create function factorial_gao(num int)
returns int
begin
declare n int default 1;
declare fac int default 1;
while n <=num do
set fac = fac*n;
set n = n+1;
end while;
return fac;
end;
默认以;为语句结束符,需要delimiter 结束符 来更改,确保存储函数以“一条语句”执行
- 删除:drop function [if exists] 存储函数名;
二、存储过程
相当于php或者js中没有返回值的函数 --它只“做事”(包含增删改查),不返回单个数据
- 定义
create procedure 存储过程名([in|out|inout] p1 value_type, [in|out|inout] p2 value_type,...)
begin
[statement_list]
#其中查询语句会作为存储过程调用的结果,跟执行select语句一样,返回结果集
end
- 调用:call 存储过程名(形参 1, 形参 2);
- 删除:drop procedure [if exists] 存储过程名;
- 示例:向表saving(存款)中添加新数据
create procedure insertRec(acc varchar(20), des float)
begin
insert into saving(account, deposit) values(acc, des);
end;添加之前:
添加之后:
三、触发器
就是数据库中预先设定好的用于某个表上发生某个时间(增/删/改)的时候(前/后)来完成某些任务的一种代码机制。
- 定义
create trigger trigger_name before|after insert|update|delete on table_name for each row
begin
#要执行的代码
#不能使用select 语句
#不能返回数据
end
- before|after insert|update|delete 组合有6种形式,既每个表可以设定触发器有6种
- 删除::drop trigger [if exists] trigger_name;
- 实例:表test新添加的数据,只讲前2个字段title,content 显示给客户看
讲给客户看的定义为字表:test_sub
表test:
表test_sub:
定义触发器:
create trigger createSub after insert on test for each row
begin
set @t1 = new.title;
set @c1 = new.content;
insert into test_sub(title, content) values (@t1, @c1);
end;
表test添加新数据:
mysql> insert into test(title,content, num)values('sixth', 'this is the sixth data.', 525.20)$
Query OK, 1 row affected (0.01 sec)
添加新数据后
表test:
字表test_sub:
四、总结
共同点
使用普通变量
使用流程控制
都是一段“代码”
存储函数
必须返回一个数据
不能有select语句
调用结果可以作为一个“数据”使用,用于select语句或者数据操作语句中
存储过程
没有返回值
可以使用select语句
形参 可以设置数据流向in out inout
调用:call procedure_name(形参 1 数据类型,...)
触发器
没有返回值
不能使用select语句
没有参数,也不能被调用
由设定条件触发自动调用执行
mysql 编程的更多相关文章
-
Visual C++ 2008进行MySQL编程
visual c++ 2008进行MySQL编程(ODBC) -- (一) 套装安装 visual c++ 2008进行MySQL编程(ODBC) --(二) CDatabase操作数据库 visua ...
-
MySQL编程基础
本文是关于MySQL编程中的一些基础知识,包括变量和运算符.常用语句.函数. 一.变量与运算符 1.用户会话变量声明:SET @变量名 = 表达式;//即:用户会话变量无需提前定义,直接用赋值语句赋值 ...
-
C++ MySQL编程
MySQL编程需要包含<mysql.h>头文件.该文件一般在MySQL安装目录下的include文件夹下. 包含头文件还不够,还需要包含“libmysql.lib”库,一般在lib文件夹下 ...
-
MySql——编程
基本语法形式 语句块模式: 在mysql编程中,begin....end;基本代替了原来编程语句中的{...}语法. 但又有所区别: 一个bigin...end;块,可以给定一个“标识符”,并且可以使 ...
-
mysql 编程初步
mysql 编程 基本语法形式: 语句块模式 [begin_label] begin [statement_list] end [end_label]; label 标识符可以省略,但必须相同 流程控 ...
-
visual c++ 2013进行MySQL编程(ODBC) -- (一) 套装安装
最近写了有些技术类文章了,只因为最近研究多了些东西,有一些项目用到了,所以自己记录一下,怕自己忘记,如果有哪位同学有自己的见解,可以邮件或者回复,技术类的探讨,不管对否,都是欢迎的. 操作之前,必须安 ...
-
MySQL编程
MySQL 使用标准 SQL 检索和处理数据,体积小.开源.免费,易于快速部署.正是因为这些特点,使得其在互联网行业,特别是 Web 应用方面使用相当广泛.至今最新的版本已到 8.0. 一 基本操作 ...
-
python入门编程之mysql编程
python关于mysql方面的连接编程 前提:引入mysql模块MySQLdb,即:MySQL_python-1.2.5-cp27-none-win_amd64.whl 如果要用线程池,则要引用模块 ...
-
JAVA / MySql 编程——第八章 DAO 模式
1. 数据持久化:将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化: 2. 持久化的实现方式:数据库.普通文件.XML文件: 3. JDBC封装: ...
-
JAVA / MySql 编程——第七章 JDBC
1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力: ●Java是通过JDBC技术实现对各种数据 ...
随机推荐
-
4.3 多线程进阶篇<;中>;(GCD)
更正:队列名称的作用的图中,箭头标注的有些问题,已修正 本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 本文源码 Demo 详见 Gith ...
-
onethink和thinkphp3.2学习
thinkphp发布3.2版本之后,也发布了一个简单的内容管理系统onthink,这样有助于理解thinkphp3.2的使用: 一.首先最关键的一点是thinkphp3.2中加入了命名空间的使用 什么 ...
-
仿哔哩哔哩应用客户端Android版源码项目
这是一款高仿哔哩哔哩安卓客户端,跟官方网的差不多吧,界面也几乎是一样的,应用里面也加了一些弹出广告,大家可以参考一下吧,安装测试包在源码文件那里,大家可以多多参考一下. 哔哩哔哩弹幕网是国内知名的弹幕 ...
-
网络编程3-URL编程(URL)
1.URL(Uniform Resource Locatior) 统一资源占位符,表示Intenet上某一资源的地址 2.URL的组成部分 传输协议:主机名:端口号:文件名 例:http://192. ...
-
JavaScript事件详解
1.事件传播机制:事件冒泡,事件捕获. 2.注册事件处理程序方式: 设置html标签属性为事件处理程序,文档元素的事件处理程序属性,名字由“on”后面跟着事件名组成,例如:onclick,o ...
-
【linux】which和whereis
which和whereis都是查询命令的指令.区别的是: which能查询到命令所在位置: [root@andon tmp]# which ls alias ls='ls --color=auto' ...
-
c# 代理IP获取通用方法
调用: ConcurrentQueue<string> proxyIpQueue = new ConcurrentQueue<string>(); Grab_ProxyIp(p ...
-
Spring事务管理中@Transactional的propagation参数
所谓事务传播性,就是被调用者的事务与调用者的事务之间的关系.举例说明. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //in A.java Class A { @Tr ...
-
自己动手写RTP服务器——传输所有格式的视频
上一篇文章我们介绍了如何用一个简单的UDP socket搭建一个RTP服务器.我把这份80行的代码呈现到客户面前的时候,就有人不满意了. 还有人在参考的时候会问:“楼主你的TS格式的文件是哪里来的?应 ...
-
Unity Shader 知识点总结(二)
紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...