欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库中DELIMITER修改结束符教程及应用实例

程序员文章站 2022-03-16 16:42:17
关于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)