@Nordman99

Где в SQL запросе ошибка?

Всех приветствую! Подскажите по проблеме:
Начал изучать SQL по книге, в самом начале пример создания таблиц:
CREATE TABLE Departmets(
ID_Dep INT IDENTITY PRIMARY KEY,
DepShortName CHAR(4) NOT NULL UNIQUE,
DepName VARCHAR(128) NOT NULL UNIQUE,
DepAdress VARCHAR(128) NOT NULL DEFAULT «NoAdress»);
CREATE TABLE Groups(
ID_Group IDENTITY PRIMARY KEY,
GroupName CHAR(8) NOT NULL UNIQUE,
Year BYTE NOT NULL DEFAULT 1
CONSTRAINT LearningYears CHECK(BETWEEN 1 AND 6),
Department INT FOREIGN KEY REFERENCES Departmets(ID_Dep)
ON DELETE NO ACTION
ON UPDATE CASCADE),
Monitor INT NOT NULL FOREIGN KEY
REFERENCES Students(ID_Stud)
ON DELETE SET NULL
ON UPDATE CASCADE);
CREATE TABLE Students(
ID_Stud IDENTITY PRIMARY KEY,
StudName VARCHAR(32) NOT NULL DEFAULT «InvisibleStudient»,
StudAdress VARCHAR(128) NOT NULL DEFAULT «HomelessStudient»);
Rating BYTE NOT NULL DEFAULT 0
CONSTRAINT PersonalRatings CHECK(BETWEEN 0 AND 100),
Scholarship INT NOT NULL DEFAULT 0,
Bonus INT NOT NULL DEFAULT 0,
Group INT NOT NULL FOREIGN KEY REFERENCES Groups(ID_Group)
ON DELETE NO ACTION
ON UPDATE CASCADE);
ALTER TABLE Students
ADD CONSTRAINT MonitorBonus
CHECK (
IF Students.ID_Stud IN (SELECT Groups.Monitor FROM Groups)
Then Students.Bonus = 0.01 * Students.Scholarship * Students.Rating);

Образец запроса приведен в итоговом виде, без каких либо предварительных предшествующих действий, т.е. предложено сразу скопировать этот запрос и выполнить его на какой БД.
Выполняю запрос с помощью sqlite3, создал пустую чистую базу данных test.db
Пробовал как в sqlite3 так и в гуевом DB Browser for SQLite Version 3.12.2 выполнять этот запрос результат один:
Таблица Departmets создается без проблем, дальше на этапе создания таблицы Groups на строчке
CONSTRAINT LearningYears CHECK(BETWEEN 1 AND 6),
Выскакивает ошибка:
Execution finished with errors.
Result: near "BETWEEN": syntax error
At line 1:
CREATE TABLE Groups(
ID_Group IDENTITY PRIMARY KEY,
GroupName CHAR(8) NOT NULL UNIQUE,
Year BYTE NOT NULL DEFAULT 1
CONSTRAINT LearningYears CHECK (BETWEEN

В чем ошибка то не пойму? У авторов ошибки надо понимать небыло, но в какой SQL СУБД они работали и выполняли свои запросы не сказано
  • Вопрос задан
  • 847 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AVKor
Ошибка тут:
Result: near "BETWEEN": syntax error

Разные СУБД имеют свои особенности/ограничения. В SQLite использованный синтаксис, очевидно, не поддерживается.
https://database.guide/create-a-check-constraint-i...
https://www.sqlitetutorial.net/sqlite-between/
Меняйте СУБД или книгу.
Ответ написан
Ваш ответ на вопрос

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

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