为了账号安全,请及时绑定邮箱和手机立即绑定

使 SQL INSERT 语句更易于阅读

使 SQL INSERT 语句更易于阅读

Go
千万里不及你 2021-06-24 22:29:05
我正在用 Go 编写一个程序,它大量使用 MySQL。为了可读性,是否可以在 INSERT 语句中的每个列名之后包含列的值?喜欢:INSERT INTO `table` (`column1` = 'value1', `column2` = 'value2'...);代替INSERT INTO `table` (`column`, `column2`,...) VALUES('value1', 'value2'...);以便更容易查看哪个值与哪个列相关联,考虑到 SQL 字符串通常会变得相当长
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

不,您不能使用您建议的语法(尽管它会很好)。


一种方法是排列列名和值:


INSERT INTO `table` 

(`column`, `column2`,...) 

VALUES

('value1', 'value2'...);

更新响应您的评论“语句包含来自字符串外部的变量”:如果您参数化您的 SQL 语句,那么将列名与变量匹配很容易检查参数是否为其各自的列命名:@ColumnName。


这实际上是我在 TSQL 脚本中的做法:


INSERT INTO `table` 

(

    `column`, 

    `column2`,

    ...

VALUES

(

    'value1', 

    'value2',

    ...

);

(将逗号放在行首也很常见)


但老实说,一旦你得到足够多的列,很容易混淆列的位置。如果它们具有相同的类型(和相似的值范围),您可能不会立即注意到......


查看完整回答
反对 回复 2021-06-28
?
隔江千里

TA贡献1906条经验 获得超10个赞

虽然这个问题有点老,但我会把它放在这里供未来的研究人员使用。


我建议使用 SET 语法而不是丑陋的 VALUES 列表语法。


INSERT INTO table

SET

column1 = 'value1',

column2 = 'value2';

恕我直言,这是 MySQL 中最干净的方式。


查看完整回答
反对 回复 2021-06-28
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信