В этом модуле вы познакомитесь со структурированным языком разметки 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, остальные таблицы — словари (справочники).

Seasons