有没有办法在INSERT语句中命名列?

时间:2009-01-14 15:06:03

标签: mysql syntax insert

当我在PHP代码中执行SELECT语句时,我总是选择命名列,例如:

SELECT id, name from users;

而不是使用:

SELECT * from users;

这样做的好处是提供更多信息和可读性,并且如果将新列添加到表中,也可以避免以后出现问题。

我想知道的是,是否可以在INSERT语句中使用相同的想法?我想象它可能是这样的:

INSERT into people values (id=1, name="Fred");

我在这个例子中显示的语法不起作用,但我想知道是否有可能是等价的东西?如果没有,有谁知道为什么不呢?这是故意遗漏吗?

9 个答案:

答案 0 :(得分:28)

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

INSERT INTO people (id, name)
VALUES (1, 'Fred');

答案 1 :(得分:5)

INSERT into people(id,name) values (1, 'Fred');

答案 2 :(得分:5)

你想要的是

INSERT INTO PEOPLE ( id, name ) VALUES ( 1, 'FRED' )

答案 3 :(得分:4)

INSERT INTO table (column_1, column_2, column_3, ...)
VALUES (value_1, value_2, value_3, ...)

答案 4 :(得分:4)

使用INSERT INTO <table> (col1, col2) VALUES (1,2)

答案 5 :(得分:3)

以这种方式尝试: INSERT INTO people(id,name)VALUES(1,“Fred”);

答案 6 :(得分:3)

此案例的语法是

  

INSERT into people(id,name)values(1,'Fred');

至少它适用于我使用的dbms(PostgreSQL)

答案 7 :(得分:3)

只有MySQL可以使用这种语法。 Afaik,其他RDBMS不允许这样做。这是语法:

INSERT INTO games SET yr = 2012, city = 'London';

我希望PostgreSQL能够促进这种插入语法

然而,标准ANSI语法将是

插入人(年,城)价值观(2012年,'伦敦');

答案 8 :(得分:2)

使用标准语法,您可以一次插入多行:

INSERT INTO Table (column1,...,columnN) VALUES
(r1v1, ..., r1vN),
(r2v1, ..., r2vN),
(r3v1, ..., r3vN).

这是MUCH faster way of importing data,而不是一行一次(特别是在MySQL中)!我不认为你可以使用

做同样的事情
INSERT INTO Table SET column1 = r1v1, ..., columnN = r1vN

语法。

(从个人经验来看,每次插入300000行一次需要几分钟。当我将脚本更改为仅使用少量插入语句时,每次插入数千行,只需几秒钟即可全部导入,MySQL 5.0 )。