SQL код скопирован в буфер обмена
EN PT FR

Урок 1.6 · Время чтения: ~8 мин

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

Что такое SQL: обзор языка и базовой структуры запросов

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

SQL важен не только для разработчиков. Он нужен аналитикам, инженерам данных и всем, кто извлекает, проверяет и преобразует данные в рабочих задачах.

Схема, показывающая SQL как язык запросов для чтения и изменения данных в реляционной базе данных


Что такое SQL и зачем он нужен?

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

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

На практике SQL решает три основные задачи:

  • получать нужные данные из таблиц;
  • изменять данные и структуру базы;
  • управлять доступом и транзакциями.

Ключевые особенности SQL

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

Подмножества SQL

SQL разделен на несколько подмножеств, каждое из которых служит определенной цели:

  • Язык запросов данных (DQL): Используется для запроса данных из баз данных. Основная команда — SELECT.
  • Язык определения данных (DDL): Используется для определения и управления структурами баз данных. Команды включают CREATE, ALTER и DROP.
  • Язык манипулирования данными (DML): Используется для манипулирования данными в базе данных. Команды включают INSERT, UPDATE и DELETE.
  • Язык управления данными (DCL): Используется для контроля доступа к данным в базе данных. Команды включают GRANT и REVOKE.
  • Язык управления транзакциями (TCL): Используется для управления транзакциями в базе данных. Команды включают COMMIT, ROLLBACK и SAVEPOINT.

Основные объекты в SQL

SQL оперирует различными объектами в базе данных, включая:

  • Таблицы: Основная структура для хранения данных в реляционной базе данных. Таблицы состоят из строк и столбцов, где каждая строка представляет запись, а каждый столбец представляет атрибут этой записи.
  • Представления: Виртуальные таблицы, которые предоставляют способ представления данных из одной или нескольких таблиц в определенном формате. Представления могут упростить сложные запросы и повысить безопасность, ограничивая доступ к определенным данным.
  • Индексы: Структуры, которые улучшают скорость операций извлечения данных в таблице базы данных. Индексы создаются на одном или нескольких столбцах таблицы для повышения производительности запросов.
  • Хранимые процедуры: Предопределенный код SQL, который можно выполнить как единое целое. Хранимые процедуры могут инкапсулировать сложную логику и повысить производительность за счет уменьшения сетевого трафика.
  • Триггеры: Специальные типы хранимых процедур, которые автоматически выполняются в ответ на определенные события в таблице, такие как операции INSERT, UPDATE или DELETE. Триггеры могут обеспечивать соблюдение бизнес-правил и поддерживать целостность данных.
  • Схемы: Логические контейнеры для объектов базы данных, таких как таблицы, представления и индексы. Схемы помогают организовывать и управлять объектами базы данных, предоставляя способ группировать связанные объекты вместе.
  • Ограничения: Правила, применяемые к столбцам таблицы для обеспечения целостности данных. Общие ограничения включают PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL и CHECK.
  • Транзакции: Последовательность одной или нескольких операций SQL, которые рассматриваются как единое целое. Транзакции обеспечивают целостность и согласованность данных, позволяя выполнять фиксацию или откат нескольких операций как группы.
  • Типы данных: Определяют тип данных, которые могут храниться в столбце, такие как INTEGER, VARCHAR, DATE и BOOLEAN. Типы данных гарантируют, что данные, хранящиеся в таблице, являются согласованными и действительными.

Понимание этих объектов важно, потому что SQL-запросы всегда обращаются именно к ним.


Базовые соглашения SQL

Единицей SQL является запрос. Запрос — это обращение к СУБД на извлечение или изменение данных.

Основная структура SQL-запроса состоит из следующих компонентов:

  • Операторы: Зарезервированные слова, которые имеют определенное значение в SQL. Примеры включают SELECT, FROM, WHERE и JOIN.
  • Предложения: Компоненты оператора SQL, которые указывают действие, которое необходимо выполнить. Общие предложения включают SELECT, FROM, WHERE, GROUP BY и ORDER BY.
  • Выражения: Комбинации значений, операторов и функций, которые вычисляются в одно значение. Выражения можно использовать в различных частях оператора SQL, таких как список SELECT или предложение WHERE.
  • Идентификаторы: Имена, используемые для ссылки на объекты базы данных, такие как таблицы, столбцы и представления. Идентификаторы могут быть простыми (например, table_name) или квалифицированными (например, schema_name.table_name).
  • Комментарии: Неисполняемый текст в коде SQL, который содержит пояснения или примечания. Комментарии могут быть однострочными (с использованием --) или многострочными (с использованием / ... /).

Первый SQL-запрос

Базовый шаблон запроса обычно включает SELECT, FROM и при необходимости WHERE:

SELECT column1,
       column2
FROM table_name
WHERE condition;

Результат: запрос вернет только те строки из table_name, которые удовлетворяют условию condition, и покажет столбцы column1 и column2.

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


Ключевые выводы этого урока:

  • SQL — основной язык работы с реляционными базами данных.
  • SQL декларативен: вы описываете результат, а не алгоритм выполнения.
  • У SQL есть подмножества: DQL, DDL, DML, DCL и TCL.
  • Запросы строятся из операторов, предложений, выражений и идентификаторов.
  • Каркас простого запроса: SELECT ... FROM ... WHERE ....

Часто задаваемые вопросы

SQL — это язык программирования или язык запросов?

SQL обычно называют языком запросов. Он не универсален как языки общего назначения, но является стандартом для работы с реляционными данными.

Зачем знать подмножества SQL?

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

Можно ли писать SQL одинаково во всех СУБД?

Базовые конструкции очень похожи, но в деталях синтаксис и функции могут отличаться между MariaDB, PostgreSQL, SQL Server и другими системами.

Вопросы для собеседования

Как кратко объяснить, что такое SQL?

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

Чем отличается DDL от DML?

DDL описывает и изменяет структуру базы данных (таблицы, индексы, схемы), а DML работает с содержимым таблиц (вставка, обновление, удаление строк).

Из каких частей состоит базовый SQL-запрос?

Обычно запрос включает SELECT (что выбрать), FROM (из какой таблицы) и WHERE (какие строки отфильтровать).

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