插入设置或插入值

时间:2014-08-27 10:41:59

标签: mysql sql mysqli

INSERT INTO `table` VALUES ('val1','val2','val3')

INSERT INTO `table` SET a='val1',b='val2',c='val3'

两者都用于相同的目的。但我应该使用哪个?在这种情况下?为什么?

3 个答案:

答案 0 :(得分:3)

它们是相同的,但第一个是standard SQL。由于SQL解析器将它们视为同义词,因此性能,用法或任何内容都没有区别。与往常一样,更喜欢使用标准化表单(本例中的第一种语法),以实现可移植性和兼容性。

Refer to the SQL-92 standard syntax

答案 1 :(得分:0)

据我所知,两种语法都是等价的。

The first is SQL standard, the second is MySQL's extension.

所以他们应该完全相同的表现。

http://dev.mysql.com/doc/refman/5.6/en/insert.html说:

INSERT inserts new rows into an existing table. 
The INSERT ... VALUES and INSERT ... SET forms of the statement 
insert rows based on explicitly specified values. 
The INSERT ... SELECT form inserts rows selected from another 
table or tables.

答案 2 :(得分:-1)

表中的字段并不总是必需的。有时您只想设置一些字段而不是所有字段。然后你将使用第二种形式。

第一种形式通常是使用以下脚本自动生成的:

$query = "INSERT INTO `table` VALUES ("
for(@values) {
   $query .= "'$_'";
}
$query .= ")";

mysql_query($query);

但正确的方法是使用更通常的形式:

@fields = (qw/name firstname address/);
@values = (qw/Wall Larry Paris/);

$query = "INSERT INTO `table` (";
$query .= join(',', @fields);    
$query .= ") VALUES (";
$query .= join(',', @values);
$query .= ")";



mysql_query($query);