SQL является одним из наиболее важных языков для работы с данными в Сети. Без SQL мы не смогли бы обмениваться данными настолько уверенным и мощным способом, как мы это делаем сегодня. Независимо от того, работаете ли вы с большими или маленькими данными, анализируете их, сохраняете или предоставляете доступ к ним, вероятно, вам нужно будет работать с SQL. И мы можем подтвердить его важность не только теоретически, но и на практике, представив некоторые исследования и статистики, которые показывают, как SQL используется в реальной жизни.
Я предлагаю вам свой roadmap, который поможет вам научиться работать SQL. Однако я хотел бы отметить, что SQL — это очень широкий и распространенный язык, и, к сожалению, невозможно освоить его полностью за короткое время. Чтобы стать настоящим экспертом в SQL, нужно много практиковаться и изучать различные аспекты языка на протяжении многих лет. Мой roadmap предлагает отличный старт для начала изучения SQL, поэтому я рекомендую вам приступить к обучению согласно моему плану. Продолжайте обучаться и практиковаться, и вы увидите результаты своих усилий уже в ближайшее время. Желаю вам успехов и удачного обучения!
Первые 10 поинтов карты советую изучать один за другим, ко всем остальным вы можете идти разными путями или же, предложенным мной.
-
Основы реляционных баз данных:
-
Реляционная модель данных
-
Терминология (таблица, столбец, строка, ключ, связь)
-
Первичные и внешние ключи
-
Кардинальность связей
-
Нормализация баз данных
-
Денормализация баз данных
Отличная статья у VK про реляционную модель на Хабре.
Подробное видео, которого будет достаточно для понимания нормализации баз данных.
Про первичные и внешние ключи есть хорошая документация на сайте Microsoft.
Краткий разбор терминологии(стоит самостоятельно погуглить):
-
Таблица (Table): структура данных, которая содержит информацию в виде строк и столбцов, где каждый столбец представляет отдельное поле данных, а каждая строка — отдельную запись.
-
Столбец (Column): элемент таблицы, который хранит определенный тип данных, такой как числа, строки или даты, для каждой записи в таблице.
-
Строка (Row): отдельная запись в таблице, которая содержит значения полей данных в каждом столбце.
-
Ключ (Key): столбец или набор столбцов, который уникально идентифицирует каждую строку в таблице. Он может быть использован для поиска, обновления или удаления определенных строк.
-
Связь (Relationship): связь между двумя таблицами, которая устанавливается на основе значений ключевых полей. Она может быть один-к-одному, один-ко-многим и многие-ко-многим.
Хороший курс на Stepik для введения в базы данных.
-
-
-
Основы SQL:
-
История и структура SQL
-
Работа с базой данных (создание, удаление, изменение, подключение)
-
SELECT-запросы (основные операторы, UNION, INNER JOIN, OUTER JOIN, DISTINCT)
-
Операторы чтения и изменения данных (INSERT, UPDATE, DELETE)
-
Простые запросы (WHERE, ORDER BY, GROUP BY)
-
Ограничение результатов запроса (LIMIT)
-
Функции для работы со строками, числами и датами
-
Запросы на объединение таблиц (UNION, UNION ALL, INTERSECT, EXCEPT)
Два бесплатных курса на Stepik изучающие приведенные выше запросы и не только:
https://stepik.org/course/63054/
-
-
Сложные SQL-запросы:
-
Функции агрегирования (SUM, AVG, MAX, MIN, COUNT)
-
Подзапросы (IN, EXISTS, ANY/ALL)
-
Вложенные запросы
-
Группировка и сортировка данных
-
Оконные функции
-
-
Базовые операции изменения данных:
-
INSERT
-
UPDATE
-
DELETE
Операция INSERT используется для добавления новых данных в таблицу. Новая строка создается со значениями, которые указаны в команде. Пример:
INSERT INTO employees (name, age, salary)
VALUES ('John', 30, 50000);Это добавляет новую строку в таблицу employees с именем ‘John’, возрастом 30 и зарплатой 50000.
UPDATE:
Операция UPDATE позволяет изменить значения в существующих строках в таблице. Пример:UPDATE employees
SET salary = 60000
WHERE name = 'John';Это изменит зарплату для сотрудника с именем ‘John’ на 60000.
DELETE:
Операция DELETE позволяет удалить одну или более строк из таблицы. Пример:DELETE FROM employees
WHERE name = 'John';Это удалит из таблицы employees все строки, где имя сотрудника равно ‘John’.
-
-
Работа с индексами:
-
Как работают индексы
-
Как и когда использовать индексы
-
Типы индексов (B-Tree, Hash, GIN/GiST)
-
Создание, изменение, удаление индексов
-
Композитные индексы
Видосы про индексы в SQL:
-
-
DDL, DML и TCL:
DDL (Data Definition Language) — это язык определения структуры базы данных. С его помощью можно создавать и удалять таблицы, индексы, ограничения, пользовательские типы данных и другие объекты базы данных.
Некоторые команды DDL:
-
CREATE TABLE — создание таблицы
-
DROP TABLE — удаление таблицы
-
ALTER TABLE — изменение структуры таблицы
-
CREATE INDEX — создание индекса
-
DROP INDEX — удаление индекса
-
CREATE VIEW — создание представления
-
DROP VIEW — удаление представления
DML (Data Manipulation Language) — это язык манипулирования данными в базе данных. С его помощью можно:
-
добавлять, изменять и удалять данные в таблицах;
-
выбирать данные из таблиц;
-
управлять транзакциями.
Некоторые команды DML:
-
SELECT — выбор данных из таблиц
-
INSERT — добавление данных в таблицу
-
UPDATE — изменение данных в таблице
-
DELETE — удаление данных из таблицы
TCL (Transaction Control Language) — это язык управления транзакциями в SQL. Он предоставляет основные операторы для работы с транзакциями, такие как COMMIT, ROLLBACK и SAVEPOINT.
Оператор COMMIT используется для сохранения изменений в базе данных, сделанных в рамках транзакции. Оператор ROLLBACK используется для отмены всех изменений, сделанных в рамках транзакции. Оператор SAVEPOINT используется для создания точки сохранения в рамках транзакции, чтобы можно было откатить изменения после этой точки.
Про все подробнее: https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/
-
-
Настройка производительности:
-
Подготовка запроса (EXPLAIN, ANALYZE)
-
Оптимизация запросов (использование индексов, подзапросов, JOIN)
-
Работа с пулом соединений
-
Кэширование данных
-
Репликация баз данных
Статья про оптимизацию запросов на Хабре
Документация с Microsoft и статья с Хабр про пул соединений:
Кэширование данных — это временное хранение данных в памяти компьютера или на жестком диске, чтобы уменьшить время доступа к ним в будущем. Когда приложение запрашивает данные, они сначала проверяются в кеше. Если данные уже есть в кеше, то они считываются оттуда вместо того, чтобы загружаться с сервера базы данных, что значительно сокращает время ответа. Однако, кэширование данных может привести к проблемам с целостностью данных, если данные в базе изменяются, а изменения не отражаются в кеше.
Репликация баз данных — это процесс создания копий баз данных на нескольких серверах для обеспечения доступности и устойчивости данных в случае отказа одного из серверов. Репликация подразумевает трансляцию изменений из одного источника данных на несколько других серверов-адресатов. Это обеспечивает более быстрый доступ к данным и повышает отказоустойчивость. Однако, репликация может привести к проблемам синхронизации данных между копиями баз данных и требует дополнительных затрат на обработку и передачу данных.
-
-
Управление правами доступа:
-
Создание пользователей и групп
-
Назначение прав доступа на таблицы, представления и процедуры
-
Удаление пользователей и групп
-
-
Процедуры, триггеры и функции:
-
Как создать и использовать процедуры и функции
-
Основные принципы триггеров
-
Хранимые процедуры и функции
-
Варианты вызова процедур и функций
-
Материализованные представления
Триггеры в SQL — это специальные программы, которые запускаются автоматически при определенных событиях в базе данных, например, при вставке, обновлении или удалении данных в таблице.
Основные принципы работы триггеров в SQL:
-
Триггеры выполняются автоматически в ответ на определенные события в базе данных, без необходимости явного вызова.
-
Триггеры работают в фоновом режиме, их выполнение не блокирует другие операции в базе данных.
-
Триггеры могут использоваться для автоматического обновления данных в связанных таблицах или для выполнения других операций, например, отправки сообщений электронной почты.
-
Триггеры уменьшают вероятность ошибок, связанных с человеческим фактором, так как автоматически выполняют заданные действия в ответ на определенные события в базе данных.
-
Триггеры могут быть использованы для контроля целостности данных, включая проверку и ограничение значений, используемых в таблицах.
-
Триггеры могут быть ограничены по времени выполнения или по количеству срабатываний, чтобы избежать перегрузки базы данных.
-
-
-
Интерфейсы для работы с базой данных:
-
Работа с консольным интерфейсом (psql)
-
Управление базой данных с помощью GUI-клиентов
-
Работа с базой данных через API
-
-
Работа с NoSQL базами данных:
-
Различия между реляционными и NoSQL базами данных
-
Типы NoSQL баз данных (key-value, document, column-family, graph)
-
Операции чтения и записи данных в NoSQL базах данных
-
Использование NoSQL баз данных в сочетании с реляционными базами данных
-
ACID-свойства и транзакции:
-
Что такое ACID и почему это важно
-
Понятие транзакции
-
Работа с транзакциями (BEGIN, COMMIT, ROLLBACK)
-
Тайм-ауты транзакций и блокировки
Про ACID-свойства и транзакции:
https://www.youtube.com/watch?v=X5fgUaANKK4
https://struchkov.dev/blog/ru/transaction-jdbc-and-spring-boot/
-
Резервное копирование и восстановление базы данных:
-
Как создать резервную копию базы данных
-
Восстановление данных из резервной копии
-
Типы резервных копий (полная, инкрементальная, дифференциальная)
Видосы:
https://www.youtube.com/watch?v=1cr-F2leHek
-
Безопасность баз данных:
-
Защита от SQL-инъекций
-
Управление доступом и авторизацией
-
Шифрование данных в базе данных
-
Основы аудита баз данных
-
Базы данных в облаке и распределенные СУБД:
-
Основы облачных баз данных (AWS RDS, Google Cloud SQL)
-
Работа с распределенными СУБД (PostgreSQL XL, Greenplum, Apache Cassandra)
-
Кластеризация баз данных и горизонтальное масштабирование
Статья по кластеризации баз данных и горизонтальному масштабированию
-
SQL и программирование:
-
Связь SQL и языков программирования (Python, Java, C#)
-
Как использовать SQL в приложениях
-
Использование ORM-библиотек (Django ORM, Hibernate)
-
Работа с SQL-генераторами запросов
Две части статей на Хабр про использований Python для запросов в SQL
-
Основы работы с базами данных на уровне DevOps:
-
Использование конфигурационных файлов для развертывания базы данных в автоматическом режиме
-
Основы контейнеризации баз данных (Docker)
-
Использование инфраструктуры как код (Terraform, Ansible) для управления базами данных.
Документация Microsoft про использование конфигурационных файлов
-
Поддержка многопользовательской работы:
-
Работа с блокировками для поддержки многопользовательской работы
-
Концепция изоляции транзакций (READ COMMITTED, REPEATABLE READ, SERIALIZABLE)
-
Работа с параллельными запросами
Про настройку многопользовательской работы в SQL server
-
Оптимизация запросов:
-
Использование индексов для оптимизации запросов на чтение
-
Использование материализованных представлений и хранимых процедур для оптимизации запросов на запись
-
Понимание как запросы работают на уровне машины, чтобы можно было сделать более эффективный код
Про оптимизацию запросов на youtube:
-
Обзор расширений:
-
Примеры расширений, доступных в PostgreSQL
-
Установка и использование расширений (hstore, PostGIS, pgAdmin)
-
Создание своих собственных расширений
-
Системы реального времени:
-
Работа с системами реального времени, такими как Apache Kafka
-
Понимание как использовать SQL для работы с системами реального времени
-
Создание стримовых таблиц
-
Работа с JSON:
-
Работа с JSON в SQL
-
Работа с операторами JSONB
-
Создание собственных функций для работы с JSON
JSON в SQL:
https://www.youtube.com/watch?v=lBrUV73ULYU
https://youtube.com/playlist?list=PL5FkCIZQgbvMfdrxZO8tYJYc4wW3pA5bV
-
Оптимизация скорости работы с большими объемами данных:
-
Использование различных методов компрессии данных (gzip, lzop, lz4)
-
Разбиение баз данных на таблицы (шардирование)
-
Перенос данных во временные таблицы для оптимизации запросов.
Знание SQL может принести вам большие преимущества на рынке труда, так как специалисты с навыками в SQL всегда востребованы. Не останавливайтесь на достигнутом и продолжайте совершенствоваться в SQL, получайте новые знания и опыт, и вы станете великим разработчиком!
Три хорошие книги на русском языке про SQL (выпущенные после 2020 года):
-
«SQL для анализа данных: Учебное пособие» авторов Филиппа Кузьменко и Алексея Трофимова.
-
«SQL. Руководство по использованию SQL-3» автора Сергея Симдянова.
-
«SQL. Полный курс. Базовый уровень» авторов Ильи Кантора и Романа Мельникова.
-
«SQL. Сборник рецептов». Автор Энтони Молинаро
Хороших сайта для практики SQL:
-
Sql‑ex — легенда. Без комментариев.
-
SQLZOO — этот сайт предлагает обучающие материалы и задачи для практики SQL на всех уровнях сложности. Сайт доступен на нескольких языках, включая русский.
-
HackerRank — HackerRank предлагает множество задач и квизов для практики SQL. Сайт на английском языке.
-
LeetCode (https://leetcode.com/problemset/database/) — LeetCode знаменит своими задачами на алгоритмы, но у них также есть раздел для практики SQL с множеством интересных задач. Сайт на английском языке.
-
Хорошие бесплатные курсы на Coursera:
-
Анализ данных от Google( есть блок с SQL)
-
-
Данный Roadmap открыт для ваших изменений и добавлений! Пишите в комментарии свои предложения, каждое обещаю рассмотреть.
Спасибо за внимание! И да прибудет с вами Сила.
ссылка на оригинал статьи https://habr.com/ru/articles/725414/
Добавить комментарий