Главная | Все статьи | Код

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

Время чтения статьи ~14 минут 14
Что такое SQL и где его используют главное изображение

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

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

Что такое SQL

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

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

Профессия «Аналитик данных»
  • Изучите востребованную в каждой компании профессию и помогайте бизнесам расти и развиваться
  • Научитесь собирать, обрабатывать, изучать и интерпретировать данные с помощью SQL и Google Sheets
  • Освойте когортный анализ и визуализацию данных с помощью Superset и библиотек Python
Попробовать бесплатно

Где используют 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 везде одинаковый. И если научитесь основам языка, вам будет легче перейти с одной СУБД на другую. Нельзя сказать, что они идентичны, но очень похожи.

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

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

  • Однопользовательская, в которой одновременно может работать только один специалист
  • Многопользовательская — в ней одновременно работает большое количество пользователей.

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

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

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

  • Централизованная (локальная), где все данные расположены на одном сервере
  • Распределенная, в которой данные хранятся на разных серверах, в том числе и облачном (Yandex Object Storage и прочие).

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

  • Специализированные — содержат данные по конкретной теме
  • Универсальные — хранят данные из разных областей.

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

  • Оперативная (транзакционная, производственная) — для повседневных операций
  • Аналитическая — для хранения и расширенного анализа данных, к примеру, бизнес показателей.

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

  • Неструктурированные хранятся в необработанном виде и формате
  • Полуструктурированные обработаны лишь отчасти
  • Структурированные — отформатированный вариант неструктурированных данных.

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

  • Встраиваемая — ее внедряют в приложение и используют для управления БД внутри него
  • Клиент-серверная — это когда база данных и СУБД хранятся на едином сервере, к которому подают запросы разные пользователи (например, интернет-магазин, где покупатели подбирают товары по фильтрам)
  • Файл-серверная — вариант, когда БД хранится на одном сервере, а СУБД установлена на устройствах, с которых пользователи отправляют запросы к базе данных (например, CRM на корпоративных сервисах).

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

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

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

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

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

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

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

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

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

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

Профессия «Аналитик данных»
  • Изучите востребованную в каждой компании профессию и помогайте бизнесам расти и развиваться
  • Научитесь собирать, обрабатывать, изучать и интерпретировать данные с помощью SQL и Google Sheets
  • Освойте когортный анализ и визуализацию данных с помощью Superset и библиотек Python
Попробовать бесплатно

Аватар пользователя Анна Королёва
Анна Королёва 12 сентября 2023
14
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 28 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 28 ноября