mysql 编程
一、存储函数
相当于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技术实现对各种数据 ...
随机推荐
- easyui的datagrid用js插入数据等编辑功能的实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HDU6442(二项式)
要点 懒得打公式了,题解 把题目要求的复杂公式化简成熟悉的东西,一是看穿前面加个\(n!\)化为\(C_n^i,i为奇数\):二是将奇数的条件去掉的数学技巧. 形为\({(a + b\sqrt{B}) ...
- java实现access数据上传
一. --springMvc实现上传 https://blog.csdn.net/qian_ch/article/details/69258465 --转换成spring64位上传 https://b ...
- 51NOD 区间的价值 V2
http://www.51nod.com/contest/problem.html#!problemId=1674 因为题目要求的只是& 和 | 这两个运算.而这两个运算产生的值是有限的. & ...
- 机器学习框架ML.NET学习笔记【7】人物图片颜值判断
一.概述 这次要解决的问题是输入一张照片,输出人物的颜值数据. 学习样本来源于华南理工大学发布的SCUT-FBP5500数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间 ...
- 第十五章 提升用户体验 之 设计实现MVC controllers 和 actions
1. 概述 controllers 和 actions 是 ASP.NET MVC4中非常重要的组成部分. controller管理用户和程序间的交互,使用action作为完成任务的方式. 如果是包含 ...
- bootstrap fileinput 上传文件
最近用到文件上传功能, 说实话:以前遇到过一次,COPY了别人的代码 结束! 这次又要用,可是看到别人很酷的文件上传功能,心痒了! 好吧.简单的办法,找控件: bootstrap fileinput ...
- JDK8下的HashMap有什么特别之处?
一.前言 上篇认真的分析了在JDK7下的HashMap, 如果还没看过的或者忘记了的可以先去回顾下,这样可以更好的了解JDK8下的HashMap基于JDK7做了什么改动.分析JDK8下的HashMap ...
- 从wireshark数据中分析rtmp协议,并提取出H264视频流
我写的小工具 rtmp_parse.exe 使用用法如先介绍下: -sps [文件路径] 解析 sps 数据 文件当中的内容就是纯方本的hexstring: 如 42 E0 33 8D 68 05 ...
- httpHelper请求辅助类
#import <Foundation/Foundation.h> #import "AFNetworking.h" @interface AFHttpClient : ...