SQL: Основы для тестировщиков

SQL — это язык структурированных запросов, который должен быть знаком каждому тестировщику на базовом уровне. На каждом собеседовании QA-инженеры сталкиваются с вопросами по SQL или получают практические задания, требующие написания запросов.

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

Что такое SQL?

SQL — это аббревиатура, которая расшифровывается как "Structured Query Language". Этот язык используется для создания, модификации и управления данными в реляционных базах данных, управляемых соответствующими системами управления базы данных. Когда мы выполняем SQL-запрос, база данных отвечает на него, используя собственный протокол, основанный на протоколе TCP.

Пример SQL-запроса
Пример SQL-запроса

Зачем 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 — максимальное значение

Давайте рассмотрим, как использовать эти функции в запросах:

Чтобы посчитать количество записей в таблице 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-league.notion.site/Quality-Academy-386e47fae8ef45d399ba916147216fae

Начать дискуссию