SQL с нуля
ПРОГРАММА КУРСА
Урок 1. Введение
На данном уроке мы познакомимся с основными понятиями работы с базами данных, которые в будущем помогут проще освоить программу курса.

Реляционная модель данных: что это такое, принципы и основы реляционной модели, операции над данными. Понятия отношения и таблицы, первичный и внешний ключи - зачем они нужны и что обеспечивают. Понятие нормальная форма.

Язык SQL: первое знакомство, какие бывают разновидности SQL и его стандарты. Ключевые операторы языка SQL: SELECT, UPDATE, INSERT, DELETE.

Особенности подмножества языка Transact SQL, который будет использоваться в процессе обучения. Его подмножества: DML, DDL и другие элементы языка.

Первое знакомство с Microsoft SQL Server: Архитектура, версии и редакции SQL Server – что это и зачем их различать.

Как работать с SQL Server: основные инструменты, подключение к серверу, написание первого запроса.
Урок 2. Базы данных, таблицы и типы данных
В данном уроке мы будем более подробно знакомиться с SQL Server и погружаться в принципы работы с ним. Мы рассмотрим, что из себя представляет SQL Server как программа и понятие СУБД.

С какими основными объектами работает SQL Server: экземпляр сервера, база данных, таблица, индекс. Что представляют из себя программы написанные для SQL Server, понятие: скрипт, пакет, запрос. Как сохранять запросы для повторного использования, понятие модуль: хранимая процедура, функция, триггер, представление.

С какими данными может работать SQL Server, типы данных и их ограничения. Как определять ограничения на данные в таблицах, на что они влияют. Значения по умолчанию DEFAULT и значение NULL.
Урок 3. Инструкция SELECT
В данном уроке мы познакомимся и научимся работать с основной и одной из самых мощных инструкций языка SQL – инструкция SELECT. Какие действия выполняет данная инструкция, какие еще элементы языка она может включать, выражения FROM, WHERE, TOP, ORDER BY. Логический порядок обработки инструкции, почему важно и полезно его понимать.

Написание запросов на выборку данных с фильтрацией и сортировкой. Понятие предикат и оператор в предикате, основные операторы сравнения: >, <, =, !=, IS, NOT, LIKE. Как можно сочетать предикаты, чтобы получить более сложные варианты фильтрации данных.

Встроенные функции языка SQL: GETDATE, EOMONTH, DATEDIFF, DATEADD, CONVERT, CAST, ABS и другие.

Троичная логика предикатов и в чем особенность значения NULL. Какие бывают ошибки при работе с троичной логикой и как их избежать.
Урок 4. Соединения и подзапросы
В данном уроке будет разобран еще один ключевой элемент языка SQL – соединение – JOIN. Что дает и зачем нужно соединение в базах данных, что и с чем можно соединять. Какие логические виды соединений бывают и в каких случаях использовать тот или иной вид: INNER JOIN, CROSS JOIN, FULL JOIN, LEFT JOIN, RIGHT JOIN, SEMI JOIN, ANTI SEMI-JOIN. Подзапросы в языке SQL, выражения EXISTS, NOT EXISTS, IN, NOT IN. Автономные и коррелирующие подзапросы. Оператор APPLY.

Операторы работы с наборами: UNION, EXCEPT, INTERSECT.

Написание запросов к нескольким таблицам используя соединения и подзапросы. Что такое ALIAS и почему их важно использовать при обращении сразу к нескольким таблицам в одном запросе. Что такое обобщенное табличное выражение Common Table Expression (CTE), в чем его отличие и сходство с подзапросом. Понятие представление: VIEW.
Урок 5. Группировка
Группировка является еще одним из основных действий, выполняемых с данными в языке SQL. Мы разберем как осуществлять группировку, как фильтровать сгруппированные данные при помощи выражений GROUP BY и HAVING.

Также мы разберем какие действия можно осуществлять над сгруппированными данными при помощи агрегирующих функций: MAX, MIN, SUM и COUNT. Примеры отчетов с группировкой и агрегирующими функциями.
Урок 6. Оконные функции
Что такие FRAME (окно), как его определять и как с ним работать, предложение OVER, ORDER BY, PARTITION BY, ROWS/RANGE BETWEEN. Какие виды оконных функций бывают, что такое аналитические и агрегирующие оконные функции, какие задачи они позволяют решать. Основные оконные функции: ROW_NUMBER, RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE, SUM, COUNT.

Примеры запросов для подсчета нарастающего итога, нумерации результатов, получения первого или последнего значения в рамках группы, например месяца, квартала или года.
Урок 7. Операции DML
Язык SQL позволяет не только осуществлять выборку данных, но и обновлять, добавлять и удалять данные. Будут разобраны основные конструкции призванные осуществлять изменения в данных: INSERT, UPDATE и DELETE.

Мы рассмотрим как примеры простых запросов, с обновлением или удалением одной строки, так и более сложные примеры с несколькими таблицами и фильтрами. Применение выражений FROM, подзапросов и CTE при манипуляции с данными.
Урок 8. Производительность SQL Server
В современном мире объем данных постоянно возрастает и при работе с данными важно не только получить нужный результат, но и получить его быстро. В данном уроке будут рассмотрены основные аспекты, на которые надо обращать внимание при работе с SQL Server в контексте производительности.

Индексы и их назначение: что такое индекс, основные сведения об устройстве индекса, как правильно создать индекс. Какие виды индексов бывают: кластерные, не кластерные индексы, колоночные индексы. Что такое покрывающий индекс и понятие аргумента поиска.

Как выполняется запрос на самом деле и что такое план запроса. Как читать план и основные элементы, на которые нужно обращать внимание. Как понять, используется ли индекс в запросе и правильно ли он используется. Почему сервер может не использовать индекс и как на это повлиять. Что такое кардинальность и статистика.

Чем плохи пользовательские функции. Основные советы по написанию запросов с оглядкой на производительность.
Автор и
преподаватель курса
Корпоративных информационных систем
Систем мониторинга рекламы
Систем интернет-торговли и других
Систем телефонных опросов
Дмитрий является шестикратным обладателем статуса Microsoft Most Valuable Professional в области Data Platform, а также имеет сертификат Microsoft Certified Solution Associate (MCSA) Database Devepment.

За свою профессиональную карьеру занимался проектами по разработке БД для систем управления клиентами:
Дмитрий Пилюгин
MVP Microsoft