К содержанию

Wiki · Технологии разработки

SQL

SQL (Structured Query Language) – это язык запросов к реляционным базам данных: на нём данные выбирают, добавляют, меняют и удаляют. Его понимают PostgreSQL, MySQL, Microsoft SQL Server, Oracle и большинство других систем управления базами данных (СУБД).

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

От SEQUEL до SQL:2023: история и стандарт

Язык разработали в IBM в 1970-х годах Дональд Чемберлин и Рэймонд Бойс, сначала он назывался SEQUEL. В 1979 году SQL появился в коммерческих продуктах, в 1986 году стал стандартом ANSI, в 1987 году ISO. Последняя редакция стандарта ISO/IEC 9075 вышла в 2023 году. В разговоре язык называют и «эс-кью-эль», и «сиквел».

Стандарт один, а реализаций много, и ни одна не повторяет его целиком. В документации PostgreSQL сказано, что на момент её написания ни одна СУБД не заявляла полного соответствия базовой части SQL:2023.

Запрос на SQL: пример и основные команды

Условный пример: сколько заявок пришло из каждого источника с 1 сентября.

SELECT source, COUNT(*) AS leads
FROM requests
WHERE created_at >= '2026-09-01'
GROUP BY source
ORDER BY leads DESC;

Запрос читается почти как фраза: выбери источник и число заявок из таблицы заявок начиная с 1 сентября, сгруппируй по источнику и отсортируй по убыванию. Таблица и поля условные. В ответ база вернёт таблицу из двух столбцов: источник и число заявок.

КомандаЧто делаетПример задачи
SELECTВыбирает данныеСписок заказов за месяц
INSERTДобавляет строкиНовая заявка с сайта
UPDATEМеняет данныеНовая цена товара
DELETEУдаляет строкиУбрать тестовые заказы
JOINСоединяет таблицы в одном запросеЗаявки вместе с именами менеджеров
Четыре шага выполнения SQL-запроса: текст запроса, разбор и проверка прав в СУБД, поиск по таблицам и индексам, результат
Как выполняется SQL-запрос

SQL, СУБД и SQL Server: что как называется

На SQL пишут запросы, а выполняет их СУБД, программа, которая хранит данные. Microsoft SQL Server, он же MS SQL, назван по языку, но это конкретная СУБД от Microsoft. Основа запросов везде общая, а диалекты разные: в Microsoft SQL Server это T-SQL, в Oracle PL/SQL. Функции для дат, ограничения выборки и типы данных отличаются, поэтому при переезде с одной СУБД на другую запросы приходится проверять и переписывать.

СУБДГде встречается
MySQLСайты на CMS, в том числе на 1С-Битрикс
PostgreSQLВеб-сервисы, 1С, аналитика
Microsoft SQL ServerКорпоративные системы, 1С
ClickHouseАналитика больших объёмов данных

Какая СУБД у вашего сайта, проще всего спросить подрядчика. Если доступ к файлам есть, смотрите настройки подключения к базе: у 1С-Битрикс они лежат в файле /bitrix/.settings.php.

Есть и нереляционные базы (NoSQL), например хранилища «ключ-значение». У них свои способы запросов, и SQL там может не работать.

Где бизнес встречается с SQL

  • Сайт. CMS хранит страницы, товары и заказы в базе. Сам ebaev.ru работает на 1С-Битрикс с MySQL.
  • Учёт. 1С:Предприятие работает с Microsoft SQL Server, PostgreSQL, Postgres Pro, IBM DB2 и Oracle Database, а язык запросов 1С основан на SQL с расширениями для учётных задач.
  • Отчёты. В Yandex DataLens есть QL-чарты: график строится прямо по SQL-запросу к базе.
  • Сквозная аналитика. Расходы на рекламу, заявки из CRM и продажи сводят в одну базу, а запросами считают, сколько стоил клиент из каждого канала.

Почему сайт тормозит из-за базы и как пустить в неё аналитика

Разработчики не всегда пишут SQL руками. Фреймворки формируют запросы сами через ORM, CMS тоже собирает их за вас. Но когда что-то тормозит или считает неправильно, разбираются всё равно на уровне SQL: смотрят, какой запрос ушёл в базу и сколько он выполнялся.

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

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

Чек-лист безопасного доступа аналитика к базе данных: только чтение, копия базы, отдельная учётная запись, нужные таблицы, разрешённые адреса
Как дать аналитику доступ к базе

Чем рискует боевая база: права, отчёты, инъекции и копии

  • Давать доступ к боевой базе с правами на запись. Один UPDATE без условия WHERE меняет все строки таблицы.
  • Строить тяжёлые отчёты по боевой базе в рабочее время. Сайт начинает тормозить у покупателей.
  • Склеивать запрос из текста, который пришёл из формы. Так появляются SQL-инъекции, данные в запрос передают параметрами.
  • Не проверять резервные копии базы. Копия, из которой ни разу не восстанавливались, может не сработать в нужный момент.

Ускоряем медленные запросы и настраиваем базу при доработке сайта и технической поддержке. Подключаем источники данных и собираем отчёты в услуге сквозной аналитики.

СУБД, диалекты, ошибки и SQL для маркетолога

SQL и MySQL: что из них язык, а что программа?

Язык здесь SQL, на нём пишут запросы. MySQL одна из СУБД: программа, которая хранит данные и выполняет эти запросы. Тот же язык понимают PostgreSQL, Microsoft SQL Server и Oracle, только у каждой системы свои особенности синтаксиса.

Какую СУБД выбрать для нового проекта?

Ту, с которой работают ваша платформа и команда. Сайт на 1С-Битрикс обычно живёт на MySQL, веб-сервисы и аналитика часто на PostgreSQL, корпоративные системы и 1С нередко на Microsoft SQL Server, а большие объёмы для отчётов складывают в ClickHouse. Язык запросов у всех общий, отличаются диалекты.

Зачем нужна SQL Server Management Studio?

Это бесплатная программа Microsoft для работы с SQL Server: в ней пишут и запускают запросы, смотрят таблицы, настраивают права и резервные копии. Ставят её на компьютер администратора или разработчика, на сервере базы она не обязательна.

Как создать таблицу в SQL и поменять её структуру?

Таблицу создаёт команда CREATE TABLE с перечнем столбцов и их типов, структуру меняет ALTER TABLE, удаляет DROP TABLE. В проектах на фреймворках их обычно не пишут руками: команды генерируют миграции, и изменения одинаково применяются на каждом сервере.

Почему при переезде с MS SQL на PostgreSQL запросы приходится переписывать?

Основа у них общая, а диалекты разные. Например, первые 10 строк в Microsoft SQL Server выбирают через SELECT TOP 10, а в PostgreSQL и MySQL через LIMIT 10 в конце запроса. Отличаются и функции для дат, и типы данных, поэтому каждый запрос при переезде проверяют на копии базы.

Какие права дать аналитику в базе компании?

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

Что значит ошибка SQL на странице сайта?

СУБД не смогла выполнить запрос: после обновления пропала таблица или поле, сервер базы недоступен или запрос собран с ошибкой. Текст такой ошибки посетителям показывать не стоит, по нему видно устройство базы. Передайте подрядчику адрес страницы и время, причину он найдёт в журнале ошибок.

Сколько SQL нужно знать маркетологу?

Хватит SELECT с условием WHERE, группировки GROUP BY и JOIN: с ними уже можно самому посчитать заявки по источникам за месяц.

Стандарт SQL, история IBM и документация СУБД

  • IBM: история реляционных баз данных и языка SQL
  • ISO/IEC 9075-1:2023 Database languages SQL
  • Документация PostgreSQL: соответствие стандарту SQL
  • 1С:Предприятие 8: работа с различными СУБД
  • ИТС 1С: методическая поддержка, язык запросов
  • Документация Yandex DataLens: QL-чарты

См. также: CMS, Скорость сайта, Технический аудит сайта, SQL-инъекция.

Остались вопросы по теме «SQL»?

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

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.