SQL (Structured Query Language)

Автор статьи
Анна Маврина

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

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

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

Схема

Пользователь или программа обращаются к системе с помощью SQL-запроса, а та в ответ достает из базы и пересылает им данные

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

Зачем нужен SQL

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

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

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

Более того, можно по отдельности запросить сведения о мужчинах и женщинах, чтобы сделать для них разные подборки «подарочных» товаров.

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

Одним запросом можно перезаписать тысячи значений, которые подходят под определенные критерии — скажем, на 20% уменьшить цену у всех товаров дешевле тысячи рублей.

Пример массовой скидки в разделе зоотоваров на маркетплейсе Wildberries

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

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

Так, при регистрации нового пользователя в базе создается новое поле: запись с логином, паролем и другими данными, если они нужны.

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

Схема работы

Чаще всего к СУБД обращаются разные приложения, работающие на сервере сайта

Провести транзакцию. С помощью SQL можно создавать и запускать транзакции — группы команд, которые последовательно следуют друг за другом. Если хотя бы одна из этих команд завершится ошибкой — все остальные тоже не выполнятся. Это бывает нужно для совершения каких-то сложных многоуровневых операций.

 

Классический пример — онлайн-перевод денег с одного счета на другой. Сначала нужно указать счет получателя и сумму, потом подтвердить оплату. Затем деньги спишутся с одного счета и придут на другой. Если хоть какое-то из этих действий не сработает, важно, чтобы отменились и все остальные. Иначе средства могут просто «зависнуть»: списаться со счета и никуда не прийти. Чтобы такого не происходило, и используют транзакции.

Какие есть подвиды SQL

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

  • T-SQL для работы с СУБД Microsoft SQL Server;
  • PL/SQL для СУБД Oracle;
  • MySQL для работы с одноименной системой;
  • PL/pgSQL для PostgreSQL.

Базовый синтаксис у диалектов одинаковый. Но они отличаются друг от друга расширениями, дополнительными возможностями и особенностями написания запросов. Они несовместимы друг с другом: нельзя обращаться к одной и той же СУБД то на T-SQL, то на MySQL.

Обычно при разработке сайта выбирают, с какой СУБД будет работать его база данных. А от выбранной СУБД зависит и диалект SQL. Скажем, в популярной CMS WordPress по умолчанию используется MySQL, но при необходимости можно выбрать и другую систему.

Чем можно заменить SQL

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

Схема реляционной базы данных для чека

Визуально связанные таблицы можно представить примерно так. В них есть множество полей, причем некоторые поля могут принадлежать одновременно нескольким таблицам. Скажем, код продавца есть и в таблице с информацией о чеке, и в таблице со сведениями о продавце. Источник

Кроме реляционных баз данных, существуют нереляционные: они иначе структурируют и хранят информацию. Для работы с ними SQL не нужен. Запросы к ним пишут на языках программирования. А для некоторых нереляционных баз существуют свои языки запросов.

Реляционные базы Нереляционные базы
Представление информации Связанные таблицы с жесткой структурой JSON-документы, пары «ключ-значение» и другие форматы
Управление SQL Языки программирования, собственные языки запросов
Распространение Используются в большинстве программ и сайтов — технология считается фактически стандартом Применяются там, где скорость важнее структурированности — в стартапах, молодых проектах, распределенных системах
Масштабируемость Только вертикальная — увеличение мощностей Вертикальная и горизонтальная — отдельные части системы распределяют по разным серверам
Безопасность Данные сложнее потерять благодаря жесткой структуре Чтобы защитить данные, их дублируют. Есть преимущества при защите от хакерских атак
Главные преимущества Структурированность и возможность делать сложные запросы Гибкость и возможность адаптировать базу под разные виды архитектуры
Для каких данных подходит Детализированные данные со сложной структурой Большие массивы неструктурированной информации

Преимущества и недостатки SQL для бизнеса

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

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

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

Главные мысли

Вы нашли ответ?

1
0