MySQL表的INSERT语句

时间:2012-02-07 11:23:36

标签: mysql insert

CREATE TABLE IF NOT EXISTS `MyTable` (
  `ID` SMALLINT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(50) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO MyTable (ID,Name) VALUES (ID=4,Name='xxx')

INSERT INTO MyTable (Name) VALUES (Name='xxx')

问题是两个INSERT语句都产生条目(4, 0 )。为什么 0 而不是“xxx”?

更新:主键已更改。

6 个答案:

答案 0 :(得分:4)

这应该做的工作:

INSERT INTO MyTable (ID, Name) VALUES (4, 'xxx')

答案 1 :(得分:2)

我很确定它会是这样的,而不是......

INSERT INTO MyTable (Name) VALUES ('xxx')

不需要Name=部分,因为您已经使用第一个(Name)定义指定了要插入的列。

答案 2 :(得分:2)

因为表达式 Name='xxx'为false,因此评估为零。

您使用column=expression条款中的on duplicate key update方法,如here所述,而不是插入的“常规”部分。一个例子:

insert into mytable (col1,col2) values (1,2)
    on duplicate key update col1 = col1 + 1

您应该使用语法:

INSERT INTO MyTable (ID,Name) VALUES (4,'xxx')

答案 3 :(得分:0)

Name='xxx'的语法是否有效?从来没有见过它,我认为它将它视为一个不带引号的文字,试图将其转换为数字并提出0?我完全不确定

试试这个:

INSERT INTO MyTable (Name) VALUES ('xxx')

答案 4 :(得分:0)

这是因为您应该在值部分中提及列的名称。还因为你没有正确定义主键(airlineID不是字段列表的一部分)

CREATE TABLE IF NOT EXISTS `MyTable` (
  `ID` SMALLINT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(50) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO MyTable (ID,Name) VALUES (4,'xxx')

INSERT INTO MyTable (Name) VALUES ('xxx')

答案 5 :(得分:0)

试试这个

INSERT INTO MyTable (ID,Name) VALUES (4,xxx)

如需更多信息,请访问此link