#mysql #sqlite #mariadb
#mysql #sqlite #mariadb
Вопрос:
У меня возникли проблемы с изучением баз данных прямо на первом круге.
На странице 104 Silberschatz он представляет этот запрос при объяснении подзапросов.
select dept_name, avg_salary
from (select dept_name, avg (salary)
from instructor
group by dept_name)
as dept_avg (dept_name, avg_salary)
where avg_salary > 42000;
Однако этот код не работает в моей системе, которая, как я позже узнал, на самом деле является MariaDB, а не MySQL. Я также использую Adminer.
Ошибка заключается в следующем
Error in query (1064): Syntax error near '(dept_name, avg_salary) where avg_salary > 42000' at line 5
Я использую BunsenLabs Lithium, который не поддерживает MySQL или phpMyAdmin, поэтому я не могу переключиться без переустановки всей моей системы.
Я запустил этот запрос через два средства проверки синтаксиса.
Этот https://www.eversql.com/sql-syntax-check-validator / сказал, что запрос был в порядке, но плохо оптимизирован.
Этот https://www.piliapp.com/mysql-syntax-check / Выдал ту же недопустимую синтаксическую ошибку, что и моя система.
Однако Silberschatz создал командную строку SQL на основе браузера на основе SQLite для запроса к той же базе данных, которая используется в книге. Я запустил его запрос, как это было написано в книге, в командной строкеhttps://www.db-book.com/db7/university-lab-dir/sqljs.html , который выдает аналогичную ошибку
Uncaught Error: near "(": syntax error
Версия MySQL / MariaDB: mysql Версия 15.1 Дистрибутив 10.3.23-MariaDB, для debian-linux-gnu (x86_64) с использованием readline 5.2
Кто-нибудь знает, что происходит? Спасибо за ваше время
Комментарии:
1. Первое сообщение об ошибке не соответствует запросу над ним.
2. @Shadow извините за неправильный запрос, исправлено.
3. Ну, это не синтаксис mysql.
4. Этот синтаксис допустим в SQL Server: dbfiddle.uk /… и Postgresql: dbfiddle.uk /…
5. Похоже, что в этой книге не используются возможности конкретной СУБД. Так что, вероятно, вы должны найти что-то еще.
Ответ №1:
Найдена ссылка, описывающая различные методы для указания псевдонимов таблиц и столбцов, которые включают псевдонимы столбцов в предложении from:
Переименование столбцов в предложении from уже требовалось SQL-92 промежуточного уровня, но стало обязательной функцией SQL: 1999.4, тем не менее, его принятие оставляет желать лучшего.
Связанный сайт указывает, что mariadb вообще не поддерживает этот синтаксис, в то время как mysql имеет ограниченную поддержку для него в случае производных таблиц.