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
廣告