Как писать простые запросы с использованием языка структурированных запросов

Если вы хотите увидеть код, вы можете найти его на моем GitHub.

Изучая науку о данных в Metis, одной из вещей, которые нам нужно было изучить, был язык структурированных запросов (SQL). SQL был для меня в новинку, поэтому мне потребовалось некоторое время, чтобы разобраться в нем и понять, как он работает.

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

В этом посте мы рассмотрим:

  1. Базовые запросы.
  2. Фильтрация (предложение where).
  3. Несколько условий.
  4. Сортировка значений.
  5. Уникальные ценности.
  6. Функции агрегирования.
  7. Группа по.

Данные

Для этих примеров я буду использовать образец базы данных Chinook от SQLite Tutorial.

Используя Python и SQLite, мы можем создать среду, похожую на выполнение обычных запросов, используя только SQL.

При просмотре базы данных Chinook имена в верхней части каждой таблицы отображаются на темно-синем фоне (media_types, плейлисты, сотрудники и т. Д.).

В каждой таблице есть столбцы, такие как ArtistId, Name, Title, InvoiceDate и другие. Для доступа к информации в каждой из этих таблиц мы используем SQL.

Базовые запросы

Начнем с простого. Чтобы получить все столбцы и строки из таблицы (давайте использовать таблицу треков), мы используем следующее:

SELECT * 
FROM tracks;

Это вернет 3503 строки данных с девятью столбцами.

Обычно мы не хотели бы видеть все данные в такой таблице и могли бы использовать это для быстрой проверки нескольких строк, чтобы убедиться, что ничего странного не происходит:

SELECT * 
FROM tracks 
LIMIT 10;

Этот запрос делает то же самое, что и предыдущий, но на этот раз он ограничивает результаты первыми 10 строками / результатами.

Фильтрация (предложение "Где")

Мы можем немного углубиться в наши запросы, используя фильтрацию.

Используя ту же таблицу треков, представьте, что мы хотели узнать, какая песня находится в списке 222-й.

Для этого мы использовали бы предложение WHERE:

SELECT name, composer
FROM tracks
WHERE trackid = 222;

Это выведет Vida Boa Фаусто Нило - Армандиньо.

Сделав еще один шаг, мы могли бы использовать ряд операторов в предложении WHERE для поиска строк данных, которые соответствуют тому, что мы хотим:

SELECT * 
FROM tracks
WHERE milliseconds>300000 
  AND bytes<5000000;

В результате будут выведены три песни, попадающие в оба фильтра. С помощью предложения WHERE мы можем найти конкретные данные, которые соответствуют тому, что нам действительно нужно для нашего анализа.

_4 _ / _ 5_ обычно используются в SQL-запросах.

Сортировка значений

Если вы добавите ORDER BY с именем столбца, он вернет информацию из таблицы, упорядоченную по этому столбцу в возрастающем порядке (по умолчанию это возрастание).

SELECT *
FROM tracks
ORDER BY name;

Это возвращает все строки в таблице дорожек, отсортированные по названию песни (начиная с «40» и заканчивая Último Pau-De-Arara).

Чтобы изменить его и получить информацию в порядке убывания:

SELECT *
FROM tracks
ORDER BY name DESC;

Будет выведен тот же список в обратном порядке.

Уникальные ценности

Иногда мы будем работать с базами данных, которые содержат массу повторяющейся информации. Чтобы исправить это, мы используем предложение DISTINCT:

SELECT DISTINCT(composer)
FROM tracks;

Этот запрос удаляет повторяющиеся значения в столбцах композитора и возвращает только композиторов. Это сокращает исходные 3503 строки данных до 853.

Функции SQL для агрегирования

В SQL есть пять важных агрегатных функций:

  • COUNT()
  • SUM()
  • AVG()
  • MIN()
  • MAX()

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

Вот несколько примеров запросов:

SELECT COUNT(*)
FROM tracks
WHERE name LIKE 'a%';

Он переходит в таблицу треков, находит и считает все названия песен, начинающиеся с буквы A. Этот код выводит количество из 199 песен, начинающихся с буквы A.

SELECT MAX(unitprice)
FROM invoice_items;

Это возвращает 1,99, максимальную цену любого товара в таблице invoice_items.

Группа по

Предложение GROUP BY обычно используется в сочетании с агрегатной функцией. Он группирует строки по заданному значению столбца, а затем вычисляет агрегат для каждой группы.

SELECT composer, SUM(milliseconds)
FROM tracks
GROUP BY composer;

Это возвращает общее количество времени (в миллисекундах) для каждого композитора в таблице.

SELECT composer, COUNT(trackid)
FROM tracks
GROUP BY composer;

Этот запрос подсчитывает количество идентификаторов треков для каждого композитора.

Заключение

Надеюсь, это поможет вам начать работу с простыми SQL-запросами.

Скоро у меня будет еще один пост, в котором будут рассмотрены другие функции SQL, такие как JOIN и подзапросы, так что следите за обновлениями!