千家信息网

MySQL怎么自定义变量和语句结束分隔符

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天小编给大家分享一下MySQL怎么自定义变量和语句结束分隔符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2026年11月01日MySQL怎么自定义变量和语句结束分隔符

今天小编给大家分享一下MySQL怎么自定义变量和语句结束分隔符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

存储程序

有时候为了完成一个常用的功能需要执行许多条语句,每次都在客户端里一条一条的去输入这么多语句是很烦的。设计MySQL的大叔非常贴心的给我们提供了一种称之为存储程序的东东,这个所谓的存储程序可以封装一些语句,然后给用户提供一种简单的方式来调用这个存储程序,从而间接地执行这些语句。根据调用方式的不同,我们可以把存储程序分为存储例程、触发器和事件这几种类型。其中,存储例程又可以被细分为存储函数和存储过程。我们画个图表示一下:

别看出现了很多陌生的概念,别怕,我们后边会各个击破的。不过在正式介绍存储程序之前,我们需要先了解一下MySQL中的自定义变量和语句结束分隔符的概念。

自定义变量简介

生活中我们经常会遇到一些固定不变的值,比如数字100、字符串'你好呀',我们把这些值固定不变的东东称之为常量。可是有时候为了方便,我们会使用某一个符号来代表一个值,它代表的值是可以变化的。比方说我们规定符号a代表数字1,之后我们又可以让符号a代表数字2,我们把这种值可以发生变化的东东称之为变量,其中符号a就称为这个变量的变量名。在MySQL中,我们可以通过SET语句来自定义一些我们自己的变量,比方说这样:

mysql> SET @a = 1;Query OK, 0 rows affected (0.00 sec)mysql>

上边的语句就表明我们定义了一个称之为a的变量,并且把整数1赋值给了这个变量。不过大家需要注意一下,设计MySQL的大叔规定,在我们的自定义变量前边必须加一个@符号(虽然有点儿怪,但这就是人家规定的,大家遵守就好了)。

如果我们之后想查看这个变量的值的话,使用SELECT语句就好了,不过仍然需要在变量名称前加一个@符号:

mysql> SELECT @a;+------+| @a   |+------+|    1 |+------+1 row in set (0.00 sec)mysql>

同一个变量也可以存储存储不同类型的值,比方说我们再把一个字符串值赋值给变量a:

mysql> SET @a = '哈哈哈';Query OK, 0 rows affected (0.01 sec)mysql> SELECT @a;+-----------+| @a        |+-----------+| 哈哈哈    |+-----------+1 row in set (0.00 sec)mysql>

除了把一个常量赋值给一个变量以外,我们还可以把一个变量赋值给另一个变量:

mysql> SET @b = @a;Query OK, 0 rows affected (0.00 sec)mysql> select @b;+-----------+| @b        |+-----------+| 哈哈哈    |+-----------+1 row in set (0.00 sec)mysql>

这样变量a和b就有了相同的值'哇哈哈'!

我们还可以将某个查询的结果赋值给一个变量,前提是这个查询的结果只有一个值:

mysql> SET @a = (SELECT m1 FROM t1 LIMIT 1);Query OK, 0 rows affected (0.00 sec)mysql>

还可以用另一种形式的语句来将查询的结果赋值给一个变量:

mysql> SELECT n1 FROM t1 LIMIT 1 INTO @b;Query OK, 1 row affected (0.00 sec)mysql>

因为语句SELECT m1 FROM t1 LIMIT 1和SELECT n1 FROM t1 LIMIT 1的查询结果都只有一个值,所以它们可以直接赋值给变量a或者b。我们查看一下这两个变量的值:

mysql> SELECT @a, @b;+------+------+| @a   | @b   |+------+------+|    1 | a    |+------+------+1 row in set (0.00 sec)mysql>

如果我们的查询结果是一条记录,该记录中有多个列的值的话,我们想把这几个值分别赋值到不同的变量中,只能使用INTO语句了:

mysql> SELECT m1, n1 FROM t1 LIMIT 1 INTO @a, @b;Query OK, 1 row affected (0.00 sec)mysql>

这条查询语句的结果集中只包含一条记录,我们把这条记录的m1列的值赋值到了变量a中,n1列的值赋值到了变量b中。

语句结束分隔符

在MySQL客户端的交互界面处,当我们完成键盘输入并按下回车键时,MySQL客户端会检测我们输入的内容中是否包含;、\g或者\G这三个符号之一,如果有的话,会把我们输入的内容发送到服务器。这样一来,如果我们想一次性给服务器发送多条的话,就需要把这些语句写到一行中,比如这样:

mysql> SELECT * FROM t1 LIMIT 1;SELECT * FROM t2 LIMIT 1;SELECT * FROM t3 LIMIT 1;+------+------+| m1   | n1   |+------+------+|    1 | a    |+------+------+1 row in set (0.00 sec)+------+------+| m2   | n2   |+------+------+|    2 | b    |+------+------+1 row in set (0.00 sec)+------+------+| m3   | n3   |+------+------+|    3 | c    |+------+------+1 row in set (0.00 sec)mysql>

造成这一不便的原因在于,MySQL客户端检测输入结束用的符号和分隔各个语句的符号是一样的!其实我们也可以用delimiter命令来自定义MySQL的检测语句输入结束的符号,也就是所谓的语句结束分隔符,比如这样:

mysql> delimiter $mysql> SELECT * FROM t1 LIMIT 1;    -> SELECT * FROM t2 LIMIT 1;    -> SELECT * FROM t3 LIMIT 1;    -> $+------+------+| m1   | n1   |+------+------+|    1 | a    |+------+------+1 row in set (0.00 sec)+------+------+| m2   | n2   |+------+------+|    2 | b    |+------+------+1 row in set (0.00 sec)+------+------+| m3   | n3   |+------+------+|    3 | c    |+------+------+1 row in set (0.00 sec)mysql>

delimiter $命令意味着修改语句结束分隔符为$,也就是说之后MySQL客户端检测用户语句输入结束的符号为$。上边例子中我们虽然连续输入了3个以分号;结尾的查询语句并且按了回车键,但是输入的内容并没有被提交,直到敲下$符号并回车,MySQL客户端才会将我们输入的内容提交到服务器,此时我们输入的内容里已经包含了3个独立的查询语句了,所以返回了3个结果集。

我们也可以将语句结束分隔符重新定义为$以外的其他包含单个或多个字符的字符串,比方说这样:

mysql> delimiter EOFmysql> SELECT * FROM t1 LIMIT 1;    -> SELECT * FROM t2 LIMIT 1;    -> SELECT * FROM t3 LIMIT 1;    -> EOF+------+------+| m1   | n1   |+------+------+|    1 | a    |+------+------+1 row in set (0.00 sec)+------+------+| m2   | n2   |+------+------+|    2 | b    |+------+------+1 row in set (0.00 sec)+------+------+| m3   | n3   |+------+------+|    3 | c    |+------+------+1 row in set (0.00 sec)mysql>

我们这里采用了EOF作为MySQL客户端检测输入结束的符号,是不是很easy啊!当然,这个只是为了方便我们一次性输入多个语句,在输入完成之后最好还是改回我们常用的分号;吧:

mysql> delimiter ;

小贴士: 我们应该避免使用反斜杠(\)字符作为语句结束分隔符,因为这是MySQL的转义字符。

以上就是"MySQL怎么自定义变量和语句结束分隔符"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

语句 变量 输入 符号 存储 分隔符 查询 内容 客户 结果 字符 客户端 程序 检测 不同 代表 知识 篇文章 多个 字符串 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 互联网金融科技 喔噻互联网科技有限公司 互联网科技保险 互联网是不是新科技 互联网公司 科技公司 致聘互联网科技 狮子座互联网科技培训 富国互联网科技创新基金 西藏七维空间互联网科技有限公司 河南猎农互联网科技有限公司 昊天互联网科技有限公司 长沙茂晟互联网科技有限公司 互联网金融科技名词解释 合肥互联网科技公司公章图片 半导体行业属于互联网高科技类吗 互联网硬科技公司 互联网领先科技活动 互联网科技创业有什么好项目 颐高云石互联网科技 互联网是第几次科技革命的成果 科技服务与互联网 互联网科技logo设计 上海电发互联网科技有限公司 阿里互联网科技公司 2021互联网科技公司排名 四川互联网展示科技馆设计 上海创道互联网络科技有限公司 扫呗互联网科技有限公司 求路客互联网科技电话
0