SELECT запросы

cats-candy-store

SELECT — команда для поиска данных в базе данных.

Чаще всего в работе тестировщику приходится искать и сравнивать фактические изменения в базе данных, произведенные сервером, с ожидаемыми.

Например, мы послали запрос на добавление конфеты на склад (см. Интеграционное тестирование) и ожидаем, что запись о ней появится в базе данных, причем вся информация о конфете должна быть корректна.

Команда SELECT


SELECT запрос может содержать следующие ключевые слова:

  • SELECT с перечислением имен столбцов, которые необходимо вывести в результирующей таблице, если указать * будут выведены все столбцы.
  • FROM имя таблицы
  • WHERE условие выборки по столбцу, например:
  • ORDER BY имена столбцов, по которым будет произведена сортировка, также можно указать ключевое слово ASC — сортировка по возрастанию (по умолчанию), DESC — сортировка по убыванию.

Важно соблюдать порядок ключевых слов!

SELECT id, name
FROM cat
WHERE name LIKE '%астронавт%'
ORDER BY name DESC;

Выбрать идентификаторы и имена котов, в именах которых присутствует слово 'астронавт' с сортировкой по имени в порядке убывания


id name
1 Кот-астронавт
3 Брат Кота-астронавта

Результат выполнения запроса


Оператор LIKE


Оператор LIKE позволяет писать в WHERE условия для поиска строк по шаблону. В шаблоне допускается использовать следующие символы:

  • Символ % обозначает ноль, один или более любых символов
  • Символ _ обозначает один любой символ
  • [ ] используется для указания символов, которые должны присутствовать в строке
  • [^] используется для указания символов, которые не должны присутствовать в строке
SELECT *
FROM cat
WHERE name LIKE '____а%';

Выбрать всех котов из таблицы cat, пятая буква в имени которых — а


id name
1 Кот-астронавт

Результат выполнения запроса


Логические операторы AND и OR


Для комбинации нескольких условий в WHERE используются логические операторы:

  • AND: при использовании логического И результатом будут строки, которые удовлетворяют обоим условиям, объединённым оператором
  • OR: при использовании логического ИЛИ результатом будут строки, которые удовлетворяют хотя бы одному из условий
SELECT *
FROM cat
WHERE is_ginger = true AND name LIKE 'К%';

Например, выбрать котов из таблицы cat рыжего цвета И с именами, начинающимися на 'К'


Операторы BETWEEN и IN


Еще пара операторов сравнения, которые при желании можно заменить комбинацией условий с AND/OR:

  • BETWEEN: позволяет выбирать значения в пределах указанного диапазона включительно
  • IN: используется для сравнения значения с набором перечисленных значений
SELECT *
FROM cat
WHERE age BETWEEN 1 AND 3 
OR color IN ('white', 'black');

Выбрать котов из таблицы cat в возрасте МЕЖДУ 1 И 3 ИЛИ с цветом из перечисления ('white', 'black')


Ключевое слово DISTINCT


Ключевое слово DISTINCT указывается, когда необходимо выбрать только уникальные значения из столбца или комбинации столбцов.

SELECT DISTINCT name
FROM cat;

Выбрать уникальные имена котов из таблицы cat


Задача

Напишите запросы для выборки данных из таблицы с именем candy

  1. Выберите все конфеты, у которых есть (true) начинка filling
  2. Выберите все конфеты, имена name которых начинаются с Плут
SQL симулятор

Логические операторы не поддерживаются симулятором