MySQL - 删除函数语句



MySQL 删除函数语句

函数是一块组织良好的、可重用的代码块,用于执行单个相关的操作。函数为您的应用程序提供了更好的模块化和高度的代码重用。

MySQL 提供了一组内置函数,用于执行特定的任务,例如 CURDATE() 函数返回当前日期。

您可以使用 DROP FUNCTION 语句删除函数。

语法

以下是删除函数语句的语法:

DROP FUNCTION function_name

其中,function_name 是您需要删除的函数的名称。

示例

假设我们使用以下 CREATE 语句创建了一个名为 Emp 的表:

CREATE TABLE Emp(
   Name VARCHAR(255), 
   DOB DATE, 
   Location VARCHAR(255)
);

现在,让我们向 Emp 表中插入一些记录:

INSERT INTO Emp VALUES 
('Amit', DATE('1970-01-08'), 'Hyderabad'),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'),
('Sudha', DATE('1980-11-06'), 'Vijayawada');

让我们创建一个 getDob() 函数,它接受员工的姓名,检索并返回 DOB 列的值。

DELIMITER //
CREATE FUNCTION test.getDob(emp_name VARCHAR(50))
   RETURNS DATE
   DETERMINISTIC
   BEGIN
      declare dateOfBirth DATE;
      select DOB into dateOfBirth from test.emp where Name = emp_name;
      return dateOfBirth;
   END//
DELIMITER ;

同样,如果我们创建了另一个表,如下所示:

CREATE TABLE student (
   Name VARCHAR(100), 
   Math INT, 
   English INT, 
   Science INT, 
   History INT
);

现在让我们向学生表中插入四条记录:

INSERT INTO student values
('Raman', 95, 89, 85, 81),
('Rahul' , 90, 87, 86, 81),
('Mohit', 90, 85, 86, 81),
('Saurabh', NULL, NULL, NULL, NULL );

以下函数更新了上面创建的表:

DELIMITER //
Create Function test.tbl_Update(S_name Varchar(50), 
   M1 INT, M2 INT, M3 INT, M4 INT)
   RETURNS INT
   DETERMINISTIC
   BEGIN
   UPDATE student SET Math = M1, English = M2, 
   Science = M3, History = M4 WHERE Name = S_name;
   RETURN 1;
   END //
DELIMITER ;

您可以使用 SHOW FUNCTION STATUS 语句验证数据库中的函数列表,如下所示:

SHOW FUNCTION STATUS WHERE db = 'test'\G;

输出

上述查询产生以下输出:

************ 1. row ************
                  Db: test
                Name: getDob
                Type: FUNCTION
             Definer: root@localhost
            Modified: 2023-12-05 15:03:56
             Created: 2023-12-05 15:03:56
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************ 2. row ************
                  Db: test
                Name: tbl_Update
                Type: FUNCTION
             Definer: root@localhost
            Modified: 2023-12-05 15:06:48
             Created: 2023-12-05 15:06:48
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

以下查询删除/丢弃上面创建的函数:

DROP FUNCTION getDob;

DROP FUNCTION tbl_update;

验证

由于我们已经删除了这两个函数。如果您再次验证函数列表,您将得到一个空集:

SHOW FUNCTION STATUS WHERE db = 'test';
Empty set (0.00 sec)

IF EXISTS 子句

如果您尝试删除一个不存在的函数,将会生成错误,如下所示:

DROP FUNCTION demo;
ERROR 1305 (42000): FUNCTION test.demo does not exist

如果您将 IF EXISTS 子句与 DROP FUNCTION 语句一起使用,如下所示,则指定的函数将被删除,如果不存在具有给定名称的函数,则查询将被忽略。

DROP FUNCTION IF EXISTS demo;
广告

© . All rights reserved.