Mysql存储过程语法
一口气弄完了!
一、条件语句if-then-else:
- create procedure demo_1(in param int)
- begin
- declare var int;
- set var=param-1;
- if var=0 then
- insert into userinfo(name) values('demo');
- else
- insert into userinfo(name) values('demo');
- end if;
- if param=0 then
- update userinfo set age=param where name='demo';
- else
- update userinfo set age=1 where name='demo';
- end if;
- end
- //
仅作语法参考并无实际意义。
二、case语句:
- create procedure demo_2(in param int)
- begin
- case param
- when 0 then
- insert into userinfo(name) values('demo_0');
- when 1 then
- insert into userinfo(name) values('demo_1');
- else
- insert into userinfo(name) values('demo_default');
- end case;
- end
- //
调用的话可以:
- call demo_2(1)//
三、循环语句while-endwhile
- create procedure demo_3(in param int)
- begin
- while param<10 do
- insert into userinfo(name) values('demo');
- set param=param+1;
- end while;
- end
- //
四、repeat...end repeat:
它在执行操作后检查结果,而while则是执行前进行检查。相当于do...while
- create procedure demo_4(in param int)
- begin
- repeat
- insert into userinfo(name) values('demo');
- set param=param+1;
- until param>10
- end repeat;
- end
- //
until表示满足后边的条件才继续循环
五、loop...end loop语句
- create procedure demo_5(in param int)
- begin
- demo_5:loop
- insert into userinfo(name) values('demo_5');
- set param=param+1;
- if param>10 then
- leave demo_5;
- end if;
- end loop;
- end
- //
call demo_5(7)则输入插入4个demo_5。
六、LABLES标号:
标号可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。
七、ITERATE:
通过引用复合语句的标号,来从新开始复合语句
- create procedure demo_6(in param int)
- begin
- declare v int;
- set v=0;
- LOOP_LABLE:loop
- if v=3 then
- set v=v+1;
- ITERATE LOOP_LABLE;
- end if;
- insert into userinfo(name) values('demo_6');
- set v=v+1;
- if v>=5 then
- leave LOOP_LABLE;
- end if;
- end loop;
- end
- //
引:MySQL存储过程的基本函数
1、操作字符串类
CHARSET(str) //返回字串字符集
CONCAT (string2 [,... ])
//连接字串
INSTR (string ,substring )
//返回substring首次在string中出现的位置,不存在返回0
LCASE (string2 ) //转换成小写
LEFT (string2 ,length )
//从string2中的左边起取length个字符
LENGTH (string )
//string长度
LOAD_FILE (file_name )
//从文件读取内容
LOCATE (substring , string
[,start_position ] ) 同INSTR,但可指定开始位置
LPAD (string2 ,length ,pad )
//重复用pad加在string开头,直到字串长度为length
LTRIM (string2 ) //去除前端空格
REPEAT (string2 ,count )
//重复count次
REPLACE (str ,search_str
,replace_str ) //在str中用replace_str替换search_str
RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length
RTRIM (string2 ) //去除后端空格
STRCMP (string1 ,string2 )
//逐字符比较两字串大小,
SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,
注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1
- mysql> select substring('abcd',0,2);
- +-----------------------+
- | substring('abcd',0,2) |
- +-----------------------+
- | |
- +-----------------------+
- 1 row in set (0.00 sec)
- mysql> select substring('abcd',1,2);
- +-----------------------+
- | substring('abcd',1,2) |
- +-----------------------+
- | ab |
- +-----------------------+
- 1 row in set (0.02 sec)
TRIM([[BOTH|LEADING|TRAILING] [padding]
FROM]string2) //去除指定位置的指定字符
UCASE (string2 )
//转换成大写
RIGHT(string2,length)
//取string2最后length个字符
SPACE(count)
//生成count个空格
2、数学类
ABS (number2 ) //绝对值
BIN (decimal_number )
//十进制转二进制
CEILING (number2 )
//向上取整
CONV(number2,from_base,to_base) //进制转换
FLOOR (number2 )
//向下取整
FORMAT (number,decimal_places
) //保留小数位数
HEX (DecimalNumber )
//转十六进制
注:HEX()中可传入字符串,则返回其ASC-11码,如HEX('DEF')返回4142143
也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
LEAST (number , number2 [,..]) //求最小值
MOD (numerator ,denominator )
//求余
POWER (number ,power )
//求指数
RAND([seed])
//随机数
ROUND (number [,decimals ])
//四舍五入,decimals为小数位数]
注:返回类型并非均为整数,如:
(1)默认变为整形值
- mysql> select round(1.23);
- +-------------+
- | round(1.23) |
- +-------------+
- | 1 |
- +-------------+
- 1 row in set (0.00 sec)
- mysql> select round(1.56);
- +-------------+
- | round(1.56) |
- +-------------+
- | 2 |
- +-------------+
- 1 row in set (0.00 sec)
(2)可以设定小数位数,返回浮点型数据
- mysql> select round(1.567,2);
- +----------------+
- | round(1.567,2) |
- +----------------+
- | 1.57 |
- +----------------+
- 1 row in set (0.00 sec)
SIGN (number2 ) //
3、日期时间类
ADDTIME (date2 ,time_interval ) //将time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
CURRENT_DATE ( ) //当前日期
CURRENT_TIME ( ) //当前时间
CURRENT_TIMESTAMP ( ) //当前时间戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
DATEDIFF (date1 ,date2 ) //两个日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1为星期天
DAYOFYEAR (date ) //一年中的第几天
EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分
MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
MAKETIME (hour ,minute ,second ) //生成时间串
MONTHNAME (date ) //英文月份名
NOW ( ) //当前时间
SEC_TO_TIME (seconds ) //秒数转成时间
STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
TIME_TO_SEC (time ) //时间转秒数]
WEEK (date_time [,start_of_week ]) //第几周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第几天
HOUR(datetime) //小时
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分返回符号,正负或0
SQRT(number2) //开平方
Mysql存储过程语法的更多相关文章
- mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...
- 『转』MySQL存储过程语法例子
原文地址:http://blog.chinaunix.net/uid-540802-id-138873.html ------------------------- 自动生成随机数据存储过程 ---- ...
- MYSql存储过程的作用及语法
1.使用了存过程,很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理! 2.存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快. 3.存储过程可以接受参数.输出参数.返回单个或 ...
- Mysql 存储过程基本语法
delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...
- MySQL 存储过程 经常使用语法
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
- mysql存储过程 基本语法
话不多说 一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b& ...
- MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法
在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySql存储过程
MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...
随机推荐
- Shmget 参数 0600的解释
Shmget 参数 0600的解释 0660 百位6 -- 本用户有读写权. 十位6 -- 同组用户有读写权,个位0 -- 其它用户无读写执行权.与chmod 设法一样.
- 在chrome下的文本框sendkeys,提示element can't focus--解决方法
在chrome下的文本框sendkeys,提示element can't focus--解决方法(成都-半步流雲,群友解决) 成都-半步流雲1.升级你的chromedriver,2.降chrome版本 ...
- 深入探究 WinRT 和 await
在最近发布的使用 Windows 运行时中异步性来始终保持应用程序能够快速流畅地运行这篇博文中,包含了一些如何在 C# 和 Visual Basic 中使用 await 关键字的示例,允许开发人员在使 ...
- php composer使用经验
1.使用composer引用了一个包,但是这个包没有使用命名空间,在项目中该如何使用这个包? 编辑composer.json文件 "autoload":{ "files& ...
- DBCC 命令2
状态查询:收集和显示各类信息,状态检查. 如cachestats.pss.sqlmgrstats.memorystatus.proccache.freeproccache.freesystemcach ...
- 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一
细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework ADO.NET Entity Framework 是微软以 ADO.N ...
- 支持断点续传的文件上传插件——Huploadify-V2.0来了
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- 记一个界面刷新相关的Bug
今天遇到一个比较有意思的bug, 这里简单记录下. Bug的症状是通过拖拉边框把我们客户端主窗口拖小之后,再最大化,会发现窗口显示有问题, 看起来像是刷新问题, 有些地方显示的不对了. 这里要说明的是 ...
- Xamarin 技术全解析
Xamarin 是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后在4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio中免费提供Xama ...
- [翻译]AKKA笔记 - ACTOR MESSAGING - REQUEST AND RESPONSE -3
上次我们看Actor消息机制,我们看到开火-忘记型消息发出(意思是我们只要发个消息给Actor但是不期望有响应). 技术上来讲, 我们发消息给Actors就是要它的副作用. 这就是这么设计的.除了不响 ...