Что такое 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).