Примеры простых SQL запросов для начинающих программистов
Помнишь, как недавно мы обсуждали, что такое СУБД и язык SQL? Хочешь узнать, как устроены самые простые SQL-запросы всего за 15 минут? Тогда я расскажу тебе небольшой секрет - язык SQL очень прост в освоении! Знание его открывает перед тобой огромные возможности в работе с базами данных. В отличие от программирования, где существует множество языков и особенностей, SQL имеет единый стандарт. Изучение простых SQL-запросов займет всего пару недель, включая практику. Переходи от слов к делу - начинаем!
Сегодня мы рассмотрим простые примеры SQL-запросов к традиционной реляционной СУБД (почему некоторые системы называются реляционными - объясняется здесь). Этот материал также является частью общего цикла публикаций о СУБД и SQL, внося больше деталей и некоторых особенностей.
Напомню кратко уже изученный материал. Система управления базами данных (СУБД) - это инструмент для работы с данными, а SQL - это способ взаимодействия с ними. Почти каждое современное приложение оперирует информацией. Если язык программирования нужен для создания интерфейса приложения, то СУБД необходима для хранения данных. Существует множество различных СУБД, но все они поддерживают стандарт SQL. Поэтому, освоив этот универсальный язык, вы сможете легко работать с MySQL, Oracle и другими системами.

Нельзя недооценивать важность и всеобъемлющее применение языка SQL. Из моего собственного опыта могу сказать, что он применяется во всех коммерческих проектах, с которыми мне довелось работать. Кроме того, современный мир основан на данных, и для работы с ними практически всегда требуется использовать SQL для запросов.
К слову, технологии SQL в 2023 году исполнится примерно 49 лет с момента своего изобретения. Этот удивительный язык остается актуальным, постепенно совершенствуясь и приспосабливаясь к современному миру. Не дай себя обмануть забавным контентом в TikTok или милыми котиками! Ведь в конечном итоге, все современные платформы хранят свои данные где-то. И в большинстве случаев, эти данные хранятся в традиционных реляционных базах данных, для работы с которыми используется уже почти полувековой SQL.
Что такое язык SQL? 🈯️
SQL - это сокращение от Structured Query Language - то есть "Язык структурированных запросов". Основа языка SQL - "запрос". Что это такое, и зачем оно нужно? Давайте на мгновение вернемся к предыдущим материалам. Программирование, с точки зрения конечного продукта, всегда опирается на два основных элемента. Первый элемент - это приложение, а второй - база данных. Приложение представляет собой интерфейс с кнопками, изображениями, полями для ввода текста и прочим. База данных, напротив, представляет собой набор непонятных файлов без интерфейса, хранящихся в определенной папке. СУБД, в свою очередь, является специальным "звеном" между базой данных (файлами) и приложением (интерфейсом).
Процесс выглядит просто: пользователь нажимает на кнопку в приложении (например, "войти в систему"). Приложение формирует SQL-запрос к базе данных и передает его в СУБД. Затем СУБД анализирует запрос и возвращает данные, например, подтверждение правильности пароля, чтобы пользователь мог войти в систему. Интерфейс приложения отображает эти данные пользователю в удобном и привлекательном виде.

По этой самой причине SQL получил своё название. Все манипуляции с базами данных осуществляются при помощи запросов. Запросы применяются для поиска, добавления, изменения или удаления данных. Собственно, весь "рабочий" функционал SQL сводится к этим четырём видам операций.
Как писать простые SQL-запросы 📬
Перед тем, как мы начнем, убедитесь, что на вашем компьютере установлена система управления базами данных (СУБД). Также проверьте наличие приложения для управления базой данных через графический интерфейс. Для начала экспериментов рекомендуется использовать простую СУБД, например, MySQL. Для создания и отправки запросов рекомендуется использовать стандартный MySQL Workbench.Если ты стремишься к глубокому погружению в SQL, то рекомендуется установить PostgreSQL вместе с pgAdmin. Эта система управления базами данных является более сложной, но в то же время предлагает значительно больший набор функций и возможностей. Можно сказать, что MySQL подходит для региональных проектов, в то время как PostgreSQL используется такими крупными компаниями, как, например, Авито и Госуслуги.
Если ты успешно установил и запустил СУБД и ее графический интерфейс, то настало время для экспериментов! Сначала СУБД попросит тебя создать таблицу с определенным набором столбцов. Ты вправе придумать названия столбцов на свое усмотрение - допустим, это будет таблица "Пользователи" с полями Id, ИмяПользователя, ВозрастПользователя, БиографияПользователя и так далее. Не стоит паниковать заранее - представь, что ты создаешь новый файл в Excel, потому что по сути это похожие процессы. В итоге у тебя должна получиться новая таблица, к которой ты сможешь обращаться с запросами на SQL.

Не забывайте, что всего существует всего 4 основных SQL-запроса (звучит просто, верно?). Это запросы SELECT, INSERT, UPDATE, DELETE. Каждый из этих запросов необходим для выполнения определенной операции, а именно:
Комбинация этих запросов, а также некоторых других специальных команд, формирует синтаксис языка SQL. Важно отметить, что язык SQL подчиняется определенным стандартам и имеет обширные документы, описывающие все его тонкости. Однако в настоящее время нет необходимости углубляться в эту историю - начните с простых запросов, которые мы только что рассмотрели.
Иерархия базы данных 📖
При работе с SQL-запросами важно помнить о том, что каждый запрос предназначен для определенной таблицы с уникальными данными. В базе данных может быть несколько различных таблиц, таких как "пользователи", "журнал событий", "опубликованные записи", "заметки" и другие. Каждая из этих таблиц имеет свои собственные столбцы, индексы и другие настройки. Поэтому при написании SQL запроса важно указывать конкретную таблицу, а не абстрактную "базу данных в целом".
Для примера, если вы хотите получить список всех пользователей (у вас есть таблица, которую вы создали ранее), вам нужно будет отправить запрос типа SELECT именно к этой таблице. При этом этот запрос не повлияет на другие таблицы, находящиеся в той же базе данных.
Можно сравнить это с аналогией папки с документами. Внутри одной папки может находиться несколько файлов Excel, каждый из которых содержит определенную информацию. При работе с одним из файлов остальные остаются нетронутыми и сохраняются в папке без изменений.

Другое сравнение. База данных можно представить как огромную библиотеку с множеством секций, в каждой из которых находится множество книг. Когда вы ищете определенную книгу и хотите прочитать определенные разделы внутри нее, вам нужно обратиться к определенной секции.
Пример создания простой таблицы в MySQL, добавления и поиска данных внутри неё 🐬
Для изучения написания SQL-запросов предлагаю использовать следующий пример. Предположим, у вас есть таблица "жители", в которой содержатся данные о жителях различных городов. Предположим, что в этой таблице есть следующие столбцы: "Имя", "Фамилия", "Пол", "Дата рождения", "Адрес", "Город проживания", "Рост", "Биография". Также предположим, что в этой таблице есть столбец "цвет волос", и вам необходимо найти всех пользователей с определенным цветом волос, родившихся в определенные годы. Суть задачи можно описать следующим образом:
"Требуется найти в таблице имена и фамилии людей с красными волосами, родившихся в период с 1990 по 1994 год, и затем упорядочить их по фамилии в алфавитном порядке"

Для решения данной учебной задачи необходимо начать с создания таблицы. В СУБД таблицы создаются с использованием языка SQL. Несмотря на то, что вы, возможно, уже знакомы с графическим интерфейсом MySQL Workbench или pgAdmin, не дайте им ввести вас в заблуждение - эти программы просто переводят ваши действия в SQL, который затем отправляется на сервер. Графические интерфейсы для работы с базами данных не имеют возможности прямого изменения данных в базе. Они упрощают доступ к данным и преобразуют ваши клики по кнопкам в SQL-запросы. // Важно понимать, что это ключевой концептуальный момент. Некоторые новички в области разработки баз данных ошибочно считают, что GUI - это своего рода магический портал внутрь файловых систем баз данных. На самом деле это не так. GUI просто переводит ваши действия в SQL-запросы.
Для создания таблицы в базе данных используется команда CREATE TABLE (в переводе - "Создать таблицу"). Рассмотрим синтаксис создания таблицы "residents".
CREATE TABLE
Синтаксис данного запроса довольно простой. В общем, запрос требует базу данных создать отдельную таблицу (по сути, "файл"). Внутри этой таблицы, как и в любой уважающей себя таблице, должны быть столбцы. Их необходимо перечислить в запросе. Также желательно указать, какой из столбцов будет уникальным (какой будет ключом для каждой записи). Уникальность этого столбца заключается в том, что его значения всегда должны быть уникальными. Ключи могут быть числовыми или строковыми, но давайте начнем с самого простого числового ключа, который будет увеличиваться на 1 для каждой новой записи: 1, 2, 3... и так далее. Вот как будет выглядеть синтаксис такого запроса:
CREATE TABLE `citzens` (
`id` INT NOT NULL AUTO_INCREMENT,
`first_name` TEXT NULL,
`last_name` TEXT NULL,
`gender` VARCHAR(45) NULL,
`birth_date` DATETIME NULL,
`address` TEXT NULL,
`city_of_living` TEXT NULL,
`height` DOUBLE NULL,
`biography` TEXT NULL,
`hair_color` TEXT NULL,
PRIMARY KEY (`id`));
Мы только что определили основные столбцы таблицы внутри запроса. Каждому столбцу был назначен определенный тип данных: текстовым столбцам был присвоен тип данных TEXT, а числовым - INT или DOUBLE. Для столбца birh_date был использован специальный тип данных DateTime. Я подготовил отдельную статью о том, что такое типы данных и зачем они нужны. Теперь ты можешь без страха вставлять этот запрос в GUI и отправлять его на выполнение. Вот так:

Если все было выполнено правильно, то в конце экрана будет отображено уведомление об успешном завершении запроса. Также появится новая таблица в списке таблиц (если она не появилась, попробуйте щелкнуть правой кнопкой мыши на списке таблиц и выбрать "Обновить все"). Если и это не помогло, перезагрузите графический интерфейс пользователя (GUI).

С этого момента у тебя есть возможность выполнять реальные запросы к новой таблице "citzens". Ты можешь вносить информацию, осуществлять поиск, обновлять или удалять данные. Все это можно делать с помощью SQL запросов, просто воспользуйся текстовым полем в центре экрана.
Далее в процессе решения задачи необходимо заполнить таблицу начальными данными. Давайте попробуем внести информацию о нескольких жителях.
INSERT
Для добавления данных в таблицу используется оператор INSERT. Этот оператор в переводе на русский язык означает "вставить". В нем указывается список столбцов и соответствующие им значения для этих столбцов. Давайте попробуем сформировать такую команду и добавить информацию в недавно созданную таблицу.
INSERT INTO `citzens`
(
`first_name`,
`last_name`,
`gender`,
`birth_date`,
`address`,
`city_of_living`,
`height`,
`biography`,
`hair_color`
)
VALUES
(
'Алексей',
'Петров',
'М',
'1983-11-12 14:15:33',
'Крылатское шоссе дом 3',
'Москва',
187,
'Увлекается моделированием космических кораблей',
'Каштановые'
),
(
'Светлана',
'Хохотунчик',
'Ж',
'1993-06-11 12:15:33',
'проспект Самолётостроителей дом 8, кв.73',
'Москва',
167,
'Переводчик с Китайского',
'Рыжие'
),
(
'Иван',
'Ивановских',
'М',
'1984-06-11 12:15:33',
'Пулковское шоссе д.17, кв.1',
'Москва',
172,
'Занимается профессиональным спортом',
'Коричневые'
),
(
'Евгений',
'Булкоед',
'М',
'1993-12-12 11:22:44',
'Тверская д.8, кв.111',
'Москва',
187,
'Профессиональный ловец улиток',
'Рыжие'
);
Обратите внимание, что в каждом запросе каждому столбцу соответствует значение, которое необходимо добавить. Кроме того, вы можете расширить данные, добавив их через запятую после последних скобок в соответствии с форматом данных из примера.
Пришло время перейти к извлечению информации из таблицы. Давайте создадим простой запрос для выборки данных. Это будет запрос SELECT. Рассмотрим его синтаксис подробнее:
SELECT
Основа запроса на поиск данных - команда SELECT. Она информирует СУБД о том, что нужно найти определенную информацию в определенной таблице. Эта команда также позволяет выбрать, какие именно поля (столбцы) данных отобразить в результате запроса. В данном случае, мы ищем людей, которые соответствуют определенным критериям - и выбираем их имена и фамилии.
Для начала SQL-команды SELECT необходимо использовать ключевое слово, за которым следует перечисление столбцов через запятую, которые требуется выбрать. Важно отметить, что это лишь начало запроса на языке SQL:
SELECT
first_name,
last_name
...
Одним из важных ключевых слов в SQL-запросе на выборку данных является "FROM". Этот термин указывает на определенную таблицу, из которой происходит извлечение информации.
Вот продолжение SQL-запроса. Важно отметить, что это лишь часть запроса. Хотя он уже функционирует, результатом будет получение всех записей из таблицы, в то время как нам необходимо выбрать конкретных людей с определенными характеристиками в зависимости от цвета волос.
SELECT
first_name,
last_name
FROM
citzens
...
Затем необходимо применить ключевое слово WHERE. Это действие не является обязательным, однако в данном контексте оно необходимо. WHERE используется для фильтрации данных и получения только определенной их части. Без этого ключевого слова запрос вернет все данные. В данном примере мы хотим отфильтровать запрос так, чтобы в него попали только люди с рыжими волосами, родившиеся в 2004 году. Начнем с фильтрации по цвету волос:
SELECT
first_name,
last_name
FROM
citzens
WHERE
hair_color = 'Рыжие';
В настоящее время это уже будет функционирующим SQL-кодом с действующим условием фильтрации. Вы можете выполнить его в интерфейсе пользователя и оценить результаты.

Однако, поскольку наш пример предназначен для обучения, давайте также добавим к нему фильтр по возрасту.
Для фильтрации числовых диапазонов можно применять стандартные операторы - больше, меньше, равно. Однако помимо оператора равенства (=), существует ключевое слово BETWEEN - это дополнительный оператор, который следует использовать при условных запросах. Данный оператор предназначен для поиска значений, находящихся в пределах указанных минимального и максимального чисел.
Для нашего примера мы планируем использовать оператор BETWEEN для выборки данных за определенный временной промежуток, например, с 1990 по 1994 год. Вот как будет выглядеть запрос:
SELECT
first_name,
last_name
FROM
citzens
WHERE
birth_date BETWEEN '1990-01-01' AND '1994-12-31';
Наконец, объединим две части запроса в один общий запрос. Теперь мы сможем увидеть людей с определенным цветом волос, которые родились в определенном временном диапазоне. Для этого мы будем использовать ключевое слово AND, которое позволяет объединить несколько условий в операторе WHERE. Наша цель - узкий результат, включающий людей с каштановыми волосами, родившихся с 1990 по 1994 год. Таким образом, наш запрос будет дополнен новыми конструкциями для более точного результата.

Для того чтобы запрос был успешным, необходимо вставить ключевое слово AND между первым и вторым условием. Таким образом, база данных будет искать данные, которые соответствуют обоим условиям одновременно. Пример работы SQL-запроса:
SELECT
first_name,
last_name
FROM
citzens
WHERE
hair_color = 'Рыжие'
AND
birth_date BETWEEN '1990-01-01' AND '1994-12-31';
Организация результатов поиска - сортировка и группировка данных 📦
В рамках SQL запроса можно провести организацию результатов и выполнить некоторые дополнительные действия. Для этого пригодятся функции ORDER BY и GROUP BY. Давайте рассмотрим наши предыдущие SQL запросы, но уже с использованием функций ORDER BY и GROUP BY.
Использование оператора ORDER BY позволяет упорядочить результаты запроса по выбранному полю. В данном примере мы отсортируем данные по фамилии. Ниже приведен SQL-запрос:
SELECT
first_name,
last_name
FROM
citzens
WHERE
hair_color = 'Рыжие'
AND
birth_date BETWEEN '1990-01-01' AND '1994-12-31'
ORDER BY
last_name;
GROUP BY
GROUP BY используется для группировки данных по определенному столбцу. Этот оператор похож на ORDER BY, но отличается способом обработки данных. В отличие от ORDER BY, который сортирует данные, GROUP BY объединяет похожие данные, позволяя группировать и подсчитывать дубликаты в полях. С помощью GROUP BY можно также вычислить результаты группировки. Например, с помощью SQL-запроса можно определить количество людей с определенной фамилией в базе данных.
SELECT
SELECT irst_name,
last_name,
COUNT(Id)
FROM
citzens
GROUP BY
last_name;
ORDER BY против GROUP BY
Для наглядного иллюстрирования различий между операторами ORDER BY и GROUP BY, я временно отойду от примера с Москвой и рассмотрю базовый набор данных. Вот небольшая таблица, содержащая четыре идентификационных номера сотрудников и их имена.

При использовании оператора ORDER BY имена сотрудников в списке будут упорядочены по алфавиту. Результат будет следующим:

При использовании оператора GROUP BY в данном списке имен сотрудников будет произведена группировка имен в определенном порядке, а также подсчет количества людей с разными именами. Для этого необходимо также применить оператор COUNT.

Поведём итоги 🎬
Используя SQL-запросы, пользователи могут извлекать информацию из базы данных, выполняя команды на SQL. С помощью SQL и графических интерфейсов GUI можно выполнять различные операции с таблицами в базе данных:
Для новичка в программировании крайне важно овладеть навыками работы с SQL и понимать принципы работы баз данных. Почти все современные приложения хранят информацию в базах данных - будь то социальные сети или банковские системы. Приступая к изучению программирования, рано или поздно ты столкнешься с вопросами хранения данных. И хорошо, если к этому моменту ты будешь готов благодаря учебным примерам и простым практическим задачам. Удачи в изучении!

🔥 Нравится? Подпишись! Вместе мы победим восстание машин! 🔥

🚀 Кстати, ты можешь оказать мне поддержку и помочь развитию проекта "Войти в IT" на платформе boosty! Там я выкладываю более эксклюзивный и профессиональный контент, иногда даже немного личный. Хочешь увидеть, как я выгляжу в повседневной жизни? Тогда переходи по ссылке: Ссылка 🚀
Кстати, у меня также имеется Telegram-канал, где публикуются посты более легкого и веселого характера. Загляните по ссылке!
Comments