我的查询有什么问题

时间:2014-05-21 16:24:43

标签: mysql sql

以下是我的查询:

CREATE TABLE report_invoice(
'ID' INT(10) NOT NULL AUTO_INCREMENT,
'Invoice_No' VARCHAR(30) NOT NULL,
'Invoice_Type' INT(10) NOT NULL,
'Operator' VARCHAR(50) NOT NULL,
'Customer' VARCHAR(50) NOT NULL,
'Invoice_Date' DATE NOT NULL,
'Total' DECIMAL('10,2'),
PRIMARY KEY ('ID'));

我一直收到这个错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ''ID'
INT(10) NOT NULL AUTO_INCREMENT,
'Invoice_No' VARCHAR(30) NOT NULL,
'Invoic' at line 2  

4 个答案:

答案 0 :(得分:5)

您在字段名称周围使用单引号,而是使用反引号:

CREATE TABLE report_invoice(
`ID` INT(10) NOT NULL AUTO_INCREMENT,
`Invoice_No` VARCHAR(30) NOT NULL,
`Invoice_Type` INT(10) NOT NULL,
`Operator` VARCHAR(50) NOT NULL,
`Customer` VARCHAR(50) NOT NULL,
`Invoice_Date` DATE NOT NULL,
`Total` DECIMAL(10,2),
PRIMARY KEY (`ID`));

答案 1 :(得分:3)

不要使用简单的引号

您可以用反引号替换它们,或者抑制它们。

如果您想使用保留关键字作为列名(无论如何都是坏主意),或者使用完全数字列名或列名中的特殊字符,它们将非常有用。

所以不是你的情况。

也不要在十进制比例和精度周围加上引号。

所以这样就可以了。

CREATE TABLE report_invoice(
ID INT(10) NOT NULL AUTO_INCREMENT,
Invoice_No VARCHAR(30) NOT NULL,
Invoice_Type INT(10) NOT NULL,
Operator VARCHAR(50) NOT NULL,
Customer VARCHAR(50) NOT NULL,
Invoice_Date DATE NOT NULL,
Total DECIMAL(10,2),
PRIMARY KEY (ID));

答案 2 :(得分:0)

取下刻度线或用后面的刻度替换它们。数字相同。

CREATE TABLE report_invoice( ID INT(10) NOT NULL AUTO_INCREMENT, Invoice_No VARCHAR(30) NOT NULL, Invoice_Type INT(10) NOT NULL, Operator VARCHAR(50) NOT NULL, Customer VARCHAR(50) NOT NULL, Invoice_Date DATE NOT NULL, Total DECIMAL(10,2), PRIMARY KEY (ID));

答案 3 :(得分:0)

CREATE TABLE report_invoice(
Id INT IDENTITY PRIMARY KEY,
Invoice_No VARCHAR(30) NOT NULL,
Invoice_Type INT NOT NULL,
Operator VARCHAR(50) NOT NULL,
Customer VARCHAR(50) NOT NULL,
Invoice_Date DATE NOT NULL,
Total DECIMAL );