@Bezumnaya

В чем ошибка sql-запроса?

Что я делаю не так, почему эта ошибка? В ролике на Ютуб у автора все получилось, а у меня нет

CREATE table courses
(id INT(11) NOT NULL PRIMARY KEY,
faculty WARCHAR(55) NULL,
number INT(2) NULL);

Причем точь-в-точь! У него таблица создалась, а у меня нет.
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
У меня в Postgres вот так работает.
CREATE table courses
(id INT PRIMARY KEY,
faculty VARCHAR(55) NULL,
number INT NULL);

Кстати. Бывают разные диалекты SQL. И где-то вместо varchar используется text или string.

Вообще надо указывать тип БД который используется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ev_g
@ev_g
Web dev.
Если ты запустишь запрос, то должен увидеть сообщение об ошибке.

Корректный запрос:
CREATE table courses
(id INT(11) NOT NULL PRIMARY KEY,
faculty VARCHAR(55) NULL,
number INT(2) NULL);

VARCHAR, а не WARCHAR
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Если запрос выполняется с ошибкой, то первой, что нужно сделать - внимательно прочитать сообщение об ошибке. А в форуме - выложить это сообщение - полностью, без корректирования и усечения.

Формально запрос содержит несколько ошибок и недочётов.

  • Основная ошибка, вернее, опечатка - это WARCHAR вместо VARCHAR. Она фатальна.
  • Вторая по тяжести ошибка - это использование служебного слова number в качестве имени поля. В части диалектов SQL это слово - зарезервированное, и тогда эта ошибка тоже фатальна.
  • Третье - это скорее не ошибка, а самообман. Речь об указании длины для полей типа INT. В подавляющем большинстве диалектов, где указание длины допускается, оно просто игнорируется, а потому указание просто не имеет смысла. Если для поля number требуется ограничить возможные значения двумя цифрами, разумнее использовать поле типа TINYINT с соответствующим CHECK constraint.
  • Ну и длина поля типа VARCHAR - опять же ограничение в 55 символов разумнее делать с помощью CHECK constraint, а длину поля задавать максимальную, не приводящую к увеличению потребляемого дискового пространства. С учётом того, как хранятся строки переменной длины, VARCHAR(255) в большинстве диалектов будет наилучшим решением.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы