mysql comment是mysql数据库中用于添加注释说明的语法功能,核心作用是为数据库中的各类对象添加描述性文字,帮助开发和维护人员快速理解对象的设计用途,不会对sql语句的执行逻辑产生任何影响。

mysql comment的基本分类
mysql中的comment分为两类,分别是行内注释和对象属性注释,两者的使用场景和语法规则有明显区别。
1. 行内注释
行内注释是直接写在sql语句中,用于说明当前语句逻辑的注释,不会被存储到数据库元数据里,仅在当前sql脚本中生效。行内注释有两种语法形式:
- 单行注释:使用
--开头,后面跟注释内容,注意--后面必须有一个空格,否则会被识别为语法错误。 - 多行注释:使用
/* */包裹注释内容,可以跨多行书写,适合较长的说明文字。
以下是行内注释的示例代码:
-- 这是单行注释,查询用户表中所有年龄大于18的记录
SELECT * FROM user WHERE age > 18;
/* 这是多行注释
下面的语句用于创建用户表
包含id、用户名、年龄三个字段
*/
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
age INT
);
2. 对象属性注释
对象属性注释是通过COMMENT关键字为数据库对象添加的注释,会被存储到数据库的元数据中,后续可以通过查询系统表获取这些注释内容。这类注释可以应用在表、字段、索引、存储过程、函数、触发器等对象上。
对象属性comment的使用方法
为表添加comment
创建表的时候可以在表定义末尾添加COMMENT '注释内容'来为表添加说明,也可以后续通过ALTER TABLE语句修改表的注释。
-- 创建表时添加表注释
CREATE TABLE order_info (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(32) NOT NULL,
user_id INT NOT NULL
) COMMENT '存储用户订单的基础信息';
-- 修改已有表的注释
ALTER TABLE order_info COMMENT '存储用户订单的基础信息,包含订单号和关联用户id';
为字段添加comment
字段的comment需要在字段定义之后添加,和字段的类型、约束声明写在一起,同样支持创建时添加和后续修改。
-- 创建表时为字段添加注释
CREATE TABLE product (
product_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品唯一id',
product_name VARCHAR(100) NOT NULL COMMENT '商品名称',
price DECIMAL(10,2) NOT NULL COMMENT '商品单价,单位元'
);
-- 修改已有字段的注释
ALTER TABLE product MODIFY COLUMN price DECIMAL(10,2) NOT NULL COMMENT '商品单价,单位元,保留两位小数';
为其他对象添加comment
除了表和字段,存储过程、函数、索引等对象也支持添加comment,语法和表字段的注释类似,都是在对象定义末尾添加COMMENT关键字。
-- 创建存储过程时添加注释
DELIMITER //
CREATE PROCEDURE get_user_by_id(IN uid INT)
COMMENT '根据用户输入的用户id查询用户完整信息'
BEGIN
SELECT * FROM user WHERE id = uid;
END //
DELIMITER ;
-- 创建索引时添加注释
CREATE INDEX idx_user_age ON user(age) COMMENT '用户年龄字段的普通索引,加速年龄范围查询';
如何查询已添加的comment
对象属性注释存储在mysql的系统表中,不同对象的注释存储位置不同,常用的查询方式如下:
| 查询对象 | 查询语句 | 说明 |
|---|---|---|
| 表的注释 | SELECT TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名'; | 从information_schema库的TABLES表获取 |
| 字段的注释 | SELECT COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名'; | 从information_schema库的COLUMNS表获取 |
| 存储过程的注释 | SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA='数据库名' AND ROUTINE_NAME='存储过程名'; | 从information_schema库的ROUTINES表获取 |
以下是查询user表所有字段注释的示例:
SELECT
COLUMN_NAME AS '字段名',
COLUMN_COMMENT AS '字段注释'
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'test_db'
AND TABLE_NAME = 'user';
使用comment的注意事项
- comment的内容长度有限制,表的comment最大长度为2048字符,字段的comment最大长度为1024字符,超过部分会被截断。
- comment中如果包含单引号,需要使用转义符处理,比如
COMMENT '用户's 年龄'。 - 行内注释不会影响语句执行,但是对象属性comment如果语法错误,会导致整个建表或者修改对象的语句执行失败。
- comment仅作为说明使用,不会被mysql优化器用于查询优化,也不会影响索引、约束等功能的正常使用。
良好的comment习惯可以大幅降低数据库的维护成本,建议在创建所有数据库对象时都添加清晰的注释,说明对象的设计用途和注意事项。