Топ 7 ошибок в MySQL

в 5:15, , рубрики: mysql, sql, новичкам, ошибки
Photo by Lauren Mancke on Unsplash

Photo by Lauren Mancke on Unsplash

Мы все знаем, насколько важен SQL для любой работы, связанной с анализом данных. Он пользуется популярностью благодаря возможности извлечения значимой информации из данных и предоставления мощных инструментов для их обработки и анализа.

Но, может быть, вы один из тех пользователей SQL, кто допускает ошибки? Например, забываете использовать агрегатные функции или случайно удаляет все строки в наборе данных?

(Ой!)

Не волнуйтесь!

В данной статье мы рассмотрим некоторые распространенные ошибки в SQL, которые мы все совершаем, и узнаем, как их избежать.

Содержание

  • Ошибка №1: Отсутствие использования условия WHERE

  • Ошибка №2: Игнорирование значений NULL

  • Ошибка №3: Использование SELECT *

  • Ошибка №4: Игнорирование чувствительности к регистру символов

  • Ошибка №5: Забыли об использовании GROUP BY

  • Ошибка №6: Пропуск скобок приводит к неправильному запросу

  • Ошибка №7: Путаница между функциями COUNT() и SUM()

  • Заключение

Ошибка №1: Отсутствие условия WHERE

При выполнении операций, таких как DELETE или UPDATE, отсутствие условия WHERE приводит к удалению всех строк в наборе данных.

Пример:

DELETE FROM Employees;

Данная команда удалила все строки из таблицы Employees, так как условие не было указано.

Правильный запрос:

DELETE FROM Employees 
WHERE Salary > 25000;

Чтобы избежать ошибки, рекомендуется использовать условие WHERE и указать, какие строки вы хотите изменить.

Ошибка №2: Игнорирование значений NULL

Как проверить значение NULL?

Если вы делаете вот так:

SELECT * 
FROM Employees 
WHERE name = NULL;

То это неверный подход, который приведет к ошибке!

Для проверки NULL мы используем IS NULL вместо знака равенства (=).

Правильный запрос:

SELECT * 
FROM Employees 
WHERE name IS NULL;

 Задание для вас

Напишите SQL-запрос для проверки значений NOT NULL.

Ошибка №3: Использование SELECT *

Использование SELECT * возвращает все данные, включая ненужные. Это замедляет выполнение запроса.

Пример:

SELECT * 
FROM Employees;

Данный запрос вернет все столбцы, включая ненужные, особенно при работе с большими наборами данных или объединении нескольких таблиц. Это станет проблемой, так как вывод займет много времени, а также увеличит использование памяти.

 Правильный запрос:

 SELECT Emp_ID, Emp_Name 
 FROM Employees;

 Не забывайте указывать столбцы, которые вам необходимы!

Ошибка №4: Игнорирование чувствительности к регистру символов

Помните, SQL может быть чувствителен к регистру символов.

Что такое чувствительность к регистру символов?

В SQL чувствительность к регистру символов означает различие между прописными (UPPERCASE) и строчными (LOWERCASE) буквами при сравнении строк.

 Как вы думаете, каким будет результат выполнения следующего запроса:

 SELECT * 
 FROM Employees 
 WHERE Name = 'john';

 Этот запрос вернет строки, содержащие только слово 'john' в столбце Name.

 Теперь, что если мы хотим получить строки, содержащие имена типа john, John или JOHN?  Каким должен быть запрос?

 SELECT * 
 FROM Employees 
 WHERE LOWER(Name) = 'john';

 Теперь в результате есть 'john', 'John' или 'JOHN'.

Примечание

По умолчанию поиск в MySQL является независимым от регистра символов.

Ошибка №5: Забыли об использовании GROUP BY

Одна из распространённых ошибок - забыть использовать GROUP BY при применении агрегатных функций, таких как MIN(), MAX() или COUNT().

Пример:

 SELECT department, COUNT(*) 
 FROM Employees;

 Это приведет к ошибке!

Когда используется агрегатная функция, такая как COUNT(), вместе с неагрегатной функцией, такой как 'department', требуется GROUP BY.

Без него механизм SQL не знает, как агрегировать столбец 'department' с результатами COUNT().

Правильный запрос:

SELECT department, COUNT(*) 
FROM Employees
GROUP BY department;

Теперь результат покажет каждый отдел (department) вместе с количеством сотрудников в этом отделе.

Ошибка №6: Пропуск скобок приводит к неправильному запросу

Скобки в SQL имеют решающее значение, особенно в сложных условиях или при использовании нескольких логических операторов.

Пример:

 Предположим, нам нужно отфильтровать сотрудников, которые работают либо в отделе «ИТ», либо в отделе «HR» с зарплатой выше 65000.

 SELECT * FROM Employees 
 WHERE department = 'IT' OR department = 'HR' AND salary > 65000;

Этот запрос выведет в результат всех сотрудников отдела ИТ и только тех сотрудников отдела HR, чья зарплата превышает 65000.

Правильный вариант запроса:

SELECT * FROM Employees 
WHERE (department = 'IT' OR department = 'HR') AND salary > 65000;

Этот запрос теперь корректно показывает сотрудников отделов ИТ или HR с зарплатой выше 65 000.

Ошибка №7: Путаница между функциями COUNT() и SUM()

Начинающие пользователи часто путают функции COUNT() и SUM() в SQL, что приводит к неверным результатам.

COUNT(): Используется для подсчета строк на основе определенного условия. Она считает только строки, но не значения, присутствующие в них.

SUM(): Суммирует числовые значения, присутствующие в конкретном столбце. Она вычисляет общую сумму значений в этом столбце.

 Пример:

Топ 7 ошибок в MySQL - 2

Допустим, мы хотим узнать общую зарплату в отделе продаж.

SELECT department, COUNT(salary) AS Total_Salary
FROM employees
WHERE department = 'Sales'
GROUP BY department;

 Результат: 

Топ 7 ошибок в MySQL - 3

Здесь COUNT(salary) считает количество ненулевых (non-NULL) зарплат в отделе продаж, а не фактическое значение зарплаты.

Поскольку только у двух сотрудников в отделе «Продажи» есть ненулевые зарплаты (фактическая зарплата), результатом является число 2, что неправильно, если мы хотим получить общую сумму заработной платы.

 Правильный вариант запроса:

SELECT department, SUM(salary) AS Total_Salary
FROM employees
WHERE department = 'Sales'
GROUP BY department;

 Результат:

Топ 7 ошибок в MySQL - 4

Этот результат правильно суммирует заработную плату в отделе продаж: 50 000 + 55 000 = 105 000.

Заключение

Понимание и предотвращение распространенных ошибок в MySQL — это ключ к эффективной работе с базами данных. Любая ошибка может привести к нежелательным последствиям, но теперь вы хотя бы знаете о некоторых из них.

Чтобы избежать этих распространенных ловушек, важно развивать внимательность к деталям и следовать лучшим практикам при написании SQL-запросов. Помните, что даже опытные разработчики иногда допускают ошибки, но знание о них и умение их исправлять — это то, что отличает профессионала от новичка.

Автор: DarkHorseFD

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js