MySQL 表和列的注释深入理解

栏目: 数据库 · 发布时间: 7年前

内容简介:像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。注释的添加是通过在定义表或列的时候在末尾加上可以在创建表的时候为表和列添加相应的注释。

像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。

注释的添加

注释的添加是通过在定义表或列的时候在末尾加上 COMMENT 关键字来实现的,最长支持 1024 个字符。

可以在创建表的时候为表和列添加相应的注释。

CREATE TABLE test_comment 
  ( 
     id   SERIAL PRIMARY KEY, 
     col1 INT comment '列的注释' 
  ) 
comment '表的注释';

执行上面的语句后创建了一个名为 test_comment 的表,并且为表和其中的 col1 列指定了相应的注释。

然后可通过 SHOW CREATE TABLE <table_name> 来查看。

mysql> SHOW CREATE TABLE test_comment\G
*************************** 1. row ***************************
       Table: test_comment
Create Table: CREATE TABLE `test_comment` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) DEFAULT NULL COMMENT '列的注释',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表的注释'
1 row in set (0.00 sec)

注释的查看

除了 SHOW CREATE TABLE <table_name> 语法,还有其他一些查看注释的方式。

SHOW TABLE STATUS 能够查看表的注释,其语法为:

SHOW TABLE STATUS WHERE name='table_name';

以下是通过 SHOW TABLE STATUS 查看的结果:

mysql> SHOW TABLE STATUS WHERE name='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-11 15:41:01
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_general_ci
       Checksum: NULL
 Create_options:
        Comment: 表的注释
1 row in set (0.00 sec)

而通过 SHOW FULL COLUMNS 则可查看列的注释,其语法为:

SHOW FULL COLUMNS FROM <tablename>

以下是通过 SHOW FULL COLUMNS 查看的结果:

mysql>SHOW FULL COLUMNS FROM test_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: 列的注释
2 rows in set (0.00 sec)

借助 INFORMATION_SCHEMA 中的表 也能查看表或列的注释。

比如查看表的注释:

SELECT table_comment 
FROM   information_schema.tables 
WHERE  table_name = 'test_comment';

执行结果:

mysql> SELECT table_comment
    -> FROM   information_schema.tables
    -> WHERE  table_name = 'test_comment';
+---------------+
| TABLE_COMMENT |
+---------------+
| 表的注释      |
+---------------+
1 row in set (0.01 sec)

查看列的注释:

SELECT column_comment 
FROM   information_schema.columns 
WHERE  column_name = 'col1';

执行结果:

mysql> SELECT column_comment
    -> FROM   information_schema.columns
    -> WHERE  column_name = 'col1';
+----------------+
| COLUMN_COMMENT |
+----------------+
| 列的注释       |
+----------------+
1 row in set (0.00 sec)

注释的更新

对已经存在的表和列,可通过相应的更新修改操作来添加注释。

列注释的添加,更新

CHANGEMODIFY 等效,区别在于 CHANGE 重写定义列,需要书写完整的列定义,包括新的列名称,即使你并不想修改列的免,而 MODIFY 则不用指定新的列名称。

通过 CHANGE 语法:

mysql> ALTER TABLE test_comment CHANGE col1 col1 INT COMMENT '列的注释2';
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

通过 MODIFY 语法:

mysql> ALTER TABLE test_comment MODIFY col1 INT COMMENT '列的注释2';
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看修改结果:

mysql> SHOW CREATE TABLE test_comment\G
*************************** 1. row ***************************
       Table: test_comment
Create Table: CREATE TABLE `test_comment` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) DEFAULT NULL COMMENT '列的注释2',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表的注释'
1 row in set (0.00 sec)

表注释的添加,更新

通过 ALTER TABLE 来完成对表注释的添加和更新。

mysql> ALTER TABLE test_comment comment '表的注释2';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看更新结果:

mysql> SHOW CREATE TABLE test_comment\G
*************************** 1. row ***************************
       Table: test_comment
Create Table: CREATE TABLE `test_comment` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) DEFAULT NULL COMMENT '列的注释2',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表的注释2'
1 row in set (0.00 sec)

注释的删除

更新注释时指定为空即可。

mysql> ALTER TABLE test_comment COMMENT '';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE test_comment MODIFY col1 INT COMMENT '';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看删除结果:

mysql> SHOW CREATE TABLE test_comment\G
*************************** 1. row ***************************
       Table: test_comment
Create Table: CREATE TABLE `test_comment` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
1 row in set (0.00 sec)

以上所述就是小编给大家介绍的《MySQL 表和列的注释深入理解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails, Third Edition

Agile Web Development with Rails, Third Edition

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95

Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具