SQL для начинающих. Функции и операторы.
@stoic_ftrАгрегатные функции
Агрегатные функции используются для вычисления значений на основе множества строк, возвращая одно значение. Они помогают анализировать большие наборы данных.
- COUNT(): Считает количество строк. Например,
COUNT(*)вернёт общее количество строк в таблице, аCOUNT(столбец)— количество строк, где значение столбца не равно NULL. - SUM(): Суммирует значения в определённом столбце. Полезно для суммирования числовых данных, таких как доходы или продажи. Пример:
SELECT SUM(цена) FROM заказы;
- AVG(): Находит среднее значение числового столбца.
SELECT AVG(зарплата) FROM сотрудники;
- MAX() и MIN(): Возвращают максимальное или минимальное значение. Это может быть полезно для определения наибольшего или наименьшего значения в наборе данных.
SELECT MAX(возраст) FROM сотрудники;
Функции работы со строками и датами
SQL предлагает множество функций для работы с текстом и временными данными, что упрощает их обработку и анализ.
- CONCAT(): Объединяет несколько строк в одну. Например, вы можете объединить фамилию и имя сотрудников в одну строку.
SELECT CONCAT(имя, ' ', фамилия) AS ФИО FROM сотрудники;
- SUBSTRING(): Извлекает часть строки. Используется для получения подстроки из строки по индексу.
SELECT SUBSTRING(телефон, 1, 3) AS код_страны FROM клиенты;
- DATEDIFF(): Возвращает разницу между двумя датами.
SELECT DATEDIFF(сегодняшняя_дата, дата_начала) FROM проект;
Операторы сравнения и логические операторы
Эти операторы помогают фильтровать данные по различным критериям, создавая гибкие и мощные запросы.
- Операторы сравнения (
=,<>,>,<,>=,<=): Они позволяют сравнивать значения в SQL запросах. Например, можно выбрать всех сотрудников с зарплатой больше 50 000:
SELECT * FROM сотрудники WHERE зарплата > 50000;
- BETWEEN: Проверяет, попадает ли значение в заданный диапазон.
SELECT * FROM продукты WHERE цена BETWEEN 100 AND 500;
- LIKE: Ищет схожие строки по шаблону с использованием символов подстановки, таких как
%.
SELECT * FROM клиенты WHERE имя LIKE 'А%';
- AND, OR, NOT: Логические операторы помогают комбинировать условия.
SELECT * FROM сотрудники WHERE отдел = 'Продажи' AND зарплата > 30000;
ТОП-5 вопросов на собеседовании по SQL:
1.Напишите SQL-запрос, который возвращает только уникальные значения из столбца данных в таблице.
Чтобы вернуть уникальные значения из столбца, используется ключевое слово DISTINCT. Оно убирает дублирующиеся значения из результата запроса.
SELECT * FROM сотрудники WHERE отдел = 'Продажи' AND зарплата > 30000;
Этот запрос вернёт все уникальные значения из столбца column_name таблицы table_name.
2. Как найти дубликат записи? Опишите процесс для дублирования записей с одним и несколькими полями.
Для поиска дубликатов можно использовать группировку данных и функцию COUNT. Рассмотрим процесс поиска дубликатов для одного поля и для нескольких полей:
- Для одного поля: Если нужно найти дубликаты по одному столбцу, например, по
email:
SELECT email, COUNT(*) FROM users GROUP BY email HAVING COUNT(*) > 1;
Этот запрос группирует данные по столбцу email и выводит те значения, которые встречаются больше одного раза.
- Для нескольких полей: Если нужно найти дубликаты по комбинации столбцов, например, по
first_nameиlast_name:
SELECT first_name, last_name, COUNT(*) FROM users GROUP BY first_name, last_name HAVING COUNT(*) > 1;
Этот запрос покажет, если несколько строк имеют одинаковые значения в полях first_name и last_name.
3. Что такое булевое значение в SQL?
Булевое значение в SQL — это значение, которое может быть либо TRUE, либо FALSE. SQL также поддерживает третий вариант — NULL, который означает неопределённое или отсутствующее значение.
Булевы значения обычно используются в условиях запросов, например:
SELECT * FROM users WHERE is_active = TRUE;
Этот запрос вернёт все строки, где значение столбца is_active равно TRUE.
Однако, не во всех базах данных SQL существует явный тип данных BOOLEAN. Например, в MySQL можно использовать TINYINT(1), где 1 считается TRUE, а 0 — FALSE.
4. Как получить последнийidбез использования функцииmax?
Чтобы получить последний добавленный идентификатор (ID), можно использовать функции, предоставляющие доступ к последнему вставленному значению.
Если нужно получить последнюю запись, можно использовать сортировку по ID:
SELECT id FROM table_name ORDER BY id DESC LIMIT 1;
5. Чем отличаются DISTINCT и UNIQUE?
DISTINCT— это ключевое слово, используемое вSELECTдля возвращения уникальных значений. Оно работает на уровне результата запроса.
Пример:
SELECT DISTINCT column_name FROM table_name;
Этот запрос вернёт уникальные значения для column_name.
UNIQUE— это ограничение, которое накладывается на столбец или группу столбцов в таблице при её создании. Это ограничение гарантирует, что значения в этом столбце будут уникальными для каждой строки.
CREATE TABLE users ( id INT PRIMARY KEY, email VARCHAR(255) UNIQUE );
Здесь UNIQUE гарантирует, что каждый адрес электронной почты будет уникальным для каждой записи в таблице users.
Таким образом, DISTINCT используется в запросах для фильтрации дубликатов, а UNIQUE — это ограничение на уровне таблицы, которое предотвращает дублирование данных при вставке.