我有一张桌子
CREATE TABLE IF NOT EXISTS `employee` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) DEFAULT NULL,
`SALARY` int(11) DEFAULT NULL,
`DEPT` varchar(10) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
如果我为上表插入值,如下面的抛出错误
INSERT INTO employee ('NAME', 'SALARY', 'DEPT') VALUES ('user test', 10000, 'ADMIN');
答案 0 :(得分:6)
删除列名称的单引号。
INSERT INTO employee (NAME, SALARY, DEPT) VALUES ('user test', 10000, 'ADMIN');
单引号用于字符串文字,列名是标识符。服务器抛出异常,因为列需要标识符而不是字符串文字。使用单引号包装标识符会将其转换为字符串。
如果发生列名和表名都是mysql保留关键字列表中的关键字之一,则可以使用反引号分隔。
答案 1 :(得分:2)
更改此
INSERT INTO employee ('NAME', 'SALARY', 'DEPT') VALUES ('user test', 10000, 'ADMIN');
到
INSERT INTO employee (`NAME`, `SALARY`, `DEPT`) VALUES ('user test', 10000, 'ADMIN');