Ошибка синтаксиса SQL-запроса при создании таблицы

Я получаю ошибку синтаксиса SQL-запроса при создании таблицы. Вот SQL-запрос:

CREATE TABLE ACCOUNT (
  ACCNO NUMBER(5) NOT NULL,
  NAME VARCHAR(20) NOT NULL,
  BA L NUMBER(8,2) NOT NULL,
  CREATION-DT DATE NOT NULL,
  PRIMARY KEY ( ACCNO )
);

Вот ошибка:

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'NUMBER(5) NOT NULL.

Что не так с моим синтаксисом?

2 ответа

Решение

Используя SQLfiddle, вы можете видеть, что это недопустимо.

У вас есть несколько проблем с вашим синтаксисом; недопустимые типы данных, недопустимые имена столбцов и т. д. Вы можете инкапсулировать недопустимые имена в backticks, но тогда вам придется помнить, чтобы инкапсулировать их позже.

Вместо Number ты наверное имел ввиду numeric но я бы предложил попробовать Integer вместо.

Или просто попробуйте это:

CREATE TABLE ACCOUNT (
  ACCNO INTEGER(5) NOT NULL,
  NAME VARCHAR(20) NOT NULL,
  BAL INTEGER(8) NOT NULL,
  CREATIONDT DATE NOT NULL,
  PRIMARY KEY ( ACCNO )
);

NUMBER не является допустимым типом данных в MySQL, вы должны выбрать тот из списка (возможно, вы имели в видуNUMERIC).

Вы также должны экранировать некоторые идентификаторы (в вашем случае имена столбцов BA L, который включает в себя пространство внутри него, и CREATION-DT, который включает в себя тире) с кавычками ` в MySQL:

CREATE TABLE `ACCOUNT` (
  `ACCNO` NUMERIC(5) NOT NULL,
  `NAME` VARCHAR(20) NOT NULL,
  `BA L` NUMERIC(8,2) NOT NULL,
  `CREATION-DT` DATE NOT NULL,
  PRIMARY KEY ( `ACCNO` )
);

SQLFiddle

Другие вопросы по тегам