`

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以外的值。
分享到:
评论

相关推荐

    SQLserver、Oracle、Mysql语法与用法对比.doc

    - 三者都支持类似 `ALTER TABLE 表名 ADD CONSTRAINT CHECK(列名 > 10)` 的语法 15. **添加外键约束**: - 三者都有相似的语法,但Oracle需要指定 `ON UPDATE CASCADE` 或 `ON UPDATE ACTION` 控制级联操作 16. ...

    mysql数据库的基本操作语法

    ### MySQL数据库基本操作语法知识点详解 #### 一、常用查询操作 **1. 显示所有数据库** - **命令**: `SHOW DATABASES;` - **功能**: 列出当前MySQL服务器上存在的所有数据库。 **2. 删除数据库** - **命令**: ...

    Mysql数据库中英对照表

    根据提供的文件信息,我们可以整理出一系列关于MySQL数据库的关键知识点,主要涵盖了基本的SQL语句及其用法。下面将对这些知识点进行详细的解释与说明。 ### 1. 数据查询(SELECT) - **定义**:`SELECT` 语句用于...

    SQLserver、Oracle、Mysql语法与用法对比

    在SQL Server、Oracle和MySQL这三种关系型数据库管理系统(RDBMS)中,它们的SQL语法在很多方面具有相似性,但在某些特定操作上存在差异。以下是对这些系统中一些关键语法和用法的对比: 1. **查看表结构**: - ...

    sqoop1-1.4.6 documentation 英文文档

    - **数据库**: MySQL、Oracle、PostgreSQL、DB2 等主流关系型数据库。 #### 3. Sqoop 发行版 Sqoop 1.4.6 是 Sqoop 的一个稳定版本,包含了一系列功能改进和错误修复,旨在提供更稳定的数据迁移体验。 #### 4. ...

    Oracle与SQL和Mysql的对比笔记

    Oracle、SQL Server和MySQL是三种广泛应用的关系型数据库管理系统(RDBMS),它们在数据管理、查询语法和功能上存在一些差异。以下是对这些系统的对比,主要关注它们在操作数据库结构方面的命令。 1. **查看表结构*...

    SQL server与mysql的区别.docx

    在数据库领域,SQL Server 和 MySQL 都是非常流行的数据库管理系统,它们各自具有独特的优势和特点。为了更好地理解和区分这两种数据库系统,下面将详细介绍 SQL Server 与 MySQL 在多个方面的差异。 #### 1. 执行...

    zjw-数据库机考内容.docx

    * 创建数据库的基本语法:create database 数据库名; * 查看 MySQL 服务器所有的数据库:show databases; * 查看数据库的定义:show create database 数据库名; * 查看数据库存储引擎:show engines; * 删除数据库:...

    mysql和sqlserver比较.docx

    MySQL 和 SQL Server 是两种广泛应用的关系型数据库管理系统,它们在数据定义、存储过程、触发器、事务处理、安全性、性能优化等方面都有各自的特点和差异。以下将对比这两种数据库在数据定义方面的命令及其功能。 ...

    MySQL-client-community-5.0.96-1.rhel5.i386.rpm

    在使用MySQL客户端时,你需要了解一些基本的SQL语法,例如CREATE DATABASE创建数据库,USE选择数据库,CREATE TABLE创建表,INSERT INTO添加记录,SELECT查询数据,UPDATE更新记录,DELETE删除记录等。此外,还要...

    mySQL培训手册

    - 了解创建数据库的具体语法有助于更好地掌握MySQL的数据库管理能力。 - 可以通过`SHOW CREATE DATABASE 数据库名;`命令查看创建数据库的定义。 - **1.2.1.4 修改数据库属性 alterdatabase** - 有时需要更改...

    MySQL DBA手册.pdf 简体中文版

    ### MySQL DBA手册知识点概述 #### 一、MySQL简介及发展历程 - **MySQL**:一款开源的关系型数据库管理系统,广泛...- **参考文档**:包含MySQL的所有命令、函数、语法等详细信息,是学习和使用MySQL的重要参考资料。

    创建数据表_CREATE TABLE 全语法结构完整介绍

    根据数据库系统不同,可能有额外的存储特性选项,例如MySQL中的 ENGINE(定义存储引擎,如InnoDB、MyISAM)、CHARACTER SET(定义字符集)、COLLATE(定义排序规则)等。 通过熟练掌握CREATE TABLE语句,开发者可以...

    mysql操作手册.pdf

    MySQL是一种流行的关系型数据库管理系统,广泛应用于网站开发、数据分析等领域。本手册主要涵盖了MySQL的基本操作,包括安装、登录、数据库与表的创建以及数据完整性约束等内容。 首先,安装MySQL是使用它的第一步...

    MySQL数据库:触发器与事件调度器技术教程

    ### MySQL数据库:触发器与事件调度器技术教程 #### 一、MySQL触发器基础 **1.1 触发器的概念与作用** 触发器是一种特殊类型的存储过程,它被设计成在特定的数据库操作(例如INSERT、UPDATE、DELETE)发生时自动...

    mysql和sqlserver的比较

    MySQL 和 SQL Server 是两种广泛应用的关系型数据库管理系统(RDBMS),它们在许多方面都有所不同,包括语法、性能、安全性和成本等方面。本篇将详细对比这两种数据库在数据定义、约束以及索引等方面的异同。 首先...

    SQL语句语法(最新)

    - **ALTER TABLE语法**:允许对已存在的表进行结构上的更改,比如添加、删除或修改列,添加或删除约束等。 - **CREATE DATABASE语法**:用于创建新的数据库,是数据库生命周期的起点。 - **CREATE INDEX语法**:...

    mysql sqlserver orcle 数据库操作

    在Oracle数据库中,设置主键的过程与MySQL略有不同,一般会使用`ALTER TABLE`配合`ADD CONSTRAINT`,如`ALTER TABLE course_info ADD CONSTRAINT pk_course_info PRIMARY KEY (id)`。Oracle不支持直接在表定义中设置...

Global site tag (gtag.js) - Google Analytics