欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL表和列的注释总结

程序员文章站 2023-12-01 08:51:58
像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。 注释的添加 注释...

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

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

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

列注释的添加,更新
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)