Что такое SQL и где его используют

Читать в полной версии →

В статье рассказываем, что такое SQL, зачем он нужен и чем отличается от NoSQL, а также кто использует этот язык и сколько зарабатывают специалисты со знанием SQL.

В написании статьи принял участие Андрей Мохов, кандидат технических наук, исследователь в АО «ИнфоТеКС», преподаватель в НИУ «МЭИ» и Александр Леоненко, автор курсов по SQL в Хекслете

Что такое SQL

Для работы привычных нам приложений нужны данные, которые необходимо где-то хранить. Самый удобный способ хранения — это базы данных (БД). Чтобы работать с БД, искать и изменять в них нужные данные, разработчики используют язык SQL.

SQL (Structured Query Language, или язык структурированных запросов) — это язык программирования, который позволяет делать запросы к данным, фильтровать и сортировать информацию с помощью этих запросов и работать со структурой самой базы.

Где используют SQL

SQL используют везде, где нужно хранить информацию: в онлайн-библиотеках, интернет-магазинах, государственных сервисах, банках, чат-ботах, мобильных приложениях и много где еще.

Компании используют SQL для управления данными — пользовательскими профилями, контентом, товарами в интернет-магазинах. Многие организации также используют SQL для управления данными о клиентах, заказах, инвентаре и финансовых операциях. Это помогает им проводить анализ и принимать стратегические решения.

Хекслет тоже хранит данные о своих курсах и пользователях в базах. Вот так, например, выглядит база данных зарегистрированных студентов (все имена вымышлены):

Чтобы разобраться, зачем нужен SQL и как он упрощает жизнь разработчикам, давайте представим работу одного из этих сервисов. Пусть это будет приложение о питании с функцией подсчета калорий, белков, жиров и углеводов и учета приема пищи: по дням недели и времени, а также по размеру порции.

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

SQL придет на помощь тогда, когда мы захотим, к примеру, проанализировать среднюю калорийность завтраков и обедов. Для этого мы просто сделаем запрос к базе данных, и программа предоставит нам всю необходимую информацию.

Если бы мы не использовали SQL, нам пришлось бы самим вычислять среднюю калорийность и создавать для этого дополнительные строки в таблицах. В этом плане SQL значительно экономит время и силы разработчикам.

Особенности SQL

  1. В сравнении с другими языками программирования, SQL понятный и обладает простым синтаксисом — комплексом правил, который объясняет, как писать код. Если у вас достаточный уровень английского, вы прочтете его почти как обычный текст. Или, как минимум, без особого труда догадаетесь, о чем речь.
  2. В императивных языках программирования, таких как Python или JavaScript, мы пишем последовательность действий, алгоритм команд. Но SQL — декларативный язык, и на нем мы прописываем, что хотим получить. То есть обозначаем не путь, а результат. А программа, которая выполняет этот запрос, сама получает и возвращает нужные нам данные, модифицирует их или выполняет другую заданную команду.
  3. Существует два типа баз данных: нереляционный (NoSQL) и реляционный (SQL). В первом варианте базы данных информация хранится без структурированности и четких связей. В SQL все иначе — данные расположены в таблицах по строкам, где каждая ячейка введена по шаблону.

Кто использует SQL и сколько зарабатывают такие специалисты

SQL — основной инструмент в работе с базами данных. Поэтому владение SQL — навык, который необходим во многих сферах: администраторам базы данных или DBA (Database administrator), дата-аналитикам, продуктовым маркетологам, менеджерам по продажам, тестировщикам, программистам и многим другим. То есть всем, кто тоже отчасти опирается в своей работе на данные.

Причина такой популярности простая: данные часто хранятся в базах данных, и самый родной для них язык — это SQL. И если нужно, например, проанализировать динамику продаж, то самостоятельно получить всю необходимую информацию с помощью SQL будет довольно быстро.

При всей своей простоте, в мире пока нет аналога, способного полноценно заменить SQL. Поэтому специалисты, которые им владеют, будут востребованы на рынке труда еще долгие годы.

По информации сайта hh.ru, в августе 2023 года было представлено более 550 активных вакансий для администраторов базы данных. Джуниору DBA компании предлагают от 60 тысяч рублей, мидлу — в диапазоне 80 — 100 тысяч. А сеньор может претендовать на 150 тысяч рублей и выше.

При этом SQL-разработчикам предлагают в среднем от 100 тысяч рублей по России. Для сеньора SQL Developer зарплата будет начинаться уже от 200 тысяч.

Конечно, это средние значения по стране и все зависит от региона работы. Однако даже по этим цифрам видно — специалистам со знанием SQL в России не только предлагают конкурентоспособную заработную плату, но и варианты для развития.

Какие есть операторы в SQL и для чего они нужны

Предположим, что мы начинаем работать с реляционной БД, где вся информация располагается в таблицах по строкам. Первая вещь, которая нам нужна, — определить, как мы будем хранить эти данные. И это наш базовый слой операторов SQL, которые помогают в проектировании баз данных:

CREATE DATABASE — создает базу данных.

CREATE TABLE — создает новую таблицу внутри базы данных.

DROP DATABASE — удаляет базу данных.

DROP TABLE — удаляет таблицу в базе данных.

Есть также USE, который указывает, в какой именно базе данных будет проходить дальнейшая работа.

На этом этапе мы решаем, таблицы с какой информацией нам нужны. Если это персональные данные, то названиями колонок и строк в таблице могут быть: имя и фамилия, номер телефона, возраст. В случае с информацией о товарах — название, цена, тип и прочее. Все зависит от наших запросов.

Теперь, когда мы создали таблички, нужно как-то добавлять туда данные, читать их, удалять и изменять. Это следующая группа операторов SQL:

INSERT — добавляет данные в таблицу. Работает в паре с INTO, который указывает на конкретную таблицу.

DELETE — удаляет данные из таблицы. Работает в союзе с FROM, который конкретизирует таблицу. Например, команда DELETE FROM USERS удалит все строки в таблице USERS.

SELECT — определяет список столбцов: вычисляемых и существующих. Если нужно выбрать все столбцы (их еще называют атрибуты), то пишется SELECT *. А после FROM указывается название таблицы.

UPDATE — обновляет данные. Оператор указывает на саму таблицу, а следом применяет SET, после которого мы вводим новые значения для атрибутов. А чтобы обозначить конкретные строки, необходимо использовать WHERE.

JOIN — объединяет значения нескольких таблиц. Он бывает: внутренний INNER и внешний OUTER. Последний включает в себя правый RIGHT OUTER, левый LEFT OUTER и полный FULL OUTER JOIN.

ORDER BY сортирует результаты запроса. По умолчанию сортировка строк в таблице проводится в порядке возрастания. А чтобы сделать ее по убыванию, нужно добавить DESC.

Еще есть операторы контроля доступа. Представьте ситуацию: вы работаете в большой компании, где только несколько бухгалтеров, администраторов баз данных, могут смотреть информацию и делать запись о зарплатах. Если вам понадобится доступ к этой базе с зарплатами, то администраторы могут дать вам право ее просматривать с помощью операторов доступа GRANT, REVOKE, DENY.

Мы разобрали основные и самые базовые операторы при работе с данными в таблицах. Есть и другие, вспомогательные, которые конкретизируют работу в системе. Подробнее о них мы говорим на треке SQL для разработчиков — пройдите его, чтобы узнать об операторах более подробно.

Что такое СУБД и как они работают

Системы управления базами данных или сокращенно СУБД — это программы, которые позволяют создавать базы данных, администрировать их, а также обеспечивают надежность хранения данных и работу с ними.

Другими словами, СУБД — это посредник между пользователем и базой данных. Он получает SQL-запрос и переводит его в сложные операции, необходимые для выполнения задачи. Именно СУБД осуществляет введенную нами команду удаления, сортировки, сохранения и прочего.

СУБД работает примерно так:

Пользователь отправляет SQL-запрос → Система управления базами данных обрабатывает его → Пользователь получает необходимые данные

Один из примеров использования СУБД — онлайн-магазины. В них СУБД помогает хранить и обрабатывать данные о товарах, клиентах, заказах и другой связанной информации.

Если бы мы были продавцами, и мы захотели бы найти фиолетовые носки с рюшами 43 размера, искать вручную пришлось бы долго. Плюс в реальной жизни нам будет нужно:

А если в таблице произойдет какой-то сбой или не сохранятся изменения? Да, все пришлось бы делать заново.

С системой управления базами данных такие проблемы минимизированы. Система берет управление на себя и выполняет все операции очень эффективно. Благодаря СУБД даже новички-программисты могут создавать приложения для работы с данными.

Система управления базами данных дает много преимуществ:

Какие виды СУБД бывают и чем они различаются

Существует много видов и классификаций СУБД. И каждый из них подходит для разных типов баз данных. Но хорошая новость в том, что базовый уровень SQL везде одинаковый. И если научитесь основам языка, вам будет легче перейти с одной СУБД на другую. Нельзя сказать, что они идентичны, но очень похожи.

Например, БД классифицируют по количеству пользователей, типу хранимых данных, их структурированности или месту расположения. Давайте разберем по порядку.

По количеству пользователей:

По типу языка запросов:

По принципу хранения базы данных:

По видам информации, которую можно хранить в базе данных:

По типу использования базы данных во времени:

По степени структурированности данных:

По типу хранения, запроса и обработки данных в базе:

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

Например, в приложение о питании нет смысла встраивать систему управления базами данных, предназначенную для обработки огромного количества информации. И наоборот — в корпоративной системе необходимо использовать большую транзакционную СУБД.

Легко ли изучить SQL

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

Если вы уже работали с одним из языков программирования, например, С или Java, то, скорее всего, вы привыкли писать алгоритмы, и декларативная модель с ее структурированным видом сначала может показаться непривычной. В SQL же нужно описывать результат, и это может быть необычно. В первую очередь нужно понять, что такое таблицы и какие между ними связи. Если это преодолеть, дальше будет легче.

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

Для старта стоит изучить основы проектирования баз данных. Возвращаясь к частям языка SQL, первое — создание и изменение таблиц. Это значит, что нам нужно разложить свою задачу на составляющие. На этом этапе мы разбираемся, как будем хранить информацию. Это и называется проектированием баз данных: какие таблицы нужны, из каких столбцов они будут состоять и как будут связаны друг с другом.

Второй пункт — практическая работа с данными: запросы, которые выбирают определенные данные, удаляют их, изменяют и так далее. Как говорят из своего опыта специалисты, начавшие путь с самостоятельного изучения SQL, стартовать нужно сразу с практических задач онлайн — учиться правильно ставить команды. Можно попробовать с сайтов sql-ex.ru, pgexercises.com и sql-tutorial.ru.

Только после этого можно приступать к книгам. Например, «Освой самостоятельно SQL за 10 минут» Бена Форта, «Введение в системы баз данных» Криса Дейта или «SQL. Полное руководство» Джеймса Гроффа и Пола Вайнберга.

Но главный минус книг — информация в них обновляется медленнее, чем развиваются технологии баз данных. Поэтому самый простой и эффективный способ разобраться и изучить SQL — пройти специализированный курс от проверенных специалистов. На нем можно не только познакомиться с базовыми операциями, но и изучить тонкости манипуляций.