首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【MySQL】MySQL 之 handler 的详细使用及说明

  • 25-02-16 18:21
  • 2193
  • 13041
blog.csdn.net

起序:在 Web 题遇到的,也算是骚姿势吧,希望帮到有需要的同志。

一、简介

MySQL 除了可以使用 select 查询表中的数据,也可使用 handler 语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler 语句并不具备 select 语句的所有功能。它是 MySQL 专用的语句,并没有包含到SQL标准中。handler 语句提供通往表的直接通道的存储引擎接口,可以用于 MyISAM 和 InnoDB 表。

二、语法

1、官方语法

官方给出的:HANDLER Statement

在这里插入图片描述

2、命令分析

句柄:句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等。这是我从百度上搜到的。

翻译成白话就是,句柄 相当于一个指针,是一个广义的指针,不是特定指向某一个形式(整数、数组、对象等)。

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]

# 1、通过指定索引查看表,可以指定从索引那一行开始,通过 NEXT 继续浏览
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]

# 2、通过索引查看表
# FIRST: 获取第一行(索引最小的一行)
# NEXT: 获取下一行
# PREV: 获取上一行
# LAST: 获取最后一行(索引最大的一行)
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]

# 3、不通过索引查看表
# READ FIRST: 获取句柄的第一行
# READ NEXT: 依次获取其他行(当然也可以在获取句柄后直接使用获取第一行)
# 最后一行执行之后再执行 READ NEXT 会返回一个空的结果
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]

# 关闭已打开的句柄
HANDLER tbl_name CLOSE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

三、实战

1、创建测试表及测试数据

创建表

create table handler_table(id int, name varchar(10));
  • 1

按下列顺序依次插入数据

insert into handler_table values(3, '张三');
insert into handler_table values(4, '李四');
insert into handler_table values(5, '王五');
insert into handler_table values(1, '刘一');
insert into handler_table values(2, '陈二');
  • 1
  • 2
  • 3
  • 4
  • 5

查看数据

select *from handler_table;
  • 1

在这里插入图片描述

2、不通过索引查看表

将会用到的命令:

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]

# READ FIRST: 获取句柄的第一行
# READ NEXT: 依次获取其他行(当然也可以在获取句柄后直接使用获取第一行)
# 最后一行执行之后再执行 READ NEXT 会返回一个空的结果
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]
   
# 关闭以打开的句柄
HANDLER tbl_name CLOSE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
1、打开句柄
handler handler_table open;
  • 1

在这里插入图片描述

2、查看数据
handler handler_table read first;
handler handler_table read next;
  • 1
  • 2

在这里插入图片描述

3、关闭句柄
handler handler_table close;
  • 1

在这里插入图片描述


3、通过索引查看表

将会用到的命令:

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]

# 2、通过索引查看表
# FIRST: 获取第一行(索引最小的一行)
# NEXT: 获取下一行
# PREV: 获取上一行
# LAST: 获取最后一行(索引最大的一行)
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]

# 关闭以打开的句柄
HANDLER tbl_name CLOSE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
1、创建索引

以 handler_table 中的 id 字段创建索引,命名为 handler_index。

create index handler_index on handler_table(id);
  • 1

在这里插入图片描述

2、打开句柄
handler handler_table open;
# 打开句柄并命名为 p
handler handler_table open as p;
  • 1
  • 2
  • 3

在这里插入图片描述

3、查看数据
# 获取第一行数据
handler p read handler_index first;
# 获取下一行数据
handler p read handler_index next;
# 获取上一行数据
handler p read handler_index prev;
# 获取最后一行数据
handler p read handler_index last;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述在这里插入图片描述

4、关闭句柄
handler p close;
  • 1

在这里插入图片描述

4、通过指定索引查看表

将会用到的命令:

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]

# 1、通过指定索引查看表,可以指定从索引那一行开始,通过 NEXT 继续浏览
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]

# 关闭以打开的句柄
HANDLER tbl_name CLOSE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
1、创建索引

以 handler_table 中的 id 字段创建索引,命名为 handler_index。

ERROR 1061 (42000): Duplicate key name 'handler_index',原因是因为我在 通过索引查看表 这一步已经创建了以 handler_index 命名的索引了。

create index handler_index on handler_table(id);
  • 1

在这里插入图片描述

2、打开句柄
# 打开句柄并命名为 p
handler handler_table open as p;
  • 1
  • 2

在这里插入图片描述

3、查看数据
# 指定索引开始查看数据
handler p read handler_index = (2);

# -------------------- #
# 也可以继续使用下面的命令 #
# -------------------- #
# 获取第一行数据
handler p read handler_index first;
# 获取下一行数据
handler p read handler_index next;
# 获取上一行数据
handler p read handler_index prev;
# 获取最后一行数据
handler p read handler_index last;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

4、关闭句柄
handler p close;
  • 1

在这里插入图片描述
如果对您有帮助,点个赞再走吧。

注:本文转载自blog.csdn.net的边扯边淡的文章"https://blog.csdn.net/qq_43427482/article/details/109898934"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top