SQLab
УчёбаПрактикаЗадачиАренаРейтинг
© 2026 SQLab · Ташкент
SQLab

Учите SQL прямо в браузере — ничего не нужно устанавливать.

Платформа

  • Учёба
  • Практика
  • Задачи
  • Арена
  • Рейтинг

Для кого

  • Студентам
  • Преподавателям
  • Университетам
© 2026 SQLab. Все права защищены.Сделано в Узбекистане для студентов.
УчёбаПрактикаЗадачиАренаРейтинг
0/26

Основы

  • Что такое база данных?
  • Первый SELECT
  • WHERE: отбор нужных строк
  • IN, BETWEEN, LIKE и NULL
  • Сортировка, LIMIT и DISTINCT

Вычисления

  • Выражения, функции и CASE
  • Работа с датами
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY и HAVING

Соединение таблиц

  • Ключи и связи
  • INNER JOIN
  • LEFT JOIN и строки без пары
  • Несколько таблиц и self join

Сложные запросы

  • Подзапросы
  • UNION, INTERSECT, EXCEPT
  • WITH: именованные запросы
  • Оконные функции

Создание и изменение таблиц

  • CREATE TABLE: типы и ограничения
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Как правильно спроектировать базу

Профессиональный уровень

  • Индексы и EXPLAIN
  • Транзакции и ACID
  • VIEW: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Профессиональный уровень

Пользователи, права и резервные копии

267 мин

В настоящей базе данные ценны: персональные сведения, деньги, оценки. Защищать их от чужого доступа и от потери — неотъемлемая часть работы с базой.

Пользователи и роли

Каждая программа и каждый человек подключаются со своей учётной записью и могут делать только то, что им нужно.

В PostgreSQL всё — роль: и пользователь, и группа.

CREATE ROLE report_reader LOGIN PASSWORD 'kuchli-parol';
GRANT CONNECT ON DATABASE university TO report_reader;
GRANT SELECT ON students, grades TO report_reader;

Права

Право Разрешает
SELECT чтение
INSERT, UPDATE, DELETE запись, изменение, удаление
CREATE, DROP, ALTER изменение структуры
ALL PRIVILEGES всё

Отозвать право: REVOKE INSERT ON students FROM report_reader;

Принцип минимальных прав: для отчётов — только SELECT; для сайта — запись в свои таблицы, но не DROP; учётная запись администратора — только для администраторов. Общим базам SQLab выдано именно такое право «только чтение» — поэтому DELETE в них даёт ошибку.

SQL-инъекция

Самая известная атака. Если программа вставляет текст пользователя прямо в запрос:

-- программа собирает такой запрос:
SELECT * FROM users WHERE email = '<введённый текст>';

-- злоумышленник вместо email вводит:  ' OR '1'='1
SELECT * FROM users WHERE email = '' OR '1'='1';   -- все пользователи!

Защита — параметризованные запросы: значение передаётся отдельно от запроса и никогда не читается как SQL.

db.query('SELECT * FROM users WHERE email = $1', [email])   -- PostgreSQL
db.query('SELECT * FROM users WHERE email = ?', [email])    -- MySQL

Правило простое: никогда не склеивайте текст пользователя с запросом как строку.

Пароли

Пароли в базе никогда не хранят в открытом виде — только их хеш (bcrypt, scrypt, argon2). Даже если базу украдут, пароли узнать не получится.

Резервная копия (backup)

Поломка диска, ошибочный DELETE, вирусы — без резервной копии каждое из этого становится катастрофой.

pg_dump -U postgres university > university.sql     # создать копию
psql -U postgres -d university_new < university.sql  # восстановить

Хорошая практика: автоматическая ежедневная копия, хранение на другом сервере и регулярная проверка восстановления — непроверенная резервная копия — это не резервная копия.

Запомните

  • У каждой программы своя учётная запись и только нужные права (GRANT / REVOKE).
  • Защита от SQL-инъекций — параметризованные запросы.
  • Пароль — только хеш; резервная копия — регулярная и проверенная.
Предыдущий урокФункции, процедуры, триггеры

Содержание

  • Пользователи и роли
  • Права
  • SQL-инъекция
  • Пароли
  • Резервная копия (backup)
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab