Чек-лист самопроверки
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Чек-лист самопроверки
- Понимаю ли я, что такое реляционная модель данных и чем она отличается от других моделей?
- Могу ли я объяснить разницу между DDL, DML, DCL и TCL в SQL?
- Знаю ли я основные типы данных в SQL и когда какой использовать?
- Умею ли я писать запросы с использованием SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY?
- Понимаю ли я разницу между INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL OUTER JOIN?
- Могу ли я правильно использовать агрегатные функции: COUNT, SUM, AVG, MIN, MAX?
- Знаю ли я, как работает NULL в SQL и как с ним обращаться?
- Умею ли я писать подзапросы в WHERE, FROM и SELECT?
- Понимаю ли я, что такое первичный ключ и зачем он нужен?
- Знаю ли я, что такое внешний ключ и как он обеспечивает ссылочную целостность?
- Могу ли я создавать таблицы с помощью CREATE TABLE с указанием ограничений?
- Умею ли я изменять структуру таблицы с помощью ALTER TABLE?
- Знаю ли я, как работают уникальные ограничения (UNIQUE)?
- Понимаю ли я, как работают ограничения CHECK?
- Могу ли я объяснить, что такое нормализация и зачем она нужна?
- Знаю ли я, какие есть формы нормализации и когда их применять?
- Умею ли я писать запросы с использованием UNION и UNION ALL?
- Понимаю ли я разницу между UNION и JOIN?
- Могу ли я использовать оконные функции: ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG()?
- Знаю ли я, как работают общие табличные выражения (CTE) и рекурсивные CTE?
- Умею ли я писать рекурсивные запросы для обхода иерархий (например, оргструктуры)?
- Понимаю ли я, что такое транзакция и какие у неё свойства (ACID)?
- Знаю ли я команды BEGIN, COMMIT, ROLLBACK и SAVEPOINT?
- Могу ли я объяснить уровни изоляции транзакций и их влияние на конкурентность?
- Умею ли я создавать и использовать представления (VIEW)?
- Знаю ли я, что такое материализованное представление и чем оно отличается от обычного?
- Понимаю ли я, как работают индексы и когда их стоит создавать?
- Могу ли я объяснить разницу между кластеризованным и некластеризованным индексом?
- Знаю ли я, как анализировать план выполнения запроса (EXPLAIN / EXECUTION PLAN)?
- Умею ли я оптимизировать медленные запросы на основе плана выполнения?
- Понимаю ли я, что такое кардинальность и селективность индекса?
- Могу ли я писать запросы с использованием EXISTS и NOT EXISTS?
- Знаю ли я разницу между IN и EXISTS и когда что использовать?
- Умею ли я работать с датами и временем в SQL (DATE, TIMESTAMP, INTERVAL)?
- Понимаю ли я, как работают строковые функции: CONCAT, SUBSTRING, TRIM, UPPER, LOWER?
- Могу ли я использовать CASE-выражения для условной логики в запросах?
- Знаю ли я, как работают хранимые процедуры и функции?
- Умею ли я создавать и вызывать хранимые процедуры?
- Понимаю ли я, что такое триггер и в каких случаях его стоит использовать?
- Знаю ли я, как управлять пользователями и привилегиями (GRANT, REVOKE)?
- Могу ли я объяснить, что такое партиционирование таблиц и зачем оно нужно?
- Понимаю ли я, как работает блокировка строк и таблиц при конкурентном доступе?
- Знаю ли я, что такое взаимоблокировка (deadlock) и как её избежать?
- Умею ли я писать пагинацию с помощью LIMIT/OFFSET или ROW_NUMBER()?
- Понимаю ли я, почему OFFSET неэффективен при глубокой пагинации?
- Знаю ли я альтернативы OFFSET для курсорной пагинации?
- Могу ли я объяснить разницу между суррогатным и естественным ключом?
- Понимаю ли я, когда лучше денормализовать данные для производительности?
- Знаю ли я основные различия в диалектах SQL (PostgreSQL, MySQL, SQL Server, Oracle)?
- Могу ли я обосновать выбор реляционной СУБД для заданного бизнес-сценария?
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Вот SQL как раз обеспечивает такую связь и это главное отличие реляционных БД - реляции (relations), что означает связи. Знакомимся с языком - ставим программы, запускаем, выполняем первые запросы. Порядок работы с данными — выполняется подключение к БД (логин/пароль, адрес сервера), отправляется запрос (например, выбрать все записи из таблицы №1), выполняется обработка запроса в СУБД, СУБД… Как читать сложные SQL запросы? Анализ вложенных конструкций. DDL - Данные Definition Language (язык определения данных), используется для создания, изменения, удаления объектов структуры данных (таблиц, индексов, схем и т.д.). Два важных вопроса, которые мучают начинающих программистов — Когда использовать кавычки двойные (), одинарные (), а когда апострофы (’)?, Когда использовать точки (.), запятые (,) и точку с запятой… Типы данных определяют, какая информация может храниться в столбце таблицы — числа, текст, даты и т.д. Каждая СУБД поддерживает свои типы, но есть общая классификация. Примеры привилегий — SELECT — чтение данных, INSERT — добавление записей, UPDATE — изменение записей, DELETE — удаление записей ★ DDL (Данные Definition Language) – подмножество SQL, отвечающее за определение и изменение структуры базы данных. DDL-операции работают с метаданными — создают, изменяют и удаляют таблицы, индексы,… Ограничения (constraints) в SQL — это декларативные правила, встроенные в определение таблиц, которые обеспечивают корректность, согласованность и надёжность данных на уровне СУБД. Они действуют… ★ DML (Данные Manipulation Language) в отличие от DDL, выполняет работу не со структурой БД, а непосредственно с данными. В DML SQL оперирует четырьмя главными действиями, известными как CRUD — ★… ★ Алиасы (AS) используются для временного переименования таблиц или столбцов в запросе SQL. Они делают запросы более читаемыми и позволяют избежать конфликтов имён.SQL - язык структурированных запросов
Первые шаги с SQL
Принципы работы SQL-движка
Чтение и анализ сложных SQL-запросов
Категории SQL-команд - DDL, DML, DCL, TCL
Синтаксис и пунктуация в SQL
Типы данных в SQL
Взаимодействие приложений с СУБД через SQL
DDL - определение структуры базы данных
Ограничения целостности в SQL
CRUD-операции и язык манипуляции данными (DML)
Алиасы, JOIN и объединение таблиц