SQL Skill Bench позволяет выполнить в СУБД Oracle запрос типа SELECT (посмотрев схему базы данных в виде диаграммы) и получить информацию о том, чем результат запроса отличается от правильного. Вы имеете максимум 5 попыток нажатия кнопки Check (для сложных задач больше), но число использованных попыток на оценку не влияет. Если запрос приводит к ошибке СУБД (неверный синтаксис или неверное название таблицы/столбца), попытка не снимается.

Часто задаваемые вопросы по SQL задачам (FAQ)

  1. Почему SQL Skill Bench выдает ошибку ORA-XXXXX при выполнении запроса, который я видел в учебных материалах (скринкастах)? Например:
    SELECT * FROM employees e, employees m WHERE m.employee_id = e.manager_id;
    ОТВЕТ: Потому что в учебных материлах используется SQL IDE (обычно это Oracle SQL Developer), так что написанный код там приходит в СУБД не сразу, а после его препроцессинга в IDE. В частности, в этом примере: а) следует удалить символ ';' (который не является частью языка SQL);
    б) поскольку в таблицах e и m имена столбцов одинаковы, для уникальности имен столбцов выборки следует давать каждому столбцу свой alias;
    в) в этом примере наверняка хочется получить лишь один столбец таблицы m (+ все столбцы таблицы e); в этом случае - когда * НЕ является единственным символом между SELECT и FROM - следует использовать перед * alias таблицы:
    SELECT m.last_name MANAGER, e.* FROM ...
    Таким образом, написание "чистого" SQL-кода в Skill Bench соответствует правилам для программистов (в программах нет никакого препроцессинга - SQL-код сразу отправляется в СУБД). Кстати, использование aliases (для имен таблиц и зачастую для столбцов выборки) является правилом хорошего тона независимо от того, корректно ли выполняется код без aliases.
  2. Могу ли я потренироваться, выполняя произвольные запросы к той же базе данных через SQL Developer?
    ОТВЕТ: Это возможно (для схемы БД EMPLOYEES), но лишь если добавить ваш IP-адрес или пул IP-адресов вашего интернет-провайдера в список доступа к серверу edu-netcracker.com:1521:XE (можно написать просьбу об этом на email центра). Но обычно достаточно выполнять произвольные запросы на вкладке Console (где единственный серьезный недостаток по сравнению с SQL Developer - нет автозаполнения имен таблиц/столбцов/функций и ключевых слов SQL).
  3. Хранит ли Skill Bench предыдущие версии кода? Я хочу вернуться к первой версии своего запроса...
    ОТВЕТ: Да, в системе хранится код всех попыток (т.е. запросов, успешно выполнившихся на вкладке Input, даже если они дали неверный результат). Посмотреть их можно на вкладке Results, кликнув на треугольник в столбце Code. Кстати, это касается и Java-классов (если они успешно компилируются и инстанциируются). Но это не касается SQL-запросов, выполненных на вкладке Console.
  4. Почему возникает ошибка "Too long query"?
    ОТВЕТ: Потому что написание компактного кода входит в число важных навыков программиста (длинный SQL-код с большим числом дублирований сложнее отлаживать, модифицировать и оптимизировать). Даже самые сложные задачи SQL Skill Bench могут быть решены кодом длиной не более 1000 символов. При этом надо заметить, что конструкция WITH не поддерживается: любой запрос должен начинаться со слова SELECT.

P.S. Вопросы, проблемы и предложения по задачам можно (и нужно) писать на OnlineSQL собака netcracker.com (см. email в меню ?), указывая имя задачи в теме письма. Если вы уже начали решать задачу, необходимо вставлять в текст письма полный код своего SQL-запроса.