🙏 Спасибо за поддержку проекта. В прошлом месяце мы собрали только $32. Этого хватает на серверы, но не на разработку, поэтому новых уроков и функций в этом месяце не будет. Пожалуйста, поддержите следующий месяц. Поддержать →
SQL код скопирован в буфер обмена

Урок 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-команд и подробнее разберём, как они применяются в реальных задачах.

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

  1. Что такое SQL?
  2. Что такое команды DQL?
  3. Подмножество языка SQL?
  4. Что такое команды DDL?
  5. Что такое команды DML?