MySQL表和列的注释总结
像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。
注释的添加
注释的添加是通过在定义表或列的时候在末尾加上COMMENT关键字来实现的,最长支持1024个字符。
可以在创建表的时候为表和列添加相应的注释。
CREATETABLEtest_comment ( idSERIALPRIMARYKEY, col1INTcomment'列的注释' ) comment'表的注释';
执行上面的语句后创建了一个名为test_comment的表,并且为表和其中的col1列指定了相应的注释。
然后可通过SHOWCREATETABLE
mysql>SHOWCREATETABLEtest_comment\G ***************************1.row*************************** Table:test_comment CreateTable:CREATETABLE`test_comment`( `id`bigint(20)unsignedNOTNULLAUTO_INCREMENT, `col1`int(11)DEFAULTNULLCOMMENT'列的注释', PRIMARYKEY(`id`), UNIQUEKEY`id`(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ciCOMMENT='表的注释' 1rowinset(0.00sec)
注释的查看
除了SHOWCREATETABLE
SHOWTABLESTATUS能够查看表的注释,其语法为:
SHOWTABLESTATUSWHEREname='table_name';
以下是通过SHOWTABLESTATUS查看的结果:
mysql>SHOWTABLESTATUSWHEREname='test_comment'\G ***************************1.row*************************** Name:test_comment Engine:InnoDB Version:10 Row_format:Dynamic Rows:0 Avg_row_length:0 Data_length:16384 Max_data_length:0 Index_length:16384 Data_free:0 Auto_increment:1 Create_time:2019-05-1115:41:01 Update_time:NULL Check_time:NULL Collation:utf8mb4_general_ci Checksum:NULL Create_options: Comment:表的注释 1rowinset(0.00sec)
而通过SHOWFULLCOLUMNS则可查看列的注释,其语法为:
SHOWFULLCOLUMNSFROM
以下是通过SHOWFULLCOLUMNS查看的结果:
mysql>SHOWFULLCOLUMNSFROMtest_comment\G ***************************1.row*************************** Field:id Type:bigint(20)unsigned Collation:NULL Null:NO Key:PRI Default:NULL Extra:auto_increment Privileges:select,insert,update,references Comment: ***************************2.row*************************** Field:col1 Type:int(11) Collation:NULL Null:YES Key: Default:NULL Extra: Privileges:select,insert,update,references Comment:列的注释 2rowsinset(0.00sec)
借助INFORMATION_SCHEMA中的表也能查看表或列的注释。
比如查看表的注释:
SELECTtable_comment FROMinformation_schema.tables WHEREtable_name='test_comment';
执行结果:
mysql>SELECTtable_comment ->FROMinformation_schema.tables ->WHEREtable_name='test_comment'; +---------------+ |TABLE_COMMENT| +---------------+ |表的注释| +---------------+ 1rowinset(0.01sec)
查看列的注释:
SELECTcolumn_comment FROMinformation_schema.columns WHEREcolumn_name='col1';
执行结果:
mysql>SELECTcolumn_comment ->FROMinformation_schema.columns ->WHEREcolumn_name='col1'; +----------------+ |COLUMN_COMMENT| +----------------+ |列的注释| +----------------+ 1rowinset(0.00sec)
注释的更新
对已经存在的表和列,可通过相应的更新修改操作来添加注释。
列注释的添加,更新
CHANGE和MODIFY等效,区别在于CHANGE重写定义列,需要书写完整的列定义,包括新的列名称,即使你并不想修改列的免,而MODIFY则不用指定新的列名称。
通过CHANGE语法:
mysql>ALTERTABLEtest_commentCHANGEcol1col1INTCOMMENT'列的注释2'; QueryOK,0rowsaffected(0.02sec) Records:0Duplicates:0Warnings:0
通过MODIFY语法:
mysql>ALTERTABLEtest_commentMODIFYcol1INTCOMMENT'列的注释2'; QueryOK,0rowsaffected(0.02sec) Records:0Duplicates:0Warnings:0
查看修改结果:
mysql>SHOWCREATETABLEtest_comment\G ***************************1.row*************************** Table:test_comment CreateTable:CREATETABLE`test_comment`( `id`bigint(20)unsignedNOTNULLAUTO_INCREMENT, `col1`int(11)DEFAULTNULLCOMMENT'列的注释2', PRIMARYKEY(`id`), UNIQUEKEY`id`(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ciCOMMENT='表的注释' 1rowinset(0.00sec)
表注释的添加,更新
通过ALTERTABLE来完成对表注释的添加和更新。
mysql>ALTERTABLEtest_commentcomment'表的注释2'; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0
查看更新结果:
mysql>SHOWCREATETABLEtest_comment\G ***************************1.row*************************** Table:test_comment CreateTable:CREATETABLE`test_comment`( `id`bigint(20)unsignedNOTNULLAUTO_INCREMENT, `col1`int(11)DEFAULTNULLCOMMENT'列的注释2', PRIMARYKEY(`id`), UNIQUEKEY`id`(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ciCOMMENT='表的注释2' 1rowinset(0.00sec)
注释的删除
更新注释时指定为空即可。
mysql>ALTERTABLEtest_commentCOMMENT''; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0 mysql>ALTERTABLEtest_commentMODIFYcol1INTCOMMENT''; QueryOK,0rowsaffected(0.01sec) Records:0Duplicates:0Warnings:0
查看删除结果:
mysql>SHOWCREATETABLEtest_comment\G ***************************1.row*************************** Table:test_comment CreateTable:CREATETABLE`test_comment`( `id`bigint(20)unsignedNOTNULLAUTO_INCREMENT, `col1`int(11)DEFAULTNULL, PRIMARYKEY(`id`), UNIQUEKEY`id`(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ci 1rowinset(0.00sec)