1,变量
DECLARE声明,SET赋值
变量类型:

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
逻辑操作符
OR
XOR
位操作符
&
<<
>>
~
6,内建函数
分为字符串函数、算术函数、日期和时间函数和其他函数
常用MySQL函数

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类似,但是可以有多个值

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;”时看到。

+---------+------+----------------------------------------+
| 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下工作,这样可以避免不可预期的错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2009-11-02 ASP.NET常用的26个优化性能方法
2009-11-02 ASp.net中Froms验证方式
2009-11-02 简单自定义实现jQuery验证
2009-11-02 SQL性能测试