Как писать простые запросы с использованием языка структурированных запросов
Если вы хотите увидеть код, вы можете найти его на моем GitHub.
Изучая науку о данных в Metis, одной из вещей, которые нам нужно было изучить, был язык структурированных запросов (SQL). SQL был для меня в новинку, поэтому мне потребовалось некоторое время, чтобы разобраться в нем и понять, как он работает.
Я хотел написать блог, содержащий все основы SQL, чтобы я мог ссылаться на него, продолжая изучать науку о данных. Надеюсь, это тоже поможет вам.
В этом посте мы рассмотрим:
- Базовые запросы.
- Фильтрация (предложение where).
- Несколько условий.
- Сортировка значений.
- Уникальные ценности.
- Функции агрегирования.
- Группа по.
Данные
Для этих примеров я буду использовать образец базы данных 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
и подзапросы, так что следите за обновлениями!