SQL — это язык структурированных запросов, который должен быть знаком каждому тестировщику на базовом уровне. На каждом собеседовании QA-инженеры сталкиваются с вопросами по SQL или получают практические задания, требующие написания запросов.
В этой статье мы рассмотрим, что такое SQL и какие основные запросы должен знать каждый тестировщик, чтобы работать с базами данных.
Что такое SQL?
SQL — это аббревиатура, которая расшифровывается как "Structured Query Language". Этот язык используется для создания, модификации и управления данными в реляционных базах данных, управляемых соответствующими системами управления базы данных. Когда мы выполняем SQL-запрос, база данных отвечает на него, используя собственный протокол, основанный на протоколе TCP.
Зачем SQL для тестировщика?
SQL-запросы предоставляют информацию для тестирования: они помогают определить, находятся ли данные в нужной таблице, были ли они записаны в базу данных и в правильном ли формате они представлены.
Распространенные запросы и функции SQL в тестировании
Ниже мы рассмотрим девять основных запросов и функций, которые часто встречаются на собеседованиях. Эти запросы будут основываться на таблице "USERS", которая содержит следующие столбцы: user_id, first_name, last_name, email, town и age.
SQL-запрос SELECT
Если нам нужно получить все данные из столбца first_name, то наш запрос будет выглядеть следующим образом:
SELECT first_name * FROM users;
Чтобы получить информацию из нескольких колонок, используем следующий запрос:
SELECT first_name, last_name * FROM users;
Фильтрация с помощью WHERE
Фильтрация данных осуществляется с помощью команды WHERE. Например, если мы хотим выбрать людей старше 30 лет из нашей таблицы, то используем следующий запрос:
SELECT * FROM users WHERE age > 30;
Для команды WHERE важно запомнить все знаки сравнения: = (равно),!= (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно).
Запрос ORDER BY
Этот запрос позволяет сортировать данные по возрастанию и убыванию. По умолчанию данные сортируются по возрастанию. Если нам нужно просто отсортировать все данные по возрастанию, например, по возрасту, то наш запрос будет выглядеть следующим образом:
SELECT * FROM users ORDER BY age;
Для сортировки по убыванию возраста, а по возрастанию имени можно использовать запрос:
SELECT * FROM users ORDER BY DESC age; first_name ASC;
где DESC означает сортировку по убыванию, а ASC — по возрастанию.
Запрос на ограничение выборки
Для ограничения выборки в SQL существуют две команды: LIMIT и OFFSET. LIMIT устанавливает максимальный лимит данных, а OFFSET — смещение выборки. Например, запрос:
SELECT * FROM users ORDER BY age LIMIT 30 OFFSET 25;
покажет первые 30 пользователей, отсортированных по возрасту, со смещением на 25 человек.
Фильтрация по диапазону
Чтобы избежать написания длинных запросов с командой WHERE, таких как:
SELECT * FROM users WHERE age >= 30 AND age <= 45;
мы можем использовать команду BETWEEN:
SELECT * FROM users WHERE age BETWEEN 30 AND 45;
Запрос на уникальные записи
Для извлечения уникальных записей из таблицы используется команда DISTINCT:
SELECT DISTINCT town * FROM users;
Агрегатные функции
В SQL запросах существует следующие агрегатные функции:
COUNT — подсчет количества записей
SUM — сумма значений
AVG — среднее значение
MAX — максимальное значение
MAX — максимальное значение
SUM — сумма значений
AVG — среднее значение
MAX — максимальное значение
MAX — максимальное значение
Давайте рассмотрим, как использовать эти функции в запросах:
Чтобы посчитать количество записей в таблице users:
SELECT COUNT(*) * FROM users;
Расчет суммы возрастов всех людей:
SELECT SUM (age) * FROM users;
Среднее значение:
SELECT AVG (age) * FROM users;
Максимальное значение:
SELECT MAX (age) * FROM users;
Минимальное значение:
SELECT MIN (age) * FROM users;
Группировка
Допустим, у нас есть таблица с пользователями, и нам нужно посчитать средний возраст пользователей из Москвы. Это можно сделать за один запрос с помощью группировки. СУБД виртуально разделит таблицу на группы городов и подсчитает средний возраст:
SELECT town, AVG (age) * FROM users GROUP BY town;
Фильтрация с помощью HAVING
Фильтрацию после группировки можно выполнить с помощью команды HAVING. Например, если нам нужно вывести города со средним возрастом больше 30 лет, то запрос будет выглядеть следующим образом:
SELECT town, AVG(age) FROM users GROUP BY town HAVING AVG(age) > 30 ORDER BY town;
Существует множество нюансов работы с базами данных, которые могут привести к ошибкам, например, неправильное расположение синтаксисов или отсутствие правильной пунктуации. Так как этот вопрос часто встречается на собеседованиях, отработать SQL-запросы можно только на практике. Только работа над своими ошибками поможет вам лучше освоить работу с базами данных.
Контакты
Телеграм-бот для связи: https://t.me/quality_academy_bot
Телеграм-канал школы: https://t.me/quality_academy
Отзывы учеников: https://t.me/+C2yITW3SfQ05ZjJi
Сайт школы: https://quality-academy.ru/
Помощь в трудоустройстве: https://quality-academy.ru/career
Телеграм-бот для связи: https://t.me/quality_academy_bot
Телеграм-канал школы: https://t.me/quality_academy
Отзывы учеников: https://t.me/+C2yITW3SfQ05ZjJi
Сайт школы: https://quality-academy.ru/
Помощь в трудоустройстве: https://quality-academy.ru/career