mysql 5.0存储过程学习总结
一.创建存储过程
1.基本语法:
1 create procedure sp_name()
2 begin
3 ………
4 end
2.参数传递
二.调用存储过程
1.基本语法:
1 call sp_name()
三.删除存储过程
1.基本语法:
1 drop procedure sp_name//
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环
1.区块定义,常用
也可以给区块起别名,如:
1 begin
2 ……
3 end;
1 label:begin
2 ……
3 end label;
2.条件语句
1 if 条件 then
2 statement
3 else
4 statement
5 end if;
3.循环语句
(1).while循环
1 [label:] WHILE expression DO
2 statements
3 END WHILE [label] ;
(2).loop循环
1 [label:] LOOP
2 statements
3 END LOOP [label];
(3).repeat until循环
1 [label:] REPEAT
2 statements
3 UNTIL expression
4 END REPEAT [label] ;
五.其他常用命令
1 show procedure status
2 show create procedure sp_name
mysql存储过程中要用到的运算符
mysql存储过程学习总结-操作符
算术运算符
1 + 加 SET var1=2+2; 4
2 - 减 SET var2=3-2; 1
3 * 乘 SET var3=3*2; 6
4 / 除 SET var4=10/3; 3.3333
5 DIV 整除 SET var5=10 DIV 3; 3
6 % 取模 SET var6=10%3; 1
比较运算符
1 > 大于 1>2 False
2 < 小于 2<1 False
3 <= 小于等于 2<=2 True
4 >= 大于等于 3>=2 True
5 BETWEEN 在两值之间 5 BETWEEN 1 AND 10 True
6 NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
7 IN 在集合中 5 IN (1,2,3,4) False
8 NOT IN 不在集合中 5 NOT IN (1,2,3,4) True
9 = 等于 2=3 False
10 <>, != 不等于 2<>3 False
11 <=> 严格比较两个NULL值是否相等 NULL<=>NULL True
12 LIKE 简单模式匹配 "Guy Harrison" LIKE "Guy%" True
13 REGEXP 正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
14 IS NULL 为空 0 IS NULL False
15 IS NOT NULL 不为空 0 IS NOT NULL True
逻辑运算符
与(AND)
AND |
TRUE |
FALSE |
NULL |
---|---|---|---|
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
NULL |
NULL |
NULL |
或(OR)
OR |
TRUE |
FALSE |
NULL |
---|---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
异或(XOR)
XOR |
TRUE |
FALSE |
NULL |
---|---|---|---|
TRUE |
FALSE |
TRUE |
NULL |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
NULL |
NULL |
NULL |
位运算符
1 | 位或
2 & 位与
3 << 左移位
4 >> 右移位
5 ~ 位非(单目运算,按位取反)
mysq存储过程中常用的函数,字符串类型操作,数学类,日期时间类。
mysql存储过程基本函数
一.字符串类
1 CHARSET(str) //返回字串字符集
2 CONCAT(string2[,...]) //连接字串
3 INSTR(string, substring) //返回substring首次在string中出现的位置,不存在返回0
4 LCASE(string2) //转换成小写
5 LEFT(string2, length) //从string2中的左边起取length个字符
6 LENGTH(string) //string长度
7 LOAD_FILE(file_name) //从文件读取内容
8 LOCATE(substring, string[, start_position]) //同INSTR,但可指定开始位置
9 LPAD(string2, length, pad) //重复用pad加在string开头,直到字串长度为length
10 LTRIM(string2) //去除前端空格
11 REPEAT(string2, count) //重复count次
12 REPLACE(str, search_str, replace_str) //在str中用replace_str替换search_str
13 RPAD(string2, length, pad) //在str后用pad补充,直到长度为length
14 RTRIM(string2) //去除后端空格
15 STRCMP(string1, string2) //逐字符比较两字串大小,
16 SUBSTRING(str, position[, length]) //从str的position开始,取length个字符,注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1
1 mysql> select substring(’abcd’,0,2);
2 +———————–+
3 | substring(’abcd’,0,2) |
4 +———————–+
5 | |
6 +———————–+
7 1 row in set (0.00 sec)
1 mysql> select substring(’abcd’,1,2);
2 +———————–+
3 | substring(’abcd’,1,2) |
4 +———————–+
5 | ab |
6 +———————–+
7 1 row in set (0.02 sec)
1 TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
2 UCASE(string2) //转换成大写
3 RIGHT(string2, length) //取string2最后length个字符
4 SPACE(count) //生成count个空格
二.数学类
1 ABS(number2) //绝对值
2 BIN(decimal_number) //十进制转二进制
3 CEILING(number2) //向上取整
4 CONV(number2, from_base, to_base) //进制转换
5 FLOOR(number2) //向下取整
6 FORMAT(number, decimal_places) //保留小数位数
7 HEX(DecimalNumber) //转十六进制
8 注:HEX()中可传入字符串,则返回其ASC-11码,如HEX(’DEF’)返回4142143
9 也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
10 LEAST(number ,number2[, ...]) //求最小值
11 MOD(numerator, denominator) //求余
12 POWER(number, power) //求指数
13 RAND([seed]) //随机数
14 ROUND(number[, decimals]) //四舍五入,decimals为小数位数
1 注:返回类型并非均为整数,如:
2 (1)默认变为整形值
3 mysql> select round(1.23);
4 +————-+
5 | round(1.23) |
6 +————-+
7 | 1 |
8 +————-+
9 1 row in set (0.00 sec)
1 mysql> select round(1.56);
2 +————-+
3 | round(1.56) |
4 +————-+
5 | 2 |
6 +————-+
7 1 row in set (0.00 sec)
1 (2)可以设定小数位数,返回浮点型数据
2 mysql> select round(1.567,2);
3 +—————-+
4 | round(1.567,2) |
5 +—————-+
6 | 1.57 |
7 +—————-+
8 1 row in set (0.00 sec)
1 SIGN (number2) //返回符号,正负或0
2 SQRT(number2) //开平方
三.日期时间类
1 ADDTIME(date2, time_interval) //将time_interval加到date2
2 CONVERT_TZ(datetime2, fromTZ, toTZ) //转换时区
3 CURRENT_DATE() //当前日期
4 CURRENT_TIME() //当前时间
5 CURRENT_TIMESTAMP() //当前时间戳
6 DATE(datetime) //返回datetime的日期部分
7 DATE_ADD(date2, INTERVAL d_value d_type) //在date2中加上日期或时间
8 DATE_FORMAT(datetime, FormatCodes) //使用formatcodes格式显示datetime
9 DATE_SUB(date2, INTERVAL d_value d_type) //在date2上减去一个时间
10 DATEDIFF(date1, date2) //两个日期差
11 DAY(date) //返回日期的天
12 DAYNAME(date) //英文星期
13 DAYOFWEEK(date) //星期(1-7) ,1为星期天
14 DAYOFYEAR(date) //一年中的第几天
15 EXTRACT(interval_name FROM date) //从date中提取日期的指定部分
16 MAKEDATE(year, day) //给出年及年中的第几天,生成日期串
17 MAKETIME(hour, minute, second) //生成时间串
18 MONTHNAME(date) //英文月份名
19 NOW() //当前时间
20 SEC_TO_TIME(seconds) //秒数转成时间
21 STR_TO_DATE(string, format) //字串转成时间,以format格式显示
22 TIMEDIFF(datetime1, datetime2) //两个时间差
23 TIME_TO_SEC(time) //时间转秒数]
24 WEEK(date_time[, start_of_week]) //第几周
25 YEAR(datetime) //年份
26 DAYOFMONTH(datetime) //月的第几天
27 HOUR(datetime) //小时
28 LAST_DAY(date) //date的月的最后日期
29 MICROSECOND(datetime) //微秒
30 MONTH(datetime) //月
31 MINUTE(datetime) //分
附:可用在INTERVAL中的类型
DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR
2007-05-11 12:55:21 in MySQL
at