Что такое SQL и почему без него нельзя

Что такое SQL и почему без него нельзя

С чего начать изучение языка запросов.

В 1970-х американская корпорация IBM создала экспериментальную систему управления базами данных (СУБД). Чтобы работать с ней, четверо программистов, Рэй Бойс, Дональд Чэмбэрлин, Пэт Селинджер и Рэймонд Лори, позже изобрели структурированный английский язык запросов — SEQUEL, который теперь называют просто SQL (structured query language). Без SQL и сейчас не обойтись аналитикам, архитекторам баз данных и бэкендерам. 

Вместе с Оксаной Носенко, Senior Product Analyst в Jooble и преподавательницей курса «SQL для аналитики», рассказываем, почему этот язык не устарел и с чего начать его изучение.

Что такое SQL
 

SQL (structured query language)— это язык структурированных запросов в таблицы баз данных, который обеспечивает взаимодействие с СУБД по всему миру. SQL ищет информацию даже в big data, а также помогает извлекать и обновлять части баз данных. 

Как объясняет Оксана, аналитикам, администраторам баз данных, дата-инженерам и QA необходимо знать SQL с разных сторон и на разных уровнях. 

SQL применяется в ритейле, банках, телекоме и других сферах. 

SELECT price, name FROM purchases WHERE buyer="Olia" ORDER BY price  или «дай мне все товары, которые покупала Оля» — пример SQL-запроса, который может быть использован в ритейле. При условии, что магазин собирает информацию о том, что покупает Olia.

Кому понадобится SQL
 

Без SQL не смогут полноценно работать, к примеру, те, кто занимается бэкендом. То есть программисты, которые работают с Java, Python, JavaScript и PHP. Тестировщики, администраторы, разработчики баз данных, аналитики — те, кто также применяет SQL. Одни — для поддержания процессов среды, другие — чтобы обеспечивать функциональность и обновления приложений, третьи — для визуализации данных. 

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

С чего начать изучение SQL
 

Освоить язык смогут и те, кто раньше не был связан с IT и аналитикой. 

Оксана: «Прежде всего, необходимо понять, что такое базы данных (БД) и для чего они нужны, а также разобраться в основах работы с большими массивами данных. Следующий шаг — понять различия диалектов SQL и узнать, как работает система управления базами данных (СУБД)».  

Если у вас уже есть базовые знания, изучите техническую документацию системы, с которой придется работать (MySQL, MS Server, BigQuery).

Оксана: «Первые сложности начинаются при знакомстве с синтаксисом. Также могут возникнуть проблемы с установками систем, подключением к локальным базам и логикой операторов. На завершающих этапах изучения SQL появляются трудности с оконными функциями (windows functions), и справиться с ними можно только благодаря практике».  

Часто начинающие специалисты ошибаются, работая с join. 

Оксана: «Поначалу очень тяжело представить, как устроено объединение многих таблиц в базах. Поэтому студенты ошибаются в расчете метрик, когда появляется дублирование данных из-за соединения нескольких таблиц в одном запросе по ключам, которые не являются уникальными более чем в одной таблице. 

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

Как избежать ошибок
 

Начинающим разработчикам и аналитикам необходимо следить за уникальностью ключей, соединяющих таблицы. 

Оксана: «Если вы не уверены, что дублирование отсутствует, — лучше выносить разные таблицы и их агрегации по ключу в подзапросы, или CTE — это поможет избежать дублирования». 

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

Оксана: «Например, если мы видим в on db_Users.id = Logs.user_id — соединение выглядит логично и ссылается, скорее всего, на один идентификатор. Но, если мы встретили в коде db_Users.id = db_Actions.id, — стоит задуматься, ведь идентификатор в двух таблицах вряд ли будет выступать без дополнительного префикса хотя бы в одной из них».  

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

Оксана: «Исходите из этого при выборе первой таблицы. Далее заполняйте данные с помощью left join. Это самая простая схема, которая минимизирует количество ошибок с потерей данных. Не используйте left/right в одном запросе без необходимости».

Фундамент SQL
 

Как и другие языки, SQL имеет основу, которой придется пользоваться постоянно. Это, к примеру, создание таблицы, ввод данных, команды select и where. 

Все начинается с CREATE TABLE — команды создания таблицы SQL. Как параметры эта команда принимает все колонки, которые необходимо внести, а также их типы данных. 

Разберем на примере создания таблицы. Скажем, она будет называться My Ex-Boyfriends и иметь три колонки:

id — «порядковый номер» бывшего парня (целочисленный тип, или int);

name — имя бывшего (строка, или varchar (10) (10 символов — максимальная длина строки);

days — число дней, проведенных вместе (целочисленный тип, или int). 

Код будет выглядеть так: 

CREATE TABLE my_ex_boyfriends (id int, name varchar (10), days int).

Ещё статьи
Как системы работают с высокими нагрузками.
Зачем нужны библиотеки для векторизации.