2

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

SELECT id, name from users;

而不是使用:

SELECT * from users;

这样做的好处是信息量更大、可读性更强,并且还可以避免以后在表中添加新列时出现问题。

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

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

我在此示例中显示的语法不起作用,但我想知道是否可以使用等效的方法?如果没有,有谁知道为什么不?是故意遗漏吗?

4

9 回答 9

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

INSERT INTO people (id, name)
VALUES (1, 'Fred');
于 2009-01-14T15:08:01.203 回答
5
INSERT into people(id,name) values (1, 'Fred');
于 2009-01-14T15:08:14.340 回答
5

你想要的是

INSERT INTO PEOPLE ( id, name ) VALUES ( 1, 'FRED' )
于 2009-01-14T15:08:33.463 回答
4
INSERT INTO table (column_1, column_2, column_3, ...)
VALUES (value_1, value_2, value_3, ...)
于 2009-01-14T15:08:23.683 回答
4

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

于 2009-01-14T15:09:07.770 回答
3

试试这个方法: INSERT INTO people (id, name) VALUES (1, "Fred");

于 2009-01-14T15:09:05.180 回答
3

这种情况的语法是

插入人员(id,name)值(1,'Fred');

至少它在我使用的 dbms 中有效(PostgreSQL)

于 2009-01-14T15:09:56.300 回答
3

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

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

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

然而,标准 ANSI 语法将是

INSERT into people (yr, city) values (2012, 'London');

于 2009-01-14T15:28:09.260 回答
2

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

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

这是比一次一行(尤其是在 MySQL 中)更快的数据导入方式!我不认为你可以做同样的使用

INSERT INTO Table SET column1 = r1v1, ..., columnN = r1vN

句法。

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

于 2009-02-14T12:49:18.630 回答