1. 首页
  2. 技术知识

MySQL表和列的注释总结

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


注释的添加

注释的添加是通过在定义表或列的时候在末尾加上 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: 2022-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)
注释的更新

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

列注释的添加,更新

CHANGE 和 MODIFY 等效,区别在于 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)

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/115622.html

联系我们