PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    SQL запросы: примеры для начинающих разработчиков

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

    Аватар автора SQL запросы: примеры для начинающих разработчиков

    Антон Ларичев

    Иконка календаря20 июля 2026
    SQLбазы данныхMySQLPostgreSQLначинающимjuniorИконка уровня junior
    Картинка поста SQL запросы: примеры для начинающих разработчиков

    Введение

    SQL (Structured Query Language) — язык запросов для работы с реляционными базами данных. Он используется в MySQL, PostgreSQL, SQLite и других СУБД. Если вы только начинаете путь разработчика, понимание базовых SQL-запросов откроет вам доступ к работе с данными в большинстве проектов.

    В этой статье мы разберём основные типы SQL-запросов с примерами: SELECT, INSERT, UPDATE, DELETE и JOIN. Для каждого запроса объясним синтаксис и покажем реальные сценарии применения.

    Предположим, что у нас есть таблица users:

    -- Создаём таблицу пользователей
    CREATE TABLE users (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(150) UNIQUE,
        age INT,
        city VARCHAR(100)
    );
    

    SELECT: выборка данных

    SELECT — самый частый запрос в SQL. Он извлекает данные из таблицы.

    Выбрать все колонки:

    -- Получаем всех пользователей
    SELECT * FROM users;
    

    Выбрать конкретные колонки:

    -- Нас интересуют только имя и город
    SELECT name, city FROM users;
    

    Ограничить количество записей:

    -- Берём первые 10 пользователей
    SELECT name, email FROM users LIMIT 10;
    

    Сортировка результатов:

    -- Сортируем по возрасту от меньшего к большему
    SELECT name, age FROM users ORDER BY age ASC;
    
    -- Сортируем по имени в обратном порядке
    SELECT name, age FROM users ORDER BY name DESC;
    

    WHERE: фильтрация записей

    Оператор WHERE фильтрует строки по условию.

    -- Находим пользователей из Москвы
    SELECT name, email FROM users WHERE city = 'Москва';
    
    -- Пользователи старше 25 лет
    SELECT name, age FROM users WHERE age > 25;
    
    -- Несколько условий: И
    SELECT name FROM users WHERE city = 'Москва' AND age >= 18;
    
    -- Несколько условий: ИЛИ
    SELECT name FROM users WHERE city = 'Москва' OR city = 'Санкт-Петербург';
    

    Поиск по шаблону с LIKE:

    -- Имена, начинающиеся на 'А'
    SELECT name FROM users WHERE name LIKE 'А%';
    
    -- Email на домене gmail
    SELECT name, email FROM users WHERE email LIKE '%@gmail.com';
    

    Проверка на NULL:

    -- Пользователи без указанного города
    SELECT name FROM users WHERE city IS NULL;
    

    INSERT: добавление данных

    INSERT INTO добавляет новые строки в таблицу.

    -- Добавляем одного пользователя
    INSERT INTO users (name, email, age, city)
    VALUES ('Алексей Смирнов', 'alex@example.com', 28, 'Москва');
    
    -- Добавляем сразу нескольких пользователей
    INSERT INTO users (name, email, age, city)
    VALUES 
        ('Мария Иванова', 'maria@example.com', 24, 'Казань'),
        ('Дмитрий Козлов', 'dmitry@example.com', 31, 'Новосибирск'),
        ('Анна Петрова', 'anna@example.com', 22, 'Санкт-Петербург');
    

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

    UPDATE: обновление данных

    UPDATE изменяет существующие записи в таблице.

    -- Меняем город для конкретного пользователя
    UPDATE users SET city = 'Екатеринбург' WHERE id = 1;
    
    -- Обновляем несколько полей сразу
    UPDATE users 
    SET city = 'Москва', age = 29 
    WHERE email = 'alex@example.com';
    

    Всегда используйте WHERE в UPDATE. Без него изменятся все строки в таблице — это одна из самых частых ошибок начинающих.

    DELETE: удаление данных

    DELETE удаляет строки из таблицы.

    -- Удаляем пользователя по id
    DELETE FROM users WHERE id = 5;
    
    -- Удаляем всех пользователей из определённого города
    DELETE FROM users WHERE city = 'Казань';
    

    Как и с UPDATE, оператор WHERE здесь обязателен. DELETE FROM users без условия удалит все данные из таблицы.

    JOIN: объединение таблиц

    JOIN позволяет объединять данные из нескольких таблиц. Предположим, у нас есть таблица orders:

    -- Таблица заказов
    CREATE TABLE orders (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_id INT,
        product VARCHAR(200),
        amount DECIMAL(10, 2)
    );
    

    INNER JOIN возвращает строки, для которых есть совпадение в обеих таблицах:

    -- Получаем имя пользователя и его заказы
    SELECT users.name, orders.product, orders.amount
    FROM users
    INNER JOIN orders ON users.id = orders.user_id;
    

    LEFT JOIN возвращает все строки из левой таблицы, даже если совпадений нет:

    -- Все пользователи и их заказы (если заказов нет — NULL)
    SELECT users.name, orders.product
    FROM users
    LEFT JOIN orders ON users.id = orders.user_id;
    

    Частые ошибки

    1. UPDATE и DELETE без WHERE

    -- Опасно: обновит всех пользователей без исключения
    UPDATE users SET city = 'Москва';
    
    -- Правильно: только нужная запись
    UPDATE users SET city = 'Москва' WHERE id = 42;
    

    2. Использование SELECT * в продакшене

    SELECT * удобен при отладке, но в реальных запросах лучше явно указывать нужные колонки. Это снижает объём передаваемых данных и делает код понятнее.

    3. Отсутствие индексов на колонках в WHERE

    Если вы часто фильтруете по email или city, добавьте индекс — иначе база просматривает каждую строку:

    -- Ускоряем поиск по email
    CREATE INDEX idx_users_email ON users(email);
    

    4. Вставка пользовательского ввода напрямую в запрос

    Никогда не подставляйте пользовательские данные прямо в SQL-строку — это открывает уязвимость SQL-инъекции. Используйте параметризованные запросы в своём языке программирования.

    Заключение

    Мы разобрали основные SQL-запросы: SELECT, WHERE, INSERT, UPDATE, DELETE и JOIN. Эти инструменты покрывают большую часть повседневных задач при работе с базами данных.

    Следующий шаг — изучить агрегатные функции (COUNT, SUM, AVG) и оператор GROUP BY. Они позволяют делать аналитические выборки: считать количество заказов на пользователя, находить средний возраст по городу и так далее. Практикуйтесь на реальных данных: создайте локальную базу в PostgreSQL или MySQL и реализуйте сценарии из этой статьи.

    Иконка глаза39

    Комментарии

    0

    Постройте личный план изучения Nuxt - fullstack Vue фреймворк до уровня Middle — бесплатно!

    Nuxt - fullstack Vue фреймворк — часть карты развития Frontend

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    Основы разработки

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга5.0
    бесплатно
    Подробнее
    изображение курса

    Angular

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.5
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Feature-Sliced Design

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.5
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста Индексы в PostgreSQL: типы, применение и подводные камни
    Иконка аватараАнтон
    Иконка календаря05 июля 2026
    PostgreSQLбазы данныхиндексы+ 3middleИконка уровня middle

    Индексы в PostgreSQL: типы, применение и подводные камни

    Разбираем все типы индексов PostgreSQL: B-Tree, Hash, GIN, GiST, BRIN. Когда и какой индекс выбрать, чтобы ускорить запросы и не замедлить запись.

    Иконка чипа0
    Иконка глаза254
    Иконка комментариев0
    Картинка поста Git для начинающих: основные команды и первые шаги
    Иконка аватараАнтон
    Иконка календаря16 июля 2026
    gitсистема контроля версийначинающим+ 2juniorИконка уровня junior

    Git для начинающих: основные команды и первые шаги

    Разбираем основные команды Git: инициализация репозитория, коммиты, ветки и работа с удалённым сервером — всё с практическими примерами.

    Иконка чипа0
    Иконка глаза121
    Иконка комментариев0
    Картинка поста Async await в JavaScript: подробный разбор с примерами
    Иконка аватараАнтон
    Иконка календаря19 июля 2026
    JavaScriptasync/awaitасинхронность+ 3middleИконка уровня middle

    Async await в JavaScript: подробный разбор с примерами

    Разбираем async/await в JavaScript с нуля: как работает синтаксис, обработка ошибок через try/catch, параллельные запросы с Promise.all и частые ошибки

    Иконка чипа0
    Иконка глаза65
    Иконка комментариев0
    Иконка чипа0