В этом модуле вы познакомитесь со структурированным языком разметки SQL, базами данных и базовыми операторами SQL, которые позволят фильтровать и доставать из баз данных необходимую информацию.
Базовый синтаксис SQL
SQL также называют Sequel — это аббревиатура от Structured Query Language, структурированный язык запросов, основной язык запросов к базам данных. Единственный способ получить информацию из базы данных — написать SQL-запрос. SQL позволяет делать примерно то же самое, что и Excel: создавать, удалять, обновлять, соединять таблички, агрегировать данные, писать запросы со сложными условиями.
Таблица в SQL — это примерно то же самое, что и таблица в Excel: набор строк и колонок. Однако есть и важные различия:
- колонка должна иметь название
- вы можете обращаться к колонкам по названию, но не можете обращаться к ним по их положению в таблице
- в одной колонке всегда будет один тип данных.
- в таблице SQL не может быть пустых значений отсутствие значения — тоже значение, это null
- среди тех, кто использует SQL не говорят «колонки» и «строки» — обычно говорят «поля», «кортежи» и первичные ключи. Под полем понимается столбец, под кортежем — строка, а первичный ключ — это уникальное значение в таблице. Например, ID — это уникальный первичный ключ, потому он не повторяется, то есть вы не можете вставить в столбик два одинаковых ID.
В SQL есть порядок запросов, то есть вы не можете писать команды в произвольном порядке. Любой запрос, который требует данные, должен включать себя хотя бы два оператора — select и from: «верни мне данные из какой-то таблицы». В SQL обычно конец запроса – это точка с запятой. Если вы напишете два запроса, вы можете разделить их точкой с запятой.
Операторы select, from, limit
Невозможно получить данные, не написав слово select — это то, с чего начинается любой запрос на получение данных. После select можно использовать знак звездочки — это означает «вернуть все доступные колонки». Если вы хотите получить данные из конкретной таблицы, то необходимо использовать оператор from.
В select можно создавать колонки на ходу: для этого надо через запятую указать новый столбец и передать ему какое-то значение. Также прямо из оператора select можно задать ему имя: написать s и название колонки.
Примеры
select * from <table> — так вы получите все значения из какой-то конкретной таблицы <table>.
select <col> — вернуть конкретную колонку.
select <col> from <table> limit 5 — вернуть первые 5 значений колонки <col>.
Оператор where
where — это оператор фильтрации и он не является обязательным. Последовательность: сначала идет select, потом from, название таблицы и после этого where. В условии where вы можете писать абсолютно то же самое, что в Excel.
and, or, in, not — логические операторы
=, !=, <> — используются для сравнения значений
Пример:
select * from <table> where <col> > 0 — верни мне все значения из таблицы <table>, где значение колонки <col> больше 0.
Оператор group by
group by переводится как «сгруппировать». Когда мы используем group by, нам необходимо задействовать агрегирующую функцию. Агрегирующая функция — это когда мы выбираем срез, по которому хотим агрегировать что-либо. Например, хотим получить сумму выручки по годам.
Агрегирующие функции
- sum — найти сумму;
- count — количество строк;
- average – среднее по какому-то количественному признаку;
- distinct — уникальные значения (обычно их используют вместе с count);
- max, min — минимальное и максимальное значения.
Как попрактиковаться
Чтобы повторять операции, которые выполняет преподаватель, необходимо установить IDE для работы с БД (по ссылке: https://dbeaver.io) и подключиться к учебной базе данных.
Для этого откройте в меню IDE: Базы данных → Новое соединение → PostgreSQL. Если в процессе вам предложат установить драйвер, соглашайтесь.
Введите следующие данные:
- Хост — rc1b-cgstuyxqibsalbga.mdb.yandexcloud.net
- Порт — 6432
- База данных — productsense
- Пользователь — user
- Пароль — analytics
Нажмике OK.
Перед вами снова данные по недвижимости — только уже не в Google-таблице и поля называются по-английски. Например, вместо «тип дома (ID)», используется house_type_id. Все нужные вам таблички имеют префикс moscow_aparments. Вы можете использовать следующие таблицы:
- moscow_apartments
- moscow_apartments_districts
- moscow_apartments_house_type
- moscow_apartments_marketplace
Главная табличка — moscow_apartments, остальные таблицы — словари (справочники).