MySQL - DO 语句
MySQL 语句中的 DO 语句用于执行 MySQL 表达式。它类似于 SELECT 语句,并且不返回任何值。
示例
SLEEP() 函数接受一个整数值,并暂停指定的秒数。执行以下查询后,它会等待 15 秒后执行,因为我们使用了 SELECT 语句,所以该查询生成的结果集为 0,如下所示 -
mysql> SELECT SLEEP(15); +-----------+ | SLEEP(15) | +-----------+ | 0 | +-----------+
如果使用 DO 语句,它只会暂停指定的时间 -
rettyprint notranslate"> mysql> DO SLEEP(15);
正如您所观察到的,如果使用 DO 语句,结果集将不会显示。
示例
以下是另一个演示 DO 语句用法的示例。它创建一个每月截断表数据的事件 -
mysql> CREATE EVENT event_hourly ON SCHEDULE EVERY 1 MONTH DO TRUNCATE TABLE data;
示例
假设我们已经使用以下命令创建了一个名为 data 的表CREATE TABLE 语句如下所示 -
mysql> CREATE TABLE Data (Name VARCHAR(255), age INT);
以下查询创建两个事件,名称分别为 example_event1 和 example_event2,并在执行一分钟后在上述创建的表中插入一条记录
mysql> CREATE EVENT example_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 Hour DO INSERT INTO new.Data VALUES('Rahman', 25); mysql> CREATE EVENT event_hourly ON SCHEDULE EVERY 1 MONTH DO TRUNCATE TABLE data;
SHOW EVENTS 语句列出了所有(即将发生的)事件。
mysql> SHOW EVENTS;
这将生成以下输出 -
+------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+ | new | event_hourly | root@localhost | SYSTEM | RECURRING | NULL | 1 | MONTH | 2021-03-10 20:58:41 | NULL | ENABLED | 1 | cp850 | cp850_general_ci | utf8mb4_0900_ai_ci | | new | example_event | root@localhost | SYSTEM | ONE TIME | 2021-03-10 21:58:33 | NULL | NULL | NULL | NULL | ENABLED | 1 | cp850 | cp850_general_ci | utf8mb4_0900_ai_ci | +------+---------------+----------------+-----------+-----------+---------------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+ 2 rows in set (0.09 sec)
mysql_statements_reference.html