mysql 中,插入数据的 sql 有很多种形式,除了标准 sql 支持的 INSERT INTO table_name (col1, col2, ...) VALUES (...)
外,还支持 INSERT INTO table_name SET col1=...
的形式,介绍一下它的具体用法及优势。
用法
语法如下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
INTO tbl_name
[PARTITION (partition_name [, partition_name] ...)]
SET assignment_list
[ON DUPLICATE KEY UPDATE assignment_list]
其中,assignment_list
的是 col1=...
这种列对应值的形式,可以很清晰地看到列值的对应关系。
mysql> INSERT INTO tb_query SET query='knowledgedict', type=1;
优势
标准的 sql 插入写法,当指定表的列特别多时,VALUES
后面对应的值会特别乱,容易写错顺序。
SET
的这种方式有如下几点优势:
- 不许考虑列值的对应顺序,不容易写错;
- 容易后期扩展,主要是增加列、减少列;
- 易于阅读。