JavaRush /Курси /SQL SELF /Типові помилки при використанні SELECT

Типові помилки при використанні SELECT

SQL SELF
Рівень 3 , Лекція 3
Відкрита

Як і в будь-якій іншій сфері програмування, у роботі з SELECT помилки неминучі. Навіть у найдосвідченіших розробників SQL-запити іноді містять баги. Сьогодні ми розберемо типові помилки при використанні SELECT, їх причини і як їх уникнути.

SQL — це мова, яка суворо дотримується синтаксичних правил. Пропущені чи зайві коми, пропущений оператор або неправильний порядок слів — і база даних одразу підніме "червоний прапор".

Пропущені ключові слова

Найпоширеніша помилка — банально забути одне з обов’язкових ключових слів. Наприклад, спробуємо виконати таку команду:

SELECT name age FROM students;

Чогось не вистачає, правда? Тут пропущено ключове слово , між полями name і age. Виправляємо помилку:

SELECT name, age FROM students;

Причина таких помилок зрозуміла: ти або тільки вчишся писати запити, або просто поспішаєш. SQL не терпить поспіху!

Помилки в іменах стовпців і таблиць

SQL-команди чутливі до правильних імен стовпців і таблиць. Спробуємо запит:

SELECT naem, agge FROM studnts;

База даних на таке дивиться як на нісенітницю: стовпці naem і agge, як і таблиця studnts, просто не існують. Виправляємо:

SELECT name, age FROM students;

Порада: Якщо не впевнений у іменах, використовуй команду \d table_name у psql або інтерфейс pgAdmin, щоб перевірити структуру таблиці.

Забуті лапки

Імена стовпців і таблиць, які містять пробіли або інші спецсимволи, мають бути взяті в подвійні лапки. Приклад:

SELECT "first name", age FROM students;

Якщо забути лапки, SQL не зрозуміє, що ти мав на увазі, і видасть помилку.

Логічні помилки: коли все працює, але не так, як ти очікував

Іноді запити виконуються успішно, але результат виходить "дивним". Це логічні помилки. Вони підступніші, бо база даних не скаже тобі, що щось пішло не так.

  1. Неправильне використання операторів порівняння. Уяви, що ти хочеш вибрати всіх студентів старших 18 років:
SELECT * FROM students WHERE age > 18;

Тепер спробуємо запит з іншим оператором:

SELECT * FROM students WHERE age = 18;

Цей запит поверне тільки тих, кому рівно 18 років. Якщо ти очікував включити всіх студентів старших 18, це логічна помилка.

Порада: Уважно перевіряй такі деталі. Якщо сумніваєшся, почни з невеликих вибірок (наприклад, з LIMIT).

Помилки при комбінуванні умов

Розглянемо приклад:

SELECT * FROM students WHERE age > 18 OR grade = 'A' AND city = 'New York';

Цей запит несподівано може повернути студентів, які не живуть у Нью-Йорку. Чому? Бо порядок логічних операторів такий: SQL спочатку обробляє AND, а потім OR. Перепишемо запит із дужками:

SELECT * FROM students WHERE (age > 18 OR grade = 'A') AND city = 'New York';

Тепер усе правильно.

Відсутність фільтрації

Іноді запит типу SELECT * FROM students; повертає величезні обсяги даних, хоча ти шукав щось конкретне, наприклад, студентів із певного міста. Рішення? Додай фільтри за допомогою WHERE:

SELECT * FROM students WHERE city = 'New York';

Проблеми з продуктивністю

Коли запити працюють із великою кількістю даних, стає критично важливо їх оптимізувати. Давай розберемо типові помилки, які знижують продуктивність.

Запити типу SELECT * можуть бути зручні під час розробки, але в реальному житті вони погано впливають на продуктивність. Якщо тобі потрібні лише певні стовпці — вказуй їх.

-- Погано:
SELECT * FROM students;

-- Добре:
SELECT name, age FROM students;

Чому це важливо? SELECT * витягує усі стовпці, навіть якщо ти їх не використовуєш. Це збільшує обсяг переданих даних.

Практичні поради: як уникати помилок

SQL-запити можна зробити надійнішими, якщо дотримуватися кількох рекомендацій:

  • Перевіряй синтаксис перед виконанням: використовуй IDE або підказки pgAdmin, які можуть заздалегідь вказати на помилки.
  • Починай із маленьких вибірок. Додавай LIMIT 5 або LIMIT 10 для перевірки.
  • Використовуй коментарі, щоб зрозуміти, що робить запит:
    -- Витягнути всіх студентів старших 18 років
    SELECT name, age FROM students WHERE age > 18;
    
  • Тестуй із різними даними, щоб перевірити коректність логіки.
  • Не зловживай SELECT *, особливо на великих таблицях.

Пастки на співбесідах

Одна з популярних задач для SQL-співбесід — знайти помилки в запиті. Наприклад:

SELECT name FROM employees WHERE salary > 50000 ORDER BY department;

Запитай себе: цей запит логічно коректний? Якщо ORDER BY використовується, то, скоріше за все, сортування має бути за зарплатою:

SELECT name FROM employees WHERE salary > 50000 ORDER BY salary DESC;

Робота з SELECT — це основа SQL, і помилки тут неминучі на перших етапах. Але з часом ти почнеш писати запити так само легко, як набирати повідомлення в месенджері, бо справжні програмісти тренуються не тільки на котах, а й на базах даних. 😉

1
Опитування
Сортування даних, рівень 3, лекція 3
Недоступний
Сортування даних
Сортування даних
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ