`
hideto
  • 浏览: 2651392 次
  • 性别: 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基础语法&存储过程示例.pdf

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

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

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

    MySQL数据库:存储过程的创建1.pptx

    创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)...

    SQL导出MySQL单个存储过程.txt

    SQL语句对单个的MySQL存储过程导出 首先确保参数secure-file-priv='' 表示不限制mysqld在任意目录的导入导出 打开my.cnf或my.ini,加入如下语句后重启mysql服务。 secure_file_priv='' sql语法只修改下面的...

    在MySQL中创建带有IN和OUT参数的存储过程的方法

    这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法。这些示例已在 MySQL 5.5 中通过测试。我们将用下面的雇员表创建并测试这些储存过程:   mysql&gt; select * from employee; +--------+-...

    mysql存储过程之case语句用法实例详解

    本文实例讲述了mysql存储过程之case语句用法。分享给大家供大家参考,具体如下: 除了if语句,mysql提供了一个替代的条件语句CASE。 mysql的 CASE语句使代码更加可读和高效。废话不多说,我们先来看下简单case语句的...

    mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。  ——————–基本语法——————–  一.创建存储过程  create procedure sp_name()  begin  ………  ...

    mysql存储过程之错误处理实例详解

    本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的...

    Mysql数据库存储过程基本语法讲解

    在此之前,小编给大家讲述过MYSQL语法的基本知识,本篇内容,小编通过下面的一个实例,给读者们通过实战中的代码讲解一下基本语法的知识。 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是...

    mysql存储过程

    如何编写 mysql存储过程 ,对存储过程的各种写法,语法,例子齐全。是编写mysql存储过程的法宝

    2021年MySQL高级教程视频.rar

    16.MySQL高级存储过程创建调用查询删除语法.avi 17.MySQL高级存储过程语法变量.avi 18.MySQL高级存储过程语法if判断.avi 19.MySQL高级存储过程语法输入参数.avi 20.MySQL高级存储过程语法输出参数.avi 21.MySQL高级...

    mysql 存储过程中变量的定义与赋值操作

    一、变量的定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]

    Mysql存储过程

    详细介绍Mysql存储过程语法,针对初学者非常适合,对存储有个全面的介绍

    MySQL存储过程详解

    mysql 5.0存储过程教程,一共59页。 每一语法都会有几个相应的案例。

    mysql存储过程快速了解

    创建存储过程及其一些相关语法: -- 创建一个存储过程,名为mypro;传入参数(参数)为a,传出参数(返回值)为b create procedure mypro(in a int,out b int) begin select '这是一个存储过程'; set b=1; end; -- ...

    MYSQL存储过程即常用逻辑知识点总结

    Mysql存储过程 1.创建存储过程语法(格式) DELIMITER $ CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回参数名c INT) BEGIN  内容.......... END $ 解析: IN 代表...

    MySQL高级教程视频.zip

    16.存储过程 - 创建调用查询删除语法 17.存储过程 - 语法 - 变量 18.存储过程 - 语法 - if判断 19.存储过程 - 语法 - 输入参数 20.存储过程 - 语法 - 输出参数 21.存储过程 - 语法 - case结构 22.存储过程 - 语法 - ...

    代码自动生成工具(vb类 java类 sql存储过程...)

    根据自定义模板通过数据库表、视图和存储过程批量生成代码, 模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和...

Global site tag (gtag.js) - Google Analytics