处理程序tbl_name打开[[as]别名)处理程序tbl_name读index_name{= | <= | >= | < | >} (value1,value2,…where_condition[限制……)处理程序tbl_name读index_name{first | next | prev | last} [wherewhere_condition[限制……)处理程序tbl_name读取{first | next} [wherewhere_condition[限制……)处理程序tbl_name关闭
的处理程序
语句提供对表存储引擎接口的直接访问。它可用于InnoDB
而且MyISAM
表。
的处理程序……开放
语句打开一个表,使其可以使用后续访问处理程序……读
语句。此表对象不被其他会话共享,并且在会话调用之前不会关闭处理程序……关闭
或者会话终止。
如果使用别名打开表,则进一步使用other引用打开表处理程序
语句必须使用别名而不是表名。如果不使用别名,而是使用由数据库名限定的表名打开表,则进一步引用必须使用限定的表名。例如,对于使用mydb.mytable
,进一步的引用必须使用mytable
.
第一个处理程序……读
语法获取一行,其中指定的索引满足给定值在哪里
条件满足。如果您有一个多列索引,请将索引列值指定为逗号分隔的列表。要么为索引中的所有列指定值,要么为索引列的最左边的前缀指定值。假设一个索引my_idx
包括三个列col_a
,col_b
,col_c
,按照这个顺序。的处理程序
语句可以为索引中的所有三列指定值,也可以为最左边前缀中的列指定值。例如:
处理程序……读my_idx = (col_a_val col_b_val col_c_val)……处理程序……读取my_idx = (col_a_val,col_b_val)…处理程序……读取my_idx = (col_a_val)…
雇用处理程序
接口来引用表的主键
,使用带引号的标识符“主”
:
处理程序tbl_name阅读“primary”…
第二个处理程序……读
属性的索引顺序从表中获取与之匹配的行在哪里
条件。
第三个处理程序……读
属性的自然行顺序从表中获取与之匹配的行在哪里
条件。它比处理程序
当需要全表扫描时。自然行顺序是数据中存储行的顺序tbl_name
读index_name
MyISAM
表数据文件。这句话适用于InnoDB
表,但是没有这样的概念,因为没有单独的数据文件。
没有一个限制
从句,各种形式的处理程序……读
获取单行(如果有)。若要返回特定的行数,请包含限制
条款。的语法相同选择
声明。看到第13.2.9节“SELECT语句”.
处理程序……关闭
关闭已打开的表处理程序……开放
.
有几个理由使用处理程序
接口而不是正常接口选择
声明:
处理程序
比选择
:处理程序
使它更容易移植到使用底层的MySQL应用程序ISAM
例如接口。(见章节14.21,“InnoDB memcached Plugin”用于调整使用键值存储范例的应用程序的另一种方法。)处理程序
使您能够以一种难以(甚至不可能)完成的方式遍历数据库选择
.的处理程序
接口是在使用为数据库提供交互式用户界面的应用程序时查看数据的一种更自然的方式。
处理程序
是一个低级的语句。例如,它不提供一致性。也就是说,处理程序……开放
做不获取表的快照,并执行不锁住桌子。这意味着在a之后处理程序……开放
语句发出时,表数据可以被修改(通过当前会话或其他会话),这些修改可能只是部分可见处理程序……下一个
或处理程序……上一页
扫描。
打开的处理程序可以关闭并标记为重新打开,在这种情况下,处理程序将失去其在表中的位置。当以下两种情况都成立时,就会发生这种情况:
任何会话执行
刷新表
或DDL语句。打开处理程序的会话执行非
处理程序
使用表的语句。
截断表
对于一个表,关闭用于打开该表的所有处理程序处理程序打开
.
如果一个表被刷新刷新表
是用tbl_name
带读锁处理程序
,处理程序将隐式刷新并丢失其位置。