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

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

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

Что такое SQL?

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

Зачем SQL для тестировщика?

SQL-запросы предоставляют информацию для тестирования: они помогают определить, находятся ли данные в нужной таблице, были ли они записаны в базу данных и в правильном ли формате они представлены.
Потренируйтесь на задачах
В SQL Arena больше тысячи задач с автопроверкой на настоящих таблицах: от первого SELECT до оконных функций и задач с собеседований. Задачи уровня Easy бесплатны, регистрация без карты.
Открыть SQL Arena

Распространенные запросы и функции 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 age DESC, 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 — максимальное значение
MIN — минимальное значение
Давайте рассмотрим, как использовать эти функции в запросах:
Чтобы посчитать количество записей в таблице 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. Чем HAVING отличается от WHERE, разобрано в статье «GROUP BY vs HAVING в SQL: разница и частые ошибки». Например, если нам нужно вывести города со средним возрастом больше 30 лет, то запрос будет выглядеть следующим образом:
SELECT town, AVG(age) FROM users GROUP BY town HAVING AVG(age) > 30 ORDER BY town;

Как отработать SQL-запросы на практике

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

Все запросы из этой статьи можно отработать на SQL Arena — тренажёре SQL с автопроверкой: 1 192 задачи, все задачи уровня Easy бесплатны и без карты.
Потренируйтесь на задачах
В SQL Arena больше тысячи задач с автопроверкой на настоящих таблицах: от первого SELECT до оконных функций и задач с собеседований. Задачи уровня Easy бесплатны, регистрация без карты.
Открыть SQL Arena
Курс «Инженер по ручному тестированию»
Учим с нуля до трудоустройства: персональный ментор, задания в Jira, подготовка к собеседованиям и поддержка на испытательном сроке.
Узнать о курсе
По всем вопросам:
Quality Academy
Используя данный сайт, вы даёте согласие на использование файлов cookie.
ОК, ЗАКРЫТЬ