MySQL数据库中DELIMITER修改结束符教程及应用实例
程序员文章站
2022-07-01 08:56:28
关于DELIMITER
在MySQL中默认的结束符DELIMITER是;,它用于标识一段命令是否结束。在默认情况下,在命令行客户端中,如果有一行命令以;结束,那么回车后,MySQ...
关于DELIMITER
在MySQL中默认的结束符DELIMITER是;,它用于标识一段命令是否结束。在默认情况下,在命令行客户端中,如果有一行命令以;结束,那么回车后,MySQL将会执行该命令。
修改DELIMITER
如何修改
在使用习惯中,我们经常将结束符更改为 ;; 、// 、 $$ 等。
DELIMITER 新的换行符
示例:
mysql> SELECT NOW(); # 默认情况下结束符为 ; +---------------------+ | NOW() | +---------------------+ | 2017-10-30 21:05:34 | +---------------------+ 1 row in set (0.00 sec) mysql> DELIMITER // # 更改结束符为 // mysql> SELECT NOW()// # 此时结束符已经为 // +---------------------+ | NOW() | +---------------------+ | 2017-10-30 21:05:55 | +---------------------+ 1 row in set (0.00 sec) mysql>
为什么要修改
有时候我们输入的语句不希望立即执行,但是语句中包含有分号;需要输入时,比如说我们在创建函数或者创建存储过程的时候,我们需要在函数中创建多条语句,此时如果用;分隔不同语句时就会导致直接执行目前所键入的命令,而创建函数或构建方法失败。
案例演示
现在以一个案例来展现,创建一个函数,该函数的作用是根据id删除对应的用户,并返回操作时间。
mysql> SELECT * FROM user_info; +----+----------+----------------------------------+------+-----+ | id | username | password | age | sex | +----+----------+----------------------------------+------+-----+ | 1 | AAA | 7fc56270e7a70fa81a5935b72eacbe29 | 20 | 1 | | 2 | BBB | 9d5ed678fe57bcca610140957afab571 | 25 | 0 | | 3 | CCC | 0d61f8370cad1d412f80b84d143e1257 | 22 | 0 | | 4 | DDD | f623e75af30e62bbd73d6df5b50bb7b5 | 24 | 1 | +----+----------+----------------------------------+------+-----+ 4 rows in set (0.00 sec) mysql> DELIMITER // # 更改结束符为 // mysql> CREATE FUNCTION delUser(userid INT UNSIGNED) -> RETURNS VARCHAR(30) # 设定返回类型 -> BEGIN -> DELETE FROM user_info WHERE id = userid; # 删除指定id用户 -> RETURN NOW(); # 返回操作时间 -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; # 改回默认结束符; mysql> SELECT delUser(3); +---------------------+ | delUser(3) | +---------------------+ | 2017-10-30 22:10:25 | +---------------------+ 1 row in set (0.01 sec) mysql> SELECT * FROM user_info; +----+----------+----------------------------------+------+-----+ | id | username | password | age | sex | +----+----------+----------------------------------+------+-----+ | 1 | AAA | 7fc56270e7a70fa81a5935b72eacbe29 | 20 | 1 | | 2 | BBB | 9d5ed678fe57bcca610140957afab571 | 25 | 0 | | 4 | DDD | f623e75af30e62bbd73d6df5b50bb7b5 | 24 | 1 | +----+----------+----------------------------------+------+-----+ 3 rows in set (0.00 sec)