MySQL 8 教程

MySQL - 主页 MySQL - 简介 MySQL - 功能 MySQL - 版本 MySQL - 变量 MySQL - 安装 MySQL - 管理 MySQL - PHP 语法 MySQL - Node.js 语法 MySQL - Java 语法 MySQL - Python 语法 MySQL - 连接 MySQL - Workbench

MySQL 8 数据库

MySQL - 创建数据库 MySQL - 删除数据库 MySQL - 选择数据库 MySQL - 显示数据库 MySQL - 复制数据库 MySQL - 数据库导出 MySQL - 数据库导入 MySQL - 数据库信息

MySQL 8 用户

MySQL - 创建用户 MySQL - 删除用户 MySQL - 显示用户 MySQL - 更改密码 MySQL - 授予权限 MySQL - 显示权限 MySQL - 撤销权限 MySQL - 锁定用户账户 MySQL - 解锁用户账户

MySQL 8 表

MySQL - 创建表 MySQL - 显示表 MySQL - 修改表 MySQL - 重命名表 MySQL - 克隆表 MySQL - 截断表 MySQL - 临时表 MySQL - 修复表 MySQL - 描述表 MySQL - 添加/删除列 MySQL - 显示列 MySQL - 重命名列 MySQL - 表锁定 MySQL - 删除表 MySQL - 派生表

MySQL 8 查询

MySQL - 查询 MySQL - 约束 MySQL - INSERT 插入查询 MySQL - SELECT 查询 MySQL - UPDATE 更新查询 MySQL - DELETE删除查询 MySQL - REPLACE 替换查询 MySQL - 忽略插入 MySQL - 重复键更新时插入 MySQL - 插入到另一个表语句

MySQL 8 视图

MySQL - 创建视图 MySQL - 更新视图 MySQL - 删除视图 MySQL - 重命名视图

MySQL 8 索引

MySQL - 索引 MySQL - 创建索引 MySQL - 删除索引 MySQL - 显示索引 MySQL - 唯一索引 MySQL - 聚集索引 MySQL - 非聚集索引

MySQL 运算符和子句

MySQL - Where 子句 MySQL - Limit 子句 MySQL - Distinct 子句 MySQL - Order By 子句 MySQL - Group By 子句 MySQL - Having 子句 MySQL - AND 运算符 MySQL - OR 或运算符 MySQL - LIKE 运算符 MySQL - IN 运算符 MySQL - ANY 运算符 MySQL - Exists 运算符 MySQL - NOT 运算符 MySQL - NOT EQUAL 运算符 MySQL - IS NULL 运算符 MySQL - IS NOT NULL 运算符 MySQL - Between 运算符 MySQL - UNION 运算符 MySQL - UNION 与 UNION ALL MySQL - MINUS 运算符 MySQL - INTERSECT 运算符 MySQL - INTERVAL 运算符

MySQL 连接

MySQL - 使用连接 MySQL - Inner Join 内连接 MySQL - LEFT JOIN 左连接 MySQL - RIGHT JOIN 右连接 MySQL - CROSS JOIN 交叉连接 MySQL - 全连接 MySQL - 自连接 MySQL - Delete Join 删除连接 MySQL - UPDATE JOIN 更新连接 MySQL - 联合 vs 连接

MySQL 键

MySQL - UNIQUE 唯一键 MySQL - PRIMARY KEY 主键 MySQL - FOREIGN KEY 外键 MySQL - 复合键 MySQL - 备用键

MySQL 触发器

MySQL - 触发器 MySQL - 创建触发器 MySQL - 显示触发器 MySQL - 删除触发器 MySQL - 插入前触发器 MySQL - 插入后触发器 MySQL - 更新前触发器 MySQL - 更新后触发器 MySQL - 删除前触发器 MySQL - 删除后触发器

MySQL 8 数据类型

MySQL - 数据类型 MySQL - VARCHAR MySQL - BOOLEAN MySQL - ENUM 枚举 MySQL - DECIMAL 十进制 MySQL - INT 整数 MySQL - FLOAT 浮点数 MySQL - BIT 位 MySQL - TINYINT 微小整数 MySQL - BLOB 二进制大对象 MySQL - SET 集合

MySQL 正则表达式

MySQL - 正则表达式 MySQL - RLIKE 运算符 MySQL - NOT LIKE 运算符 MySQL - NOT REGEXP 运算符 MySQL - regexp_instr() 函数 MySQL - regexp_like() 函数 MySQL - regexp_replace() 函数 MySQL - regexp_substr() 函数

MySQL 全文搜索

MySQL - 全文搜索 MySQL - 自然语言全文搜索 MySQL - 布尔全文搜索 MySQL - 查询扩展全文搜索 MySQL - ngram 全文解析器

MySQL8 函数和运算符

MySQL - 日期和时间函数 MySQL - 算术运算符 MySQL - 数字函数 MySQL - 字符串函数 MySQL - 聚合函数

MySQL 8 其他概念

MySQL - NULL 值 MySQL - 事务 MySQL - 序列 MySQL - 处理重复项 MySQL - SQL 注入 MySQL - 子查询 MySQL - 注释 MySQL - 检查约束 MySQL - 存储引擎 MySQL - 将表导出为 CSV 文件 MySQL - 将 CSV 文件导入数据库 MySQL - UUID MySQL - 通用表表达式 MySQL - 级联删除 MySQL - Upsert 操作 MySQL - 水平分区 MySQL - 垂直分区 MySQL - 游标 MySQL - 存储函数 MySQL - SIGNAL 异常处理 MySQL - RESIGNAL 异常处理 MySQL - 字符集 MySQL - 排序规则 MySQL - 通配符 MySQL - 别名 MySQL - ROLLUP 超级聚合 MySQL - 当前日期 MySQL - 字面量 MySQL - 存储过程 MySQL - EXPLAIN 语句 MySQL - JSON MySQL - 标准差 MySQL - 查找重复记录 MySQL - 删除重复记录 MySQL - 选择随机记录 MySQL - 显示进程列表 MySQL - 更改列类型 MySQL - 重置自动增量 MySQL - Coalesce() 函数

MySQL 8 实用资源

MySQL - 实用函数 MySQL - 语句参考 MySQL - 快速指南 MySQL - 实用资源 MySQL - 讨论


MySQL - SHOW FUNCTION STATUS 语句

MySQL SHOW FUNCTION STATUS 语句

函数是一段有组织的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供了更好的模块化和高度的代码重用。您可以使用 CREATE FUNCTION 语句创建存储函数。

MySQL SHOW FUNCTION STATUS 语句显示存储函数的功能。它提供以下信息:-

  • 过程的名称。
  • 创建过程的数据库。
  • 过程的类型。
  • 过程的创建者。
  • 修改日期等。

语法

以下是 SHOW FUNCTION STATUS 语句的语法:-

SHOW FUNCTION STATUS
   [LIKE 'pattern' | WHERE expr]

示例

以下语句显示存储函数的特性 -

SHOW FUNCTION STATUS\G;

输出

上述查询生成如下所示的输出 -

************** 1. row **************
                  Db: test
                Name: areaOfCircle
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                  Db: test
                Name: demo
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 3. row **************
                  Db: test
                Name: sample
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 4. row **************
                  Db: test
                Name: while_example
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 5. row **************
                  Db: test
                Name: test
                Type: FUNCTION
             Definer: root@localhost
            Modified: -------------------
             Created: -------------------
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .

LIKE 子句

使用 LIKE 子句,您可以指定一个模式来检索有关函数的信息。

示例

假设我们创建了一个新数据库,并使用 CREATE 语句在其中创建了 3 个函数,如下所示 -

CREATE demo;
use dem;
database changed
DELIMITER //
CREATE FUNCTION TestAdd(a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a+b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestSub (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a-b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestMul (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a*b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
CREATE FUNCTION TestDiv (a INT, b INT) RETURNS INT DETERMINISTIC
   BEGIN
      DECLARE res INT;
      SET res=a/b;
      RETURN res;
   END//
   Query OK, 0 rows affected (0.29 sec)
DELIMITER ;

以下查询检索有关名称以单词"Test"开头的过程的信息。

SHOW FUNCTION STATUS LIKE 'Test%'\G;

输出

查询执行后,将产生以下输出 -

************** 1. row **************
                  Db: demo
			    Name: TestAdd
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:04
		     Created: 2021-05-14 06:37:04
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 2. row **************
                  Db: demo
			    Name: TestDiv
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:22
		     Created: 2021-05-14 06:37:22
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 3. row **************
                  Db: demo
			    Name: TestMul
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:16
		     Created: 2021-05-14 06:37:16
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************** 4. row **************
                  Db: demo
			    Name: TestSub
			    Type: FUNCTION
		     Definer: root@localhost
		    Modified: 2021-05-14 06:37:10
		     Created: 2021-05-14 06:37:10
       Security_type: DEFINER
		     Comment: 
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

WHERE 子句

您可以使用 SHOW PROCEDURE STATUS 语句的 WHERE 子句来检索符合指定条件的过程信息。

示例

假设我们使用 CREATE 语句在数据库中创建了一个名为 Emp 的表,如下所示 -

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

现在,我们使用 INSERT 语句向 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);

让我们在 student 表中插入一些记录 -

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

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

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: 2021-03-21 11:21:12
				Created: 2021-03-13 14:45:36
		  Security_type: DEFINER
				Comment: This is a sample 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: 2021-03-13 22:16:05
				Created: 2021-03-13 22:16:05
		  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)