MySQL SELECT запросы DISTINCT, GROUP, LIKE, UNION

MySQL SELECT запросы DISTINCT, GROUP, LIKE, UNION

Запрос mysql SELECT это основа работы с базами данных. С его помощью можно получать данные, фильтровать их, сортировать, группировать и объединять из нескольких таблиц. В этой статье разберём самые популярные варианты MySQL SELECT с подробными объяснениями и примерами.

MySQL SELECT DISTINCT — выбор уникальных значений

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

SELECT DISTINCT city FROM users;

В итоге каждый город будет выведен только один раз, не зависимо сколько пользователей из этого города.

MySQL SELECT GROUP/GROUP BY группировка данных

При mysql select запросах GROUP BY применяется для объединения строк по определённому полю. Чаще всего используется вместе с агрегатными функциями (COUNT, SUM, AVG, MAX, MIN). Например, подсчитаем количество пользователей в каждом городе:

SELECT city, COUNT(*) AS total
FROM users
GROUP BY city;

Запрос сгруппирует строки по городу и покажет количество записей в каждой группе.

MySQL SELECT INDEX использование индексов

Индексы ускоряют выполнение запросов MySQL SELECT, то есть, оптимизируют их. Обычно MySQL сам выбирает индекс, но при необходимости можно указать его явно. Более детально про индексы в mysql мы рассказывали в предыдущей статье.

SELECT * FROM users USE INDEX (idx_email)
WHERE email = 'test@learn-top.ru';

Такой подход применяется в редких случаях, когда оптимизатор MySQL выбирает неэффективный индекс. Для email адреса или номера телефона обычно используют UNIQUE INDEX.

MySQL SELECT LEFT получение части строки слева

Функция LEFT() позволяет получить заданное количество символов с начала строки.

SELECT LEFT(username, 5) FROM users;

Данный запрос вернёт первые 5 символов имени пользователя из таблицы users.

MySQL SELECT RIGHT получение части строки справа

Функция RIGHT() возвращает указанное количество символов с конца строки.

SELECT RIGHT(phone, 4) FROM users;

Удобно использовать данную функцию, например, для отображения последних цифр номера телефона.

MySQL SELECT LENGTH длина строки

Функция LENGTH() возвращает длину строки в байтах.

SELECT username, LENGTH(username) FROM users;

Полезно при проверке длины данных или валидации.

MySQL SELECT LIKE поиск по шаблону

MySQL функция LIKE используется для поиска по строкам с шаблонами. Ранее мы уже писали об этой функции более детально в статье: like mysql на примерах.

SELECT * FROM users
WHERE email LIKE '%@gmail.com';

Символ % означает любое количество символов.

MySQL SELECT TIME работа со временем

MySQL позволяет извлекать время из DATETIME или TIMESTAMP.

SELECT TIME(created_at) FROM orders;

Данный запрос вернет только время, без даты.

SELECT MAX MySQL максимальное значение

Функция MAX() возвращает наибольшее значение в столбце.

SELECT MAX(price) FROM products;

Данный запрос полезен при поиске максимальных цен, рейтинга или или даты.

UNION SELECT MySQL объединение результатов

MySQL оператор UNION объединяет результаты нескольких SELECT запросов в один.

SELECT email FROM users
UNION
SELECT email FROM subscribers;

Все дубликаты будут автоматически удалены, если же нужны все записи используйте UNION ALL.

Что получаем в итоге

Наглядную таблицу со списком функций и операторов с объяснением.

Оператор / функция Описание Пример использования
SELECT Основной оператор для выборки данных из таблицы SELECT * FROM users;
DISTINCT Возвращает только уникальные значения столбца SELECT DISTINCT city FROM users;
GROUP BY Группирует строки по указанному полю SELECT city, COUNT(*) FROM users GROUP BY city;
ORDER BY Сортирует результат запроса SELECT * FROM users ORDER BY created_at DESC;
LIMIT Ограничивает количество возвращаемых строк SELECT * FROM users LIMIT 10;
LIKE Поиск по шаблону в строковых данных SELECT * FROM users WHERE email LIKE ‘%@gmail.com’;
LEFT() Возвращает указанное количество символов слева SELECT LEFT(username, 5) FROM users;
RIGHT() Возвращает указанное количество символов справа SELECT RIGHT(phone, 4) FROM users;
LENGTH() Возвращает длину строки SELECT LENGTH(username) FROM users;
MAX() Возвращает максимальное значение столбца SELECT MAX(price) FROM products;
MIN() Возвращает минимальное значение столбца SELECT MIN(price) FROM products;
COUNT() Подсчитывает количество строк SELECT COUNT(*) FROM users;
SUM() Суммирует значения столбца SELECT SUM(amount) FROM orders;
AVG() Возвращает среднее значение SELECT AVG(price) FROM products;
TIME() Извлекает время из DATETIME или TIMESTAMP SELECT TIME(created_at) FROM orders;
UNION Объединяет результаты нескольких SELECT-запросов без дубликатов SELECT email FROM users UNION SELECT email FROM subscribers;
UNION ALL Объединяет результаты SELECT с сохранением дубликатов SELECT email FROM users UNION ALL SELECT email FROM subscribers;
USE INDEX Принудительно указывает индекс для запроса SELECT * FROM users USE INDEX (idx_email);

Запрос SELECT в MySQL мощный инструмент, который позволяет:

  • Получать уникальные данные (DISTINCT, UNIQUE).
  • Группировать и анализировать (GROUP BY, MAX).
  • Искать по шаблонам (LIKE).
  • Работать со строками (LEFT, RIGHT, LENGTH).
  • Объединять результаты (UNION).
  • Сортировать и ограничивать выборку (ORDER BY, LIMIT).

Понимание этих возможностей делает работу с базой данных быстрее, удобнее и эффективнее.