MySQL - 检查表语句



如果数据库服务器发生某些错误,例如服务器意外关闭或写入硬盘数据时发生错误等。这些情况可能导致数据库运行不正确,最坏情况下可能导致数据库崩溃。有时特定的表会被损坏。

MySQL CHECK TABLE 语句

MySQL CHECK TABLE 语句用于检查数据库表的完整性,如果指定的表中存在任何错误,此语句会列出它们。

语法

以下是 MySQL CHECK TABLE 语句的语法:

CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option: {
   FOR UPGRADE
   | QUICK
   | FAST
   | MEDIUM
   | EXTENDED
   | CHANGED
}

示例

假设我们创建了一个名为 sales 的表,如下所示:

CREATE TABLE sales(
   ID INT,
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   DispatchDate date,
   DeliveryTime time,
   Price INT,
   Location VARCHAR(255)
);

现在,我们将使用 INSERT 语句在 **Sales** 表中插入 5 条记录:

Insert into sales values
(1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000, 
'Hyderabad'),
(2, 'Earphones', 'Roja', DATE('2019-05-01'), TIME('11:00:00'), 2000, 
'Vishakhapatnam'),
(3, 'Mouse', 'Puja', DATE('2019-03-01'), TIME('10:59:59'), 3000, 
'Vijayawada'),
(4, 'Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000, 
'Chennai'),
(5, 'Headset', 'Jalaja', DATE('2019-04-06'), TIME('11:08:59'), 6000, 
'Goa');

下表验证了上述表的狀態:

CHECK TABLE sales;

输出

以下是上述查询的输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 OK

验证多个表

您还可以使用 CHECK TABLE 语句一次验证多个表的狀態。

示例

假设我们创建了三个新表,如下所示:

CREATE TABLE Test1(ID INT, Name VARCHAR(255));
CREATE TABLE Test2(ID INT, Name VARCHAR(255));
CREATE TABLE Test3(ID INT, Name VARCHAR(255));

以下查询验证所有这些表并显示结果:

CHECK TABLE Test1, Test2, Test3;

输出

上述查询生成以下输出:

操作 消息类型 消息文本
mydb.test1 检查 状态 OK
mydb.test2 检查 状态 OK
mydb.test3 检查 状态 OK

CHECK TABLE 选项

CHECK TABLE 语句提供了各种可选子句:

如果在 CHECK TABLE 语句中指定 **QUICK 子句**,它只会检查不正确的链接:

CHECK TABLE sales QUICK;

输出

上述 mysql 查询将产生如下所示的输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 OK

如果在 CHECK TABLE 语句中指定 **FAST 子句**,它会检查正确关闭的表:

CHECK TABLE sales FAST;

输出

以下是上述 mysql 查询的输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 表已是最新的

如果在 CHECK TABLE 语句中指定 **CHANGED 子句**,它只会检查已修改的表:

CHECK TABLE sales CHANGED;

输出

以下是上述查询的输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 表已是最新的

如果在 CHECK TABLE 语句中指定 **MEDIUM 子句**,它会验证链接,并计算行的键校验和:

CHECK TABLE sales MEDIUM;

输出

上述 mysql 查询生成以下输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 OK

如果在 CHECK TABLE 语句中指定 **EXTENDED 子句**,它会对每一行中的所有键执行完整检查:

CHECK TABLE sales EXTENDED;

输出

执行上述查询后,它将产生以下输出:

操作 消息类型 消息文本
mydb.sales 检查 状态 OK
广告

© . All rights reserved.