`
hideto
  • 浏览: 2682865 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL存储过程语法基础

阅读更多
存储过程语法基础

1,变量
DECLARE声明,SET赋值

变量类型:
INT, INTEGER
BIGINT
FLOAT
DOUBLE
DECIMAL(precision, scale), NUMERIC(precision, scale)
DATE
DATETIME
CHAR(length)
VARCHAR(length)
BLOB, TEXT
LONGBLOB, LONGTEXT


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

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

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

4,注释
//为单行注释

/*
|
|  多行注释
|
*/


5,操作符
算术操作符
+
-
*
/     # 结果可能为小数
DIV   # 结果为整数
%

比较操作符
>
<
<=
>=
BETWEEN
NOT BETWEEN
IN
NOT IN
=
<>, !=             # 不等号
<=>                # Null safe equal (returns TRUE if both arguments are Null)
LIKE
REGEXP
IS NULL
IS NOT NULL

逻辑操作符
AND
OR
XOR

位操作符
|
&
<<
>>
~


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

常用MySQL函数
ABS
CEILING
CONCAT
CURDATE
DATE_ADD
DATE_SUB
FORMAT
GREATEST
IF
IFNULL
INSERT
INSTR
ISNULL
LEAST
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MOD
NOW
POWER
RAND
REPEAT
REPLACE
ROUND
RPAD
RTRIM
SIGN
SQRT
STRCMP
SUBSTRING
UPPER
VERSION


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

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

ENUM类型

SET类型
SET与ENUm类似,但是可以有多个值
CREATE PROCEDURE sp_set(in_option SET('Yes', 'No', 'Maybe'))
BEGIN
  SELECT in_option;
END

--------------
CALL sp_set('Yes')
--------------

+-----------+
| in_option |
+-----------+
| Yes       |
+-----------+
1 row in set (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

--------------
CALL sp_set('Yes,No,Maybe')
--------------

+--------------+
| in_option    |
+--------------+
| Yes,No,Maybe |
+--------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

--------------
CALL sp_set('Yes,No,Go away')
--------------

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;”时看到。
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'b' at row 1 |
| Warning | 1265 | Data truncated for column 'c' at row 1 |
+---------+------+----------------------------------------+


存储过程应该一直在strict mode下工作,这样可以避免不可预期的错误。
分享到:
评论

相关推荐

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    mysql经典教程+mysql存储过程讲解

    本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...

    mysql存储过程实例

    存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 以后的版本开始支持存储过程。一个存储过程包括名字、参数列表,以及可以包括很多 SQL 语句的 SQL 语句集。创建存储过程的语法如下: ```sql create procedure ...

    MySQL存储过程.rar

    在提供的压缩包文件中,"MySQL存储过程.pdf"很可能是一份详细讲解MySQL存储过程的教程,涵盖了从基础概念到高级用法的全方位介绍。"下载说明.txt"可能包含关于如何正确获取和使用这份教程的指导,而"A5下载- 更全的...

    MySQL存储过程编程教程.pdf

    1. MySQL存储过程编程基础:熟悉存储过程的基本概念、语法结构、如何创建存储过程以及存储过程中常见的SQL语句使用和错误处理机制。 2. 创建存储过程程序:掌握事务处理的方法,了解MySQL内建函数的使用,学习如何...

    mysql存储过程、触发器.pdf

    MySQL 存储过程和触发器详解 MySQL 存储过程是指一组为了完成特定功能的 SQL 语句集合。存储过程的优点包括: 1. 封装性:存储过程可以将多个 SQL 语句封装在一起,方便调用和维护。 2. 可增强 SQL 语句的功能和...

    mysql存储过程调试工具

    MySQL存储过程调试是数据库开发中的重要环节,它能帮助开发者检查和优化代码,确保存储过程的正确性和效率。本文将详细介绍MySQL存储过程调试工具的使用,以及如何在不同版本的MySQL中进行有效调试。 首先,MySQL...

    存储过程文档--mysql

    创建存储过程的基本语法 Create procedure procedue_name [@parameter data_type][output] [with]{recompile|encryption} as sql_statement 实例 1: 查询表 Book 的内容的存储过程 Create proc query_book as ...

    MYSQL存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个教程将深入讲解如何在MySQL中创建、调用和管理存储过程,以及它们在实际应用中的价值。 ...

    玩转MySQL存储过程

    ### 玩转MySQL存储过程 #### 一、存储过程简介及优势 存储过程是一种预编译的SQL语句集合,存储在数据库中,通过指定名称及其参数来调用执行。这种特性使得存储过程能够在执行时更加高效地完成特定任务。 **主要...

    mysql中文手册+mysql命令大全+mysql存储过程

    最后,"mysql存储过程.pdf"专注于MySQL的存储过程。存储过程是预编译的SQL语句集合,可以提高数据库操作的性能,减少网络流量,并增强数据安全。在PDF文档中,你将学习如何定义、调用和管理存储过程,以及如何使用...

    精通MySQL存储过程和函数

    ### 精通MySQL存储过程和函数 #### 1. 说明 ##### 1.1 手册适用范围 本手册适用于对MySQL存储过程和函数感兴趣的开发者和技术人员,特别是那些希望深入了解并掌握如何在实际项目中高效利用这些功能的专业人士。...

    Mysql存储过程和函数

    ### MySQL存储过程与函数详解 #### 一、概述 MySQL是一种广泛使用的开源关系型数据库管理系统,在数据管理和存储方面提供了强大的支持。其中,存储过程和函数是MySQL提供的两种重要的编程特性,它们可以帮助开发者...

    mysql存储过程与视图(存储过程语法介绍、MySQL视图用法、注意事项)..docx

    ### MySQL存储过程与视图详解 #### 一、MySQL存储过程 ##### 1、概念简介 存储过程是一种在数据库服务器中存储预编译SQL代码块的方式。这些代码块可以包括复杂的逻辑,允许用户通过简单的调用来执行一系列操作。...

    mysql基础语法&存储过程示例.zip

    本资料“mysql基础语法&存储过程示例.zip”聚焦于MySQL的基础语法和存储过程的实践应用,帮助初学者快速掌握MySQL的核心知识。 一、MySQL基础语法 1. 数据库操作:包括创建数据库(CREATE DATABASE)、查看数据库...

    mysql存储过程简单应用编写

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者封装一系列SQL语句并作为一个单元来执行,提高了数据库操作的效率和代码的复用性。在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环...

Global site tag (gtag.js) - Google Analytics