MySQL - SHOW EVENTS 语句



MySQL SHOW EVENTS 语句

MySQL 事件只不过是在特定时间执行的任务。一个事件可以包含一个或多个 MySQL 语句,这些语句存储在数据库中,并在指定的时间表中执行。

SHOW EVENTS 语句列出(有关)指定模式中事件的信息。

语法

以下是 MySQL SHOW EVENTS 语句的语法:

SHOW EVENTS
   [{FROM | IN} schema_name]
   [LIKE 'pattern' | WHERE expr]

示例

假设我们已经创建了一个名为 data 的表,并创建了一个向其中插入记录的事件。

CREATE TABLE Data (Name VARCHAR(255), age INT);
CREATE EVENT sample_event ON SCHEDULE EVERY 1 MONTH DO TRUNCATE TABLE data;

以下查询列出当前数据库中的事件:

SHOW EVENTS\G;

输出

查询执行后,将产生如下所示的输出:

************* 1. row *************
                  Db: test
                Name: event_hourly
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-05 14:51:03
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************* 2. row *************
                  Db: test
                Name: new_event_name
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-04 14:08:03
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************* 3. row *************
                  Db: test
                Name: sample_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-13 12:01:05
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

FROM 或 IN 子句

您可以使用 FROM 子句从特定数据库检索事件的描述。

示例

假设我们使用 CREATE DATABASE 语句创建了一个名为 demo 的数据库:

CREATE DATABASE demo;

现在,让我们使用 CREATE TABLE 语句在其中创建一个表:

CREATE TABLE demo.Data (Name VARCHAR(255), age INT);

让我们创建两个名为 example_event1 和 example_event2 的事件,它们在执行后一分钟向上面创建的表中插入一条记录:

CREATE EVENT demo.example_event ON SCHEDULE AT CURRENT_TIMESTAMP + 
INTERVAL 1 Hour DO INSERT INTO new.Data VALUES('Rahman', 25);

CREATE EVENT demo.event_hourly ON SCHEDULE EVERY 1 MONTH DO 
TRUNCATE TABLE data;

以下查询列出名为 demo 的数据库中所有(即将发生的)事件:

SHOW EVENTS FROM demo\G;

输出

以下是上述查询的输出:

************* 1. row *************
                  Db: demo
                Name: event_hourly
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2021-05-12 22:13:53
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
  Database Collation: utf8mb4_0900_ai_ci
************* 2. row *************
                  Db: demo
                Name: example_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: ONE TIME
          Execute at: 2021-05-12 23:13:10
      Interval value: NULL
      Interval field: NULL
              Starts: NULL
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
  Database Collation: utf8mb4_0900_ai_ci
2 rows in set (0.26 sec)

您也可以使用 IN 子句代替 FROM,如下所示:

SHOW EVENTS IN demo\G;

输出

执行上述查询后,将生成如下所示的输出:

************** 1. row **************
                  Db: demo
                Name: event_hourly
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-13 12:04:41
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                  Db: demo
                Name: example_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: ONE TIME
          Execute at: 2023-12-13 13:04:35
      Interval value: NULL
      Interval field: NULL
              Starts: NULL
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

LIKE 子句

使用 LIKE 子句,您可以指定一个模式来检索特定的表。以下查询检索名称以字母“e”开头的事件的信息。

SHOW EVENTS LIKE 'e%'\G;

输出

以下是上述查询的输出:

************** 1. row ************** 
                  Db: demo
                Name: event_hourly
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-13 12:04:41
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
**************  2. row ************** 
                  Db: demo
                Name: example_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: ONE TIME
          Execute at: 2023-12-13 13:04:35
      Interval value: NULL
      Interval field: NULL
              Starts: NULL
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

WHERE 子句

您可以使用 SHOW EVENTS 语句的 WHERE 子句来检索与指定条件匹配的表名。

示例

以下查询列出名为 demo 的数据库中类型为recurring的事件。这里我们使用带有 WHERE 子句的 SHOW EVENTS 语句。

SHOW EVENTS FROM demo WHERE Type = 'RECURRING'\G;

输出

执行上述查询后,将生成以下输出:

*************************** 1. row ***************************
                  Db: demo
                Name: event_hourly
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-13 12:04:41
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
广告
© . All rights reserved.