Цель курса - предоставить слушателям знания, умения и навыки, необходимые для построения базовых запросов и программирования на SQL для СУБД  Firebird SQL Server, Microsoft SQL Server,  Oracle Database и PostgreSQL.

      Авторский дистанционный курс поставлен по учебнику "Программирование на SQL" Маркина А.В. с грифом учебно-методического отдела высшего образования.

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

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux.
  • Знание основ программирования.
  • Базовые знания теории реляционных баз данных.

По окончании курса Вы будете уметь:

  • Использовать современные системы управления реляционными базы данных.
  • Создавать запросы к базам данных на языке SQL.
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров.
  • Управлять доступом к объектам базы данных.
  • Работать с транзакциями.
Материалы слушателя
Слушателям предоставляется лекции в формате pdf и прочие материалы, необходимые для обучения.

Здесь можно проверить полученные знания.

СОДЕРЖАНИЕ

Предисловие

Введение

1.Реляционная модель данных

1.1. Определение реляционной модели

1.2. Таблицы

1.3. Первичные ключи

1.4. Внешние ключи

1.5. Связи между таблицами

1.6. Нормализация отношений

1.7. Модели базы данных на логическом и физическом уровнях

1.8. Целостность данных

1.9. Архитектура «клиент-сервер»

Контрольные вопросы

2. Введение в SQL

2.1. Объекты структуры базы данных

2.2. Функции SQL

2.3. Достоинства SQL

2.4. Формы использования SQL

2.5. Firebird SQL Server

2.6. Правила синтаксиса и основные запросы SQL

2.7. Имена объектов в SQL. Константы,отсутствующие данные

2.8. Выражения

2.9. Типы данных

Контрольные вопросы

3. Язык выборки данных

3.1. Синтаксис запроса SELECT

3.2. Запросы к одной таблице

3.2.1. Предложения SELECT и FROM

3.2.2. Предложение WHERE

3.2.2.1. Простое сравнение

3.2.2.2. Проверка на принадлежность диапазону значений

3.2.2.3. Проверка на соответствие шаблону

3.2.2.4. Проверка на наличие последовательности символов

3.2.2.5. Проверка на совпадение с началом строки

3.2.2.6. Проверка на членство во множестве

3.2.2.7. Проверка значения на NULL

3.2.2.8. Проверка двух значений на отличие

3.2.2.9. Проверка на соответствие регулярному выражению

3.2.2.10. Составные условия поиска

3.2.3. Функции в SQL

3.2.3.1. Классификация функций

3.2.3.2. Скалярные функции

3.2.3.3. Агрегатные функции

3.2.3.4. Функции для списка значений

3.2.3.5. Дополнительные возможности вывода в предложении SELECT

3.2.4. Предложение GROUP BY

3.2.5. Предложение HAVING

3.2.6. Сортировка результатов запроса

3.3. Многотабличные и вложенные запросы

3.3.1. Соединения таблиц

3.3.1.1. Неявное соединение таблиц

3.3.1.2. Явное соединение таблиц

3.3.1.3. Стандартные соединения (объединения) таблиц

3.3.1.4. Соединение таблицы со своей копией

3.3.2. Запросы с вложенными запросами

3.3.2.1. Виды вложенных запросов

3.3.2.2. Запросы с простыми подзапросами

Простые подзапросы в предложениях WHERE и HAVING

3.3.2.3. Запросы со связанными подзапросами

3.3.2.4. Предикаты ANY и ALL

3.3.2.5. Предикат SINGULAR

3.3.2.6. Предикат EXISTS

3.3.3. Объединение результатов нескольких запросов

3.3.4. Рекурсивные подзапросы в предложении WITH

3.4. Оптимизация запросов на выборку данных

3.4.1. Обработка запроса в реляционных СУБД

3.4.2. Основные направления анализа «медленных» SQL-запросов

3.4.3. Рекомендации по разработке и реструктуризации запросов конкретных типов

Контрольные вопросы

4. Язык определения данных

4.1. Домены

4.2. Создание, изменение и удаление базовых таблиц БД

4.2.1. Создание таблицы

4.2.2. Определение ограничений столбца

4.2.3. Определение ограничений на таблицу

4.2.4. Удаление таблицы БД

4.2.5. Изменение определения таблицы

4.3. Индексы

4.4. Временные таблицы

4.5. Представления

4.6. Комментарии к объектам базы данных

Контрольные вопросы

5. Язык манипулирования данными

5.1. Добавление новых данных

5.1.1. Однострочный запрос INSERT

5.1.2. Многострочный запрос INSERT

5.2. Обновление существующих данных

5.2.1. Простой запрос UPDATE

5.2.2. Запрос UPDATE с подзапросом

5.3. Обобщенное обновление и добавление данных

5.4. Слияние данных

5.5. Удаление существующих данных

5.5.1. Простой запрос DELETE

5.5.2. Запрос DELETE с подзапросом

5.6. Обновление представлений

Контрольные вопросы

6. Процедурный язык

6.1. Основы разработки модулей на PSQL

6.1.1. Переменные

6.1.2. Условные операторы

6.1.2.1. Оператор ветвления IF

6.1.2.2. Оператор WHILE

6.1.3. Курсоры в PSQL

6.1.3.1. Неявный курсор

6.1.3.2. Явный курсор

6.1.4. SQL-сценарии

6.1.5. Генераторы

6.1.6. Исключительные ситуации

6.2. Хранимые процедуры

6.2.1. Определение хранимых процедур

6.2.2. Процедуры выбора

6.2.3. Выполняемые процедуры

6.3. Триггеры

6.3.1. Триггеры DML

6.3.1.1. Определение триггера

6.3.1.2. Примеры поддержания ссылочной целостности

6.3.1.3. Модификация и удаление триггера

6.3.2. Триггеры базы данных

6.4. Выполняемые блоки

Контрольные вопросы

7. Защита данных

7.1. Управление доступом к данным

   7.1.1. Требования к безопасности данных

   7.1.2. Привилегии доступа и передача привилегий

   7.1.3. SQL роли

   7.1.4. Привилегии на представления

   7.1.5. Отмена привилегий

   7.1.6. Автоматизированное управление доступом

7.2. Транзакции

       7.2.1. Понятие транзакции

       7.2.2. Восстановление данных

       7.2.3. Параллелизм

Контрольные вопросы

Лабораторный практикум

Лабораторная работа № 1. IBExpert инструмент разработчика и администратора баз данных Firebird. Учебная база данных

Лабораторная работа № 2. Построение простых запросов на чтение данных

Лабораторная работа № 3. Построение многотабличных и вложенных запросов на чтение данных

Лабораторная работа № 4. Построение запросов на определение данных

Лабораторная работа № 5. Построение запросов на модификацию данных

Лабораторная работа № 6. Программирование хранимых процедур

Лабораторная работа № 7. Программирование триггеров

Лабораторная работа № 8. Построение запросов управления доступом

Библиографический список

Приложение А. Описание учебной базы данных

Приложение Б. СИСТЕМНЫЙ КАТАЛОГ БАЗЫ ДАННЫХ

Б.1. Общие сведения о базе данных

Б.2. Домены

Б.3. Отношения (таблицы и представления)

Б.4. Процедуры

Б.5. Триггеры

Б.6. Зависимости

Приложение В.

Скрипт учебной базы данных (Firebird SQL Server)

Скрипт учебной базы данных (Microsoft SQL Server) 

Скрипт учебной базы данных (Oracke Database)

Приложение А. 

Описание учебной базы данных
Жилищно-коммунальное хозяйство является одной из основных составляющих (компонентов, элементов, областей) народного хозяйства РФ, охватывающей многоотраслевой производственно-технический комплекс, потребность в продукции которого практически не ограничена. Индустрия ЖКХ представлена жилыми, общественными зданиями, эксплуатационными, управляющими, ремонтно-строительными, транспортными, ресурсоснабжающими и другими предприятиями, составляющими сложную социально-экономическую систему, от результативности функционирования которой зависит развитие городских объектов и состояние среды обитания жителей городов и других населенных пунктов.
Расчет и прием жилищно-коммунальных платежей при кажущейся элементарности сервиса — важная составляющая повседневного быта граждан. Каждый из них для удовлетворения своих жизненных потребностей потребляет или расходует коммунальные ресурсы (вода, газ, тепло, электроэнергия) и является абонентом одной из управляющих компаний. В случае возникновения неисправности источников коммунальных ресурсов (поломка газового, отопительного, сантехнического или электрооборудования) он отправляет аварийную или ремонтную заявку по устранению возникшей неисправности.
Компании, оказывающие такие услуги и поставляющие коммунальные ресурсы, ежемесячно производят начисление платы соответствующего размера за них, а обязанность абонентов — своевременно и регулярно их оплачивать.
Правила предоставления жилищно-коммунальных услуг собственникам и пользователям помещений в многоквартирных и жилых домах, а также порядок расчета и перерасчета размера платы за коммунальные ресурсы с использованием приборов учета и при их отсутствии регулируются соответствующими постановлениями правительства.
Следует отметить существенное усложнение в последнее время алгоритмов расчета размера платы за коммунальные ресурсы и жилищно-коммунальные услуги. Прежде всего, это:
  • расчет размера платы за коммунальную услугу при отсутствии показаний прибора учета (счетчика), исходя из рассчитанного среднемесячного или нормативного объема расхода потребителем коммунального ресурса (объема потребления коммунальной услуги);
  • использование в расчетах дифференцированной ставки процента пени в зависимости от числа дней образования просроченной задолженности;
  • применение дифференцированного повышающего коэффициента для абонентов, имеющих техническую возможность, но не установивших приборы учета коммунальных ресурсов;
  • расчет объемов коммунальных ресурсов, расходуемых на общедомовые нужды;
  • расчет с применением многотарифного учета объемов расходуемого коммунального ресурса;
  • дифференцированный расчет за централизованное отопление в зависимости от года и материала постройки дома, а также его этажности;
  • обеспечение интеграции  информационных систем муниципального и регионального уровней с государственной информационной системой жилищно-коммунального хозяйства (ГИС ЖКХ).
Учебная БД представляет собой очень упрощенный пример информационной модели расчетно-аналитической составляющей «Абонент» расчетно-платежного комплекса «Абонент+», которая используется для информационного обеспечения деятельности организаций по оказанию населению жилищно-коммунальных услуг и расчетам за них [35]. Учебная БД состоит из восьми таблиц: пяти таблиц-справочников и трех информационных таблиц (таблиц фактов).
В учебной БД используются такие таблицы-справочники:
1) Street. Справочник улиц города, в домах которых проживают абоненты. Столбцы таблицы:
  • StreetCD — уникальный код улицы (первичный ключ),
  • StreetNM — название улицы, расшифровывающее код улицы;
2) Abonent. Справочник абонентов города. Столбцы таблицы:
  • AccountCD — номер лицевого счета абонента, уникальным образом идентифицирующий каждого из абонентов (первичный ключ),
  • StreetCD — код улицы, на которой проживает абонент (внешний ключ, ссылающийся на первичный ключ таблицы Street),
  • HouseNo — номер дома, в котором проживает абонент,
  • FlatNo — номер квартиры,
  • Fio — фамилия, имя и отчество абонента в формате «Фамилия И.О.»,
  • Phone — номер телефона;
3) Services. Справочник услуг, оказываемых абонентам жилищно-коммунальными организациями. Столбцы таблицы:
  • ServiceCD — код услуги (первичный ключ),
  • ServiceNM — наименование услуги;
4) Disrepair. Справочник типовых неисправностей газового оборудования абонентов. Столбцы таблицы:
  • FailureCD — код неисправности газового оборудования (первичный ключ),
  • FailureNM — наименование неисправности газового оборудования;
5) Executor. Справочник исполнителей заявок, поданных абонентами на ремонт газового оборудования. Исполнителями являются работники ремонтной службы газораспределительной организации, оказывающей соответствующие услуги. Столбцы таблицы:
  • ExecutorCD — уникальный код, идентифицирующий исполнителей ремонтных заявок (первичный ключ),
  • Fio — фамилия, имя и отчество исполнителя в формате «Фамилия И. О.».
В качестве информационных таблиц учебной БД выделены следующие:
1) NachislSumma. Таблица для хранения информации о размерах ежемесячных начислений плат абонентам за оказанные им услуги (которые расшифровываются в справочнике услуг Services). Плата за ремонт газового оборудования производится по факту оказания услуги, и начисление за него не производится. Столбцы таблицы:
  • NachislFactCD — уникальный идентификатор факта начисления (первичный ключ),
  • AccountCD — номер лицевого счета абонента, которому было сделано начисление (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код услуги, за которую выполнено начисление (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • NachislSum — значение начисленной суммы,
  • NachislMonth — номер месяца, за который произведено начисление,
  • NachislYear — год, за месяц которого выполнено начисление;
2) PaySumma. Таблица для хранения значений оплат, внесенных абонентами за оказанные им услуги. Для каждого факта оплаты по какой-либо услуге указывается дата осуществления оплаты, оплачиваемые месяц и год. Столбцы таблицы:
  • PayFactCD — уникальный идентификатор факта оплаты по услуге Request (первичный ключ),
  • AccountCD — номер лицевого счета абонента, оплатившего оказанную ему услугу (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • ServiceCD — код оплаченной услуги (внешний ключ, ссылающийся на первичный ключ таблицы Services),
  • PaySum — значение оплаченной суммы,
  • PayDate — дата оплаты,
  • PayMonth — номер оплачиваемого месяца,
  • PayYear — оплачиваемый год.
Таким образом, при сопоставлении этой информации по конкретному абоненту с данными, хранящимися в таблице NachislSumma, можно вычислить размер долга или переплаты у данного абонента на указанный месяц года;
3) Request. Таблица для хранения информации о заявках абонентов на ремонт газового оборудования. Каждая ремонтная заявка характеризуется номером лицевого счета абонента (расшифровка в справочнике Abonent), заявившего определенную неисправность газового оборудования (расшифровка в справочнике Disrepair) в его доме или квартире, исполнителем ремонтной работы (справочник Executor), датой регистрации заявки, датой выполнения ремонта и признаком погашения (закрытия). Столбцы таблицы:
  • RequestCD — уникальный код ремонтной заявки (первичный ключ),
  • AccountCD — номер лицевого счета абонента, подавшего данную ремонтную заявку (внешний ключ, ссылающийся на первичный ключ таблицы Abonent),
  • FailureCD — код неисправности газового оборудования, заявленной абонентом в данной ремонтной заявке (внешний ключ, ссылающийся на первичный ключ таблицы Disrepair),
  • ExecutorCD — код исполнителя, ответственного за выполнение данной ремонтной заявки (внешний ключ, ссылающийся на первичный ключ таблицы Executor),
  • IncomingDate — дата поступления заявки,
  • ExecutionDate — дата выполнения заявки,
  • Executed — столбец логического типа, признак погашения заявки.
В общем случае зарегистрированная ремонтная заявка может быть:
  • не назначена ни одному из исполнителей, а следовательно, не выполнена и не погашена;
  • назначена одному из исполнителей, но не выполнена им, а следовательно, не погашена;
  • назначена одному из исполнителей, выполнена им, но не погашена;
  • назначена одному из исполнителей, выполнена им и погашена.
ER-модели учебной БД на логическом и физическом уровнях представлены соответственно на рис. 1.5 и 1.6 (см. гл. 1, ч. 1).
Для обработки исключительных ситуаций созданы исключения: Del_ Restrict, Ins_ Restrict и Upd_ Restrict.
Ниже приводятся таблицы учебной БД. Весь материал учебника, все запросы основаны именно на этих данных. Анализ таблиц поможет понять логику получения результатов.
Объектам учебной БД, согласно стилю программирования, даны вполне осмысленные имена. Это, в свою очередь, привело к необходимости использования довольно длинных имен, что не является недостатком при их задании, так как современные клиентские утилиты производят контекстный поиск при вводе по первым символам имени объекта. Таблицы фактов учебной БД имеют большое число строк. Это сделано для того, чтобы приблизить ее к реальности.
Таблица А.1
Данные таблицы Street
StreetCD StreetNM
1 ЦИОЛКОВСКОГО УЛИЦА
2 НОВАЯ УЛИЦА
3 ВОЙКОВ ПЕРЕУЛОК
4 ТАТАРСКАЯ УЛИЦА
5 ГАГАРИНА УЛИЦА
6 МОСКОВСКАЯ УЛИЦА
7 КУТУЗОВА УЛИЦА
8 МОСКОВСКОЕ ШОССЕ
Таблица А.2
Данные таблицы Abonent
AccountCD StreetCD HouseNo FlatNo Fio Phone
005488 3 4 1 Аксенов С. А. 556893
015527 3 1 65 Конюхов В. С. 761699
080047 8 39 36 Шубина Т. П. 257842
080270 6 35 6 Тимошкина Н. Г. 321002
080613 8 35 11 Лукашина Р. М. 254417
115705 3 1 82 Мищенко Е. В. 769975
126112 4 7 11 Маркова В. П. 683301
136159 7 39 1 Свирина З. А. NULL
136160 4 9 15 Шмаков С. В. NULL
136169 4 7 13 Денисова Е. К. 680305
443069 4 51 55 Стародубцев Е. В. 683014
443690 7 5 1 Тулупова М. И. 214833
Таблица А.3
Данные таблицы Services
ServiceCD ServiceNM
1 Газоснабжение
2 Электроснабжение
3 Теплоснабжение
4 Водоснабжение
Таблица А.4
Данные таблицы Disrepair
FailureCD FailureNM
1 Засорилась водогрейная колонка
2 Не горит АГВ
3 Течет из водогрейной колонки
4 Неисправна печная горелка
5 Неисправен газовый счетчик
6 Плохое поступление газа на горелку плиты
7 Туго поворачивается пробка крана плиты
8 При закрытии краника горелка плиты не гаснет
12 Неизвестна
Таблица А.5
Данные таблицы Executor
ExecutorCD Fio
1 Стародубцев Е. М.
2 Булгаков Т. И.
3 Шубин В. Г.
4 Шлюков М. К.
5 Школьников С. М.
6 Степанов А. В.
Таблица А.6
Данные таблицы NachislSumma
NachislfactCD AccountCD ServiceCD NachislSum NachislMonth NachislYear
1 136160 2 56 1 2018
2 005488 2 46 12 2015
3 005488 2 56 4 2018
4 115705 2 40 1 2015
5 115705 2 250 9 2016
6 136160 1 18,3 1 2017
7 080047 2 80 10 2017
8 080047 2 80 10 2016
9 080270 2 46 12 2016
10 080613 2 56 6 2016
11 115705 2 250 9 2015
12 115705 2 58,7 8 2016
13 136160 2 20 5 2016
15 136169 2 20 5 2016
16 136169 2 58,7 11 2016
17 443069 2 80 9 2016
18 443069 2 38,5 8 2016
19 005488 2 58,7 12 2016
20 015527 1 28,32 7 2017
21 080047 1 19,56 3 2017
22 080613 1 10,6 9 2017
23 443069 1 38,28 12 2017
24 015527 1 38,32 4 2018
25 115705 1 37,15 10 2018
26 080613 1 12,6 8 2015
27 136169 1 25,32 1 2018
28 080270 1 57,1 2 2017
29 136159 1 8,3 8 2018
30 005488 1 62,13 4 2015
31 115705 1 37,8 5 2016
32 443690 1 17,8 6 2017
33 080047 1 22,56 5 2018
34 126112 1 15,3 8 2015
35 080047 1 32,56 9 2016
36 080613 1 12,6 4 2017
37 115705 1 37,15 11 2018
38 080270 1 58,1 12 2015
39 136169 1 28,32 1 2016
40 015527 1 18,32 2 2017
41 443690 1 21,67 3 2018
42 080613 1 22,86 4 2015
43 080270 1 60,1 5 2016
44 136169 1 28,32 2 2017
45 080047 1 22,2 7 2018
46 126112 1 25,3 8 2016
47 443069 1 38,32 9 2016
48 136159 1 8,3 10 2017
49 115705 1 37,15 6 2018
50 136160 1 18,3 12 2015
51 005488 3 279,8 5 2017
52 005488 3 266,7 2 2018
53 015527 3 343,36 11 2018
54 080047 3 271,6 2 2018
55 080270 3 278,25 11 2018
56 080613 3 254,4 7 2016
57 080613 3 258,8 2 2018
58 080613 3 239,33 5 2018
59 126112 3 179,9 4 2017
60 136159 3 180,13 9 2018
61 136160 3 238,8 3 2015
62 136160 3 237,38 3 2016
63 136169 3 349,19 6 2017
64 136169 3 346,18 7 2017
65 443690 3 290,33 3 2018
66 015527 4 580,1 7 2017
67 015527 4 611,3 10 2018
68 080270 4 444,34 3 2016
69 080270 4 453,43 6 2017
70 080270 4 454,6 4 2018
71 115705 4 553,85 1 2017
72 126112 4 435,5 6 2017
73 136159 4 349,38 4 2016
74 136159 4 418,88 6 2017
75 136169 4 528,44 10 2018
76 443069 4 466,69 5 2017
77 443069 4 444,45 10 2018
78 443690 4 480,88 8 2016
79 443690 4 500,13 9 2017
Таблица А.7
Данные таблицы PaySumma
PayFactCD AccountCD ServiceCD PaySum PayDate PayMonth PayYear
1 005488 2 58,7 08.01.2017 12 2016
2 005488 2 40 06.01.2016 12 2015
3 005488 2 56 06.05.2018 4 2018
4 115705 2 40 10.02.2015 1 2015
5 115705 2 250 03.10.2016 9 2016
6 136160 2 20 13.06.2016 5 2016
7 136160 2 56 12.02.2018 1 2018
8 136169 2 20 22.06.2016 5 2016
9 080047 2 80 26.11.2017 10 2017
10 080047 2 80 21.11.2016 10 2016
11 080270 2 30 03.01.2017 12 2016
12 080613 2 58,5 19.07.2016 6 2016
13 115705 2 250 06.10.2015 9 2015
14 115705 2 58,7 04.09.2016 8 2016
15 136169 2 58,7 01.12.2016 11 2016
16 443069 2 80 03.10.2016 9 2016
17 443069 2 38,5 13.09.2016 8 2016
18 136160 1 18 05.02.2017 1 2017
19 015527 1 30 03.08.2017 7 2017
20 080047 1 19,56 02.04.2017 3 2017
21 080613 1 11 03.10.2017 9 2017
22 443069 1 38,28 04.02.2018 12 2017
23 015527 1 40 07.05.2018 4 2018
24 115705 1 37,15 04.11.2018 10 2018
25 080613 1 12 20.09.2015 8 2015
26 136169 1 25,32 03.02.2018 1 2018
27 080270 1 60 05.03.2017 2 2017
28 136159 1 8,3 10.09.2018 8 2018
29 005488 1 65 03.05.2015 4 2015
30 115705 1 37,8 12.07.2016 5 2016
31 443690 1 20 10.07.2017 6 2017
32 080047 1 22,56 25.06.2018 5 2018
33 126112 1 15,3 08.09.2015 8 2015
34 080047 1 32,56 18.10.2016 9 2016
35 080613 1 12,6 22.05.2017 4 2017
36 115705 1 37,15 23.12.2018 11 2018
37 080270 1 58,1 07.01.2016 12 2015
38 136169 1 28,32 08.02.2016 1 2016
39 015527 1 20 18.03.2017 2 2017
40 443690 1 19,47 10.04.2018 3 2018
41 080613 1 22,86 04.05.2015 4 2015
42 080270 1 60 07.06.2016 5 2016
43 136169 1 28,32 05.03.2017 2 2017
44 080047 1 22,2 10.08.2018 7 2018
45 126112 1 25,3 10.09.2016 8 2016
46 443069 1 38,32 09.10.2016 9 2016
47 136159 1 8,3 14.11.2017 10 2017
48 115705 1 37,15 10.08.2018 6 2018
49 136160 1 16 07.01.2016 12 2015
50 005488 3 280 10.06.2017 5 2017
51 005488 3 260 11.03.2018 2 2018
52 015527 3 345 15.12.2018 11 2018
53 080047 3 271,6 12.03.2018 2 2018
54 080270 3 278 06.12.2018 11 2018
55 080613 3 254,4 10.08.2016 7 2016
56 080613 3 258,8 08.03.2018 2 2018
57 080613 3 239,35 11.06.2018 5 2018
58 126112 3 179,9 01.05.2017 4 2017
59 136159 3 180,13 21.10.2018 9 2018
60 136160 3 240 04.04.2015 3 2015
61 136160 3 200 06.04.2016 3 2016
62 136169 3 349,19 14.07.2017 6 2017
63 136169 3 346,18 13.08.2017 7 2017
64 443690 3 295 09.04.2018 3 2018
65 015527 4 580,1 08.08.2017 7 2017
66 015527 4 611,3 03.11.2018 10 2018
67 080270 4 444,5 18.04.2016 3 2016
68 080270 4 450 14.07.2017 6 2017
69 080270 4 460 12.05.2018 4 2018
70 115705 4 553,85 02.02.2017 1 2017
71 126112 4 435,5 12.07.2017 6 2017
72 136159 4 349,38 18.05.2016 4 2016
73 136159 4 420 09.07.2017 6 2017
74 136169 4 528,44 26.11.2018 10 2018
75 443069 4 466,69 03.06.2017 5 2017
76 443069 4 444,45 16.11.2018 10 2018
77 443690 4 485 05.09.2016 8 2016
Таблица А.8
Данные таблицы Request
RequestCD AccountCD ExecutorCD FailureCD IncomingDate ExecutionDate Executed
1 005488 1 1 17.12.2016 20.12.2016 True
2 115705 3 1 07.08.2016 12.08.2016 True
3 015527 1 12 28.02.2017 08.03.2017 False
5 080270 4 1 31.12.2016 NULL False
6 080613 1 6 16.06.2016 24.06.2016 True
7 080047 3 2 20.10.2017 24.10.2017 True
9 136169 2 1 06.11.2016 08.11.2016 True
10 136159 3 12 01.04.2016 03.04.2016 False
11 136160 1 6 12.01.2018 12.01.2018 True
12 443069 5 2 08.08.2016 10.08.2016 True
13 005488 5 8 04.09.2015 05.12.2015 True
14 005488 4 6 04.04.2018 13.04.2018 True
15 115705 4 5 20.09.2015 23.09.2015 True
16 115705 NULL 3 28.12.2016 NULL False
17 115705 1 5 15.08.2016 06.09.2016 True
18 115705 2 3 28.12.2017 04.01.2018 True
19 080270 4 8 17.12.2016 27.12.2016 True
20 080047 3 2 11.10.2016 11.10.2016 True
21 443069 1 2 13.09.2016 14.09.2016 True
22 136160 1 7 18.05.2016 25.05.2016 True
23 136169 5 7 07.05.2016 08.05.2016 True
 

Цель курса - предоставить слушателям знания и навыки, необходимые для построения базовых запросов и программирования на SQL для СУБД РЕД БАЗА ДАННЫХ. 

      Авторский дистанционный курс  поставлен по одноименному учебному пособию  Маркина А.В. 

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

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux
  • Знание основ программирования
  • Базовые знания теории реляционных баз данных

По окончании курса Вы будете уметь:

  • Использовать современные базы данных
  • Создавать запросы к базам данных на языке SQL
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров
  • Управлять доступом к объектам базы данных
  • Работать с транзакциями
Материалы слушателя
Слушателям предоставляется учебное пособие и прочие материалы, необходимые для обучения.

Здесь можно проверить полученные знания.

СОДЕРЖАНИЕ

ПРЕДИСЛОВИЕ
8
ВВЕДЕНИЕ
14
ГЛАВА 1. РЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ
16
1.1. Определение реляционной модели
18
1.2. Таблицы БД
25
1.3. Первичные ключи
28
1.4. Внешние ключи
30
1.5. Реляционные связи между таблицами
31
1.6. Нормализация отношений
35
1.7. Модели баз данных на логическом и физическом уровнях
40
1.8. Целостность
44
1.9. Архитектура «клиент-сервер»
54
Контрольные вопросы и задания
57
ГЛАВА 2. ВВЕДЕНИЕ В SQL
58
2.1. Объекты структуры базы данных
58
2.2. Функции SQL
63
2.3. Достоинства SQL
69
2.4. Формы использования SQL
74
2.5. Правила синтаксиса и основные запросы SQL
79
2.6. Имена объектов в SQL. Константы, отсутствующие данные
86
2.7. Типы данных
90
2.8. Выражения
97
2.9. Комментарии
101
Контрольные вопросы и задания
103
ГЛАВА 3. ПРОГРАММИРОВАНИЕ ЗАПРОСОВ ВЫБОРКИ ДАННЫХ
104
3.1. Синтаксис запроса SELECT
104
3.2. Запросы к одной таблице
109
3.2.1. Секции SELECT и FROM
111
3.2.2. Секция WHERE
124
3.2.3. Функции в SQL
144
3.2.4. Секция GROUP BY
194
3.2.5. Секция HAVING
202
3.2.6. Секция ORDER BY
208
3.2.7. Функции для анализа данных
216
3.3. Многотабличные и вложенные запросы
227
3.3.1. Соединения таблиц
228
3.3.2. Запросы с вложенными запросами
254
3.3.3. Операторы действий над множествами
318
3.3.4. Рекурсивные подзапросы в секции WITH
328
Контрольные вопросы и задания
333
ГЛАВА 4. ПРОГРАММИРОВАНИЕ ЗАПРОСОВ ОПРЕДЕЛЕНИЯ ДАННЫХ
334
4.1. Домены
336
4.2. Создание, изменение и удаление базовых таблиц
341
4.2.1. Создание таблицы
341
4.2.2. Определение ограничений столбца
347
4.2.3. Определение ограничений таблицы
354
4.2.4. Удаление таблицы
359
4.2.5. Изменение определения таблицы
360
4.3. Индексы
371
4.4. Временные и внешние таблицы
380
4.5. Хранимые представления
385
4.6. Последовательности
399
4.7. Комментарии к объектам базы данных
404
Контрольные вопросы и задания
407
ГЛАВА 5. ПРОГРАММИРОВАНИЕ ЗАПРОСОВ МАНИПУЛИРОВАНИЯ ДАННЫМИ
408
5.1. Добавление данных
409
5.1.1. Явный запрос INSERT
411
5.1.2. Запрос INSERT с подзапросом
415
5.2. Обновление данных
419
5.2.1. Явный запрос UPDATE
421
5.2.2. Запрос UPDATE с подзапросами
423
5.3. Удаление данных
428
5.3.1. Явный запрос DELETE
429
5.3.2. Запрос DELETE с подзапросом
430
5.4. Условное манипулирование данными
435
5.4.1. Запрос UPDATE OR INSERT
435
5.4.2. Запрос MERGE
438
5.5. Обновление представлений
443
5.6. Оптимизация запросов на выборку данных
456
5.6.1. Обработка запроса в реляционных системах управления базами данных
457
5.6.2. Основные направления анализа «медленных» SQL-запросов
461
5.6.3. Рекомендации по построению и реструктуризации запросов конкретных типов
465
Контрольные вопросы и задания
473
ГЛАВА 6. ПРОЦЕДУРНОЕ И СОБЫТИЙНОЕ ПРОГРАММИРОВАНИЕ
474
6.1. Основы разработки исполняемых модулей
478
6.1.1. SQL-сценарии
480
6.1.2. Переменные
487
6.1.3. Операторы ветвления, циклов и переходов
491
6.1.4. Курсоры
496
6.1.5. Обработка исключительных ситуаций
504
6.1.6 Сообщения о событии базы данных
512
6.2. Хранимые процедуры
513
6.2.1. Определение, модификация и удаление процедур
515
6.2.2. Виды хранимых процедур
519
6.2.3. Селективные процедуры
523
6.2.4. Выполняемые процедуры
548
6.2.5. Динамический SQL
564
6.3. Хранимые функции
575
6.4. Процедурные пакеты
579
6.5. Выполнимые блоки
585
6.6. Триггеры
587
6.6.1. Триггеры DML
590
6.6.2. Триггеры DDL
615
6.6.3. Триггеры базы данных
622
Контрольные вопросы и задания
625
ГЛАВА 7. ПРОГРАММИРОВАНИЕ ЗАПРОСОВ УПРАВЛЕНИЯ ДОСТУПОМ
626
7.1. Принципы доступа к данным. Управление пользователями
627
7.2. Привилегии доступа и передача привилегий
631
7.3. SQL-роли
639
7.4. Привилегии на представления
642
7.5. Удаление привилегий
644
Контрольные вопросы и задания
647
ГЛАВА 8. УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ
648
8.1. Понятие транзакции
649
8.2. Восстановление данных
651
8.3. Параллелизм
658
Контрольные вопросы и задания
665
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
666
Лабораторная работа № 1. Основы реляционных баз данных. Учебная база данных
667
Лабораторная работа № 2. Построение запросов на выборку данных из одной таблицы
672
Лабораторная работа № 3. Селективные запросы к нескольким таблицам (соединения)
673
Лабораторная работа № 4. Построение селективных запросов с подзапросами
674
Лабораторная работа № 5. Построение запросов на определение данных
675
Лабораторная работа № 6. Построение запросов на модификацию данных
678
Лабораторная работа № 7. Программирование хранимых процедур
683
Лабораторная работа № 8. Программирование триггеров
690
Лабораторная работа № 9. Построение запросов управления доступом
695
ПРИЛОЖЕНИЯ
698
Приложение А. Описание учебного проекта «Биллинг коммунальных ресурсов и жилищных услуг»
698
Приложение Б. Описание учебной базы данных «Учет абонентов коммунального биллинга»
709
Приложение В. Системный каталог базы данных СУБД «Ред База Данных»
725
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
733



Цель курса - предоставить слушателям знания, умения и навыки, необходимые для построения базовых запросов и программирования на SQL для СУБД  Firebird SQL Server, Microsoft SQL Server и Oracle Database. 

      Авторский дистанционный курс поставлен по учебнику "Программирование на SQL" Маркина А.В. с грифом учебно-методического отдела высшего образования.

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

       Курс предназначен для начинающих администраторов и разработчиков баз данных и приложений.

Требуемая предварительная подготовка:

  • Умение работать в Windows или Linux.
  • Знание основ программирования.
  • Базовые знания теории реляционных баз данных.

По окончании курса Вы будете уметь:

  • Использовать современные системы управления реляционными базы данных.
  • Создавать запросы к базам данных на языке SQL.
  • Использовать сложные конструкции процедурного SQL для программирования хранимых процедур и триггеров.
  • Управлять доступом к объектам базы данных.
  • Работать с транзакциями.