`

CHECK TABLE语法--MySql数据库

 
阅读更多
CHECK TABLE tbl_name[,tbl_name] ... [option] ... 
  
option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED} 
 
检查一个或多个表是否有错误。CHECK TABLEMyISAMInnoDB表有作用。对于MyISAM表,关键字统计数据被更新。 
 CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。 
 CHECK TABLE语句会返回一个含有以下列的表:

Table

表名称

Op

进行检查

Msg_type

状态、错误、信息或错误之一

Msg_text

消息

 
注意,该语句可能会为每个被检查的表产生多行信息。最后一行有一个Msg_type状态值。Msg_text通常应为OK。如果您没有得到OK,或表已经更新了,则您通常应该运行修复后的表。请参见5.9.4节,“表维护和崩溃恢复”。表已经更新了,这意味着表的存储引擎指示没有必要检查表。 
可以给予的不同的检查选项列于下表中。这些选项只适用于检查MyISAM表。对于InnoDB表和视图,这些选项被忽略。

类型

意义

QUICK

不扫描行,不检查错误的链接。

FAST

只检查没有被正确关闭的表。

CHANGED

只检查上次检查后被更改的表,和没有被正确关闭的表。

MEDIUM

扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。

EXTENDED

对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长。

 
如果没有指定QUICK, MEDIUMEXTENDED选项,则对于动态格式MyISAM表,默认检查类型是MEDIUM。这与对表运行myisamchk --medium-checktbl_name的结果相同。对于静态格式MyISAM表,默认检查类型也是MEDIUM,除非CHANGEDFAST已被指定。在此情况下,默认值为QUICK。对于CHANGEDFAST,行扫描被跳过,因为行极少被破坏。 
您可以组合检查选项,如下面的例子所示。该例子对表进行了一个快速检查,来查看该表是否被正确关闭:
CHECK TABLE test_table FAST QUICK; 
 
注释:在有些情况下,CHECK TABLE会更改表。如果表被标记为“corrupted”或“not closed properly”,则出现这种情况。但是CHECK TABLE不会找出表中的问题。在这种情况下,CHECK TABLE会把表标记为良好。 
如果一个表被破坏,很有可能问题在索引中,而不在数据部分中。所有前述的检查类型都可以彻底地检查索引,因此,可以找出多数的错误。 
如果您只想要检查您假定的表是良好的,您应该不使用检查选项或QUICK选项。当您时间匆忙时,应使用QUICKQUICK无法找出数据文件中的错误的风险非常小。(在多数情况下,在正常使用中,MySQL应能在数据文件中找出错误。如果找出了错误,表被标记为“corrupted”,并不能被使用,直到修复为止。) 
如果您想要时常检查表,FASTCHANGED多数情况下从原本中被使用(例如,从cron中被执行)。在多数情况下,FAST优先于CHANGED。(只有一种情况FAST不优先于CHANGED,那就是当您怀疑您在MyISAM代码中发现了错误。) 
当MySQL试图通过关键字更新一行或查找一行时,如果您已经运行了一个常规检查后但仍得到来自表的奇怪的错误,此时使用EXTENDED。(如果常规的检查运行成功,则基本用不着EXTENDED。) 
被CHECK TABLE报告的部分问题不会被自动修正: 
 ?        发现行。此行中,auto_increment列有0值。 
这意味着,您在表中有一行,该行的AUTO_INCREMENT索引列包含0值。(可以通过使用UPDATE语句,明确地把列设置为0,以创建一个AUTO_INCREMENT列为0的行。) 
这本身不是一个错误,但是如果您决定转储表并恢复表,或对表进行ALTER TABLE,那么会导致出现麻烦。在此情况下,AUTO_INCREMENT列会根据AUTO_INCREMENT列的结果更改值,这会导致出现问题,如重复关键字错误等。 
要消除警告,只需执行一个UPDATE语句,把列设置为除0以外的值。
分享到:
评论

相关推荐

    mysql数据库的基本操作语法

    MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: ...

    MySQL 5.1参考手册

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    MySQL 5.1官方简体中文参考手册

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    MySQL 5.1中文手冊

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    MySQL 5.1参考手册 (中文版)

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    MySQL 5.1参考手册中文版

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示...

    MYSQL中文手册

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示...

    MySQL5.1参考手册官方简体中文版

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    mysql5.1中文手册

    mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:...

    mysql官方中文参考手册

    8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM...

    mysql触发器详解!!!

    部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。 优点: 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很...

    2009达内SQL学习笔记

    保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...

    程序员的SQL金典6-8

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    程序员的SQL金典7-8

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    程序员的SQL金典3-8

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    程序员的SQL金典4-8

    第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析  9.1.1 数据类型的差异  9.1.2 运算符的差异  9.1.3 函数的差异  9.1.4 常用SQL的差异  9.1.5 取元数据信息的差异  9.2 消除差异性的方案  ...

    程序员的SQL金典.rar

     本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...

    SQL培训第一期

    check约束:检查约束,check约束通过约束条件表达式设置列值应该满足的条件。 1.5 范式 1.5.1 第一范式 1.5.1.1 规范 无重复的列,确保每列保持原子性,即数据库表中的所有字段值都是不可分解的原子值。 1.5.1.2 ...

Global site tag (gtag.js) - Google Analytics