打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MySQL存储过程语法基础
存储过程语法基础

1,变量
DECLARE声明,SET赋值

变量类型:
Java代码
  1. INT, INTEGER   
  2. BIGINT   
  3. FLOAT   
  4. DOUBLE   
  5. DECIMAL(precision, scale), NUMERIC(precision, scale)   
  6. DATE   
  7. DATETIME   
  8. CHAR(length)   
  9. VARCHAR(length)   
  10. BLOB, TEXT   
  11. LONGBLOB, LONGTEXT  


可以在DECLARE变量时用DEFAULT设置默认值,不设则为NULL

2,参数
参数分IN、OUT和INOUT类型

3,用户变量
以@开头的为用户变量,作用域为session,所以可以当作全局变量使用

4,注释
Java代码
  1. //为单行注释   
  2.   
  3. /*  
  4. |  
  5. |  多行注释  
  6. |  
  7. */  


5,操作符
算术操作符
Java代码
  1. +   
  2. -   
  3. *   
  4. /     # 结果可能为小数   
  5. DIV   # 结果为整数   
  6. %  

比较操作符
Java代码
  1. >   
  2. <   
  3. <=   
  4. >=   
  5. BETWEEN   
  6. NOT BETWEEN   
  7. IN   
  8. NOT IN   
  9. =   
  10. <>, !=             # 不等号   
  11. <=>                # Null safe equal (returns TRUE if both arguments are Null)   
  12. LIKE   
  13. REGEXP   
  14. IS NULL   
  15. IS NOT NULL  

逻辑操作符
Java代码
  1. AND   
  2. OR   
  3. XOR  

位操作符
Java代码
  1. |   
  2. &   
  3. <<   
  4. >>   
  5. ~  


6,内建函数
分为字符串函数、算术函数、日期和时间函数和其他函数

常用MySQL函数
Java代码
  1. ABS   
  2. CEILING   
  3. CONCAT   
  4. CURDATE   
  5. DATE_ADD   
  6. DATE_SUB   
  7. FORMAT   
  8. GREATEST   
  9. IF   
  10. IFNULL   
  11. INSERT   
  12. INSTR   
  13. ISNULL   
  14. LEAST   
  15. LEFT   
  16. LENGTH   
  17. LOCATE   
  18. LOWER   
  19. LPAD   
  20. LTRIM   
  21. MOD   
  22. NOW   
  23. POWER   
  24. RAND   
  25. REPEAT   
  26. REPLACE   
  27. ROUND   
  28. RPAD   
  29. RTRIM   
  30. SIGN   
  31. SQRT   
  32. STRCMP   
  33. SUBSTRING   
  34. UPPER   
  35. VERSION  


7,数据类型
MySQL中所有的变量都为单元素,没有数组的概念。

String类型
CHAR:定长,不足的部分用空格,超出的部分截断,最大255字节
VARCHAR:变长,不足的部分变短,超出的部分截断,最大65532字节

ENUM类型

SET类型
SET与ENUm类似,但是可以有多个值
Java代码
  1. CREATE PROCEDURE sp_set(in_option SET('Yes''No''Maybe'))   
  2. BEGIN   
  3.   SELECT in_option;   
  4. END   
  5.   
  6. --------------   
  7. CALL sp_set('Yes')   
  8. --------------   
  9.   
  10. +-----------+   
  11. | in_option |   
  12. +-----------+   
  13. | Yes       |   
  14. +-----------+   
  15. 1 row in set (0.01 sec)   
  16.   
  17. Query OK, 0 rows affected (0.01 sec)   
  18.   
  19. --------------   
  20. CALL sp_set('Yes,No,Maybe')   
  21. --------------   
  22.   
  23. +--------------+   
  24. | in_option    |   
  25. +--------------+   
  26. | Yes,No,Maybe |   
  27. +--------------+   
  28. 1 row in set (0.00 sec)   
  29.   
  30. Query OK, 0 rows affected (0.00 sec)   
  31.   
  32. --------------   
  33. CALL sp_set('Yes,No,Go away')   
  34. --------------   
  35.   
  36. ERROR 1265 (01000): Data truncated for column 'in_option' at row 1  


Numeric类型

DATE和DATETIME类型
DATE用于存储日期,DATETIME用于存储日期和时间

TEXT和BLOB类型
TEXT可以存储64K,LONGTEXT可以存储4G
BLOB和LONGBLOB与之类似,但是它们还可以存储二进制数据

8,sql_mode

'STRICT_TRANS_TABLES'(默认值): 对transactional的table做严格数据类型限制
'STRICT_ALL_TABLES': 对所有table都做严格数据类型限制

在strict mode下,如果出现Data truncate错误(如将String赋值给Integer)会raise error,而在no strict mode下则会出现不可预料的行为(如将String赋值给Integer时值变为0)并且只能在“show warnings;”时看到。
Java代码
  1. mysql> SHOW WARNINGS;   
  2. +---------+------+----------------------------------------+   
  3. | Level   | Code | Message                                |   
  4. +---------+------+----------------------------------------+   
  5. | Warning | 1265 | Data truncated for column 'b' at row 1 |   
  6. | Warning | 1265 | Data truncated for column 'c' at row 1 |   
  7. +---------+------+----------------------------------------+  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MySQL:MySQL 创建存储过程(MySQL 5.0)--索伦之都
MySQL 存储过程的基本用法
Mysql调试存储过程最简单的方法
MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)
DB2编程序技巧 (四)
MySql 存储过程实例(附完整注释)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服