Курсы High Tech

Системы управления базами данных

Oracle. Программирование на SQL, PL/SQL - дистанционно!


Продолжительность: 40 ч    

Описание курса

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

Для грамотного использования Oracle необходимо иметь хорошее понимания языка SQL. Этот 5-тидневный курс раскрывает полный спектр возможностей языка SQL в Oracle и ряд аспектов неочевидных особенностей построения типовых конструкций БД.

PL/SQL - процедурный язык, разработанный фирмой Oracle для написания хранимых в БД подпрограмм. PL/SQL обеспечивает общую основу процедурного программирования как в клиентских приложениях, так и на стороне сервера, в том числе хранимых на сервере подпрограмм, пакетов и триггеров базы данных.

Знания даются для версий Oracle 8i, 9i, 10g, 11g и 12с. Курс сопровождается практическими упражнениями, позволяющими закрепить понимание базовых понятий и освоить основные технические приемы программирования на языках SQL и PL/SQL.

По окончании курса слушатели получают возможность самостоятельного программирования Oracle на этих языках для решения задач разработки приложений в архитектуре клиент-сервер, а также задач администрирования БД.

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

ДИСТАНЦИОННОЕ обучение проводится по скайпу (не бизнес-версия), с подключением к vpn – серверу учебного центра с очным участием тренера (слушателям курса направляется инструкция по подключению).
Работа ведется в активном режиме с выполнением лабораторных работ согласно программе курса.

Программа курса

Введение в Oracle SQL

1. Основные понятия

Базы данных и реляционная модель
Базы данных
СУБД
Реляционный подход к моделированию данных
Реализация реляционной СУБД
Другие подходы к моделированию данных и другие типы СУБД
Что такое SQL ?
История и стандарты
Oracle-диалект SQL
PL/SQL

2. SQL*Plus и ввод предложений на SQL

3. Пример "схемы" базы данных

4. Создание, удаление таблиц и изменение структуры

Предложение CREATE TABLE
Типы данных в столбцах
Уточнения в описаниях столбцов
Указание NOT NULL
Значения по умолчанию
Проверка CHECK поступающих в таблицу значений
Создание таблиц по результатам запроса к БД
Именование таблиц и столбцов
Виртуальные столбцы
Удаление таблиц
Изменение структуры таблиц
Логические и технические особенности удаления столбца
Использование синонимов для именования таблиц
Переименования
Справочная информация о таблицах в БД

5. Основные элементы предложений DML: выражения

Непосредственные значения данных (литералы)
Числовые значения
Строки текста
Моменты и интервалы времени
"Системные переменные"
Числовые выражения
Выражения над строками текста
Выражения над типом "момент времени"
Функции
Скалярные функции
CASE-выражения
Скалярный запрос
Условные выражения
Отдельные замечания по поводу отсутствия значения в выражениях

6. Выборка данных

Фразы предложения SELECT
Общие правила построения предложения SELECT
Порядок обработки предложения SELECT
Пример 1 предложения SELECT
Пример 2 предложения SELECT
Логическая целостность обработки предложения SELECT
Фраза FROM предложения SELECT
Варианты указания столбца
Столбцы из разных таблиц
Использование псевдонимов в запросе
Подзапрос в качестве источника данных
Специальный случай для запроса-соединения
Фраза WHERE предложения SELECT
Общий алгоритм отработки фразы WHERE
Операторы сравнения для получения условного выражения
Связки AND, OR и NOT для комбинирования условных выражений
Условный оператор IS
Условный оператор LIKE
Условный оператор BETWEEN
Условный оператор IN с явно перечисляемым множеством
Условный оператор IN с множеством, получаемым из БД
Условия сравнения с подзапросом
Указание ANY и ALL для сравнения с элементами множества значений
Условный оператор EXISTS
Фраза SELECT и функции в предложении SELECT
Сокращенная запись для группового отбора столбцов
Выражения во фразе SELECT
Подзапросы во фразе SELECT
Уточнение DISTINCT
Особенности поведения стандартных агрегатных функций в предложении SELECT
Именование столбцов в результате запроса
Системная функция ("переменная") ROWNUM и особенности ее использования
Аналитические функции
Выражение типа ссылка на курсор
Фраза ORDER BY предложения SELECT
Простейшая сортировка
Упорядочение по значению выражения
Указание номера столбца
Двоичное и "языковое" упорядочение строк
Особенности обработки отсутствующих значений (NULL)
Фразы GROUP BY и HAVING предложения SELECT
Пример отработки фразы GROUP BY … HAVING
Отсутствие значения в выражении для группировки
Другие примеры
Указание ROLLUP, CUBE и GROUPING SETS в во фразе GROUP BY
Фраза CONNECT BY предложения SELECT
Специальные системные функции в предложениях с CONNECT BY
Упорядочение результата
Фраза WITH предварительной формулировки подзапросов
Комбинирование предложений SELECT
Комбинирование оператором UNION
Комбинирование оператором INTERSECT
Комбинирование оператором MINUS
Подзапросы
Операция соединения в предложении SELECT
Виды соединений
Новый синтаксис в версии 9
Особенности выполнения операции соединения

7. Обновление данных в таблицах

Добавление новых строк
Явное добавление строки
Добавление строк, полученных подзапросом
Добавление в несколько таблиц одним оператором
Изменение существующих значений полей
Использование умолчательных значений в INSERT и UPDATE
Удаление строк из таблицы
Выборочное удаление
Вариант полного удаления
Комбинирование UPDATE, INSERT и DELETE в одном операторе
Логическая целостность операторов обновления данных таблиц и реакция на ошибки
Реакция на ошибки в процессе исполнения
Фиксация изменений в БД
Данные о системном номере изменения для строки
Ускорение выполнения COMMIT

8. Быстрое обращение к прошлым значениям данных

Чтение старых значений строк таблицы
Восстановление таблиц и данных ранее удаленных таблиц

9. Схемные ограничения целостности

Разновидности схемных ограничений целостности
Ограничение NOT NULL
Первичные ключи
Уникальность значений в столбцах
Внешние ключи
Дополнительное условие для значения в поле строки
Дополнительное условие, связывающее значения в нескольких полях строки
Добавление ограничения при наличии нарушений
Приостановка проверки схемных ограничений в пределах транзакции
Отключение и включение схемных ограничений целостности
Технология включения и выключения схемных ограничений целостности
Более сложные правила целостности

10. Виртуальные таблицы (производные, выводимые: views)

Основные ("базовые") и виртуальные таблицы
Обновление виртуальных таблиц
Ограничения прямой модификации данных через виртуальные таблицы
Запрет непосредственных обновлений
Сужение возможности непосредственных обновлений
Виртуальные таблицы с хранием данных
Особенности именованых виртуальных таблиц
Неименованые виртуальные таблицы без хранения данных

11. Нескалярные типы для "сложно устроенных" данных в Oracle

Хранимые объекты
Простой пример
Использование свойств и методов объектов
Использование ссылок на объект
Коллекции
Вложенные таблицы
Массивы VARRAY
Тип XMLTYPE
Простой пример
Таблицы данных XMLTYPE
Преобразование табличных данных в тип XMLTYPE
Тип ANYDATA

12. Вспомогательные виды хранимых объектов

Генератор уникальных номеров
Каталог операционной системы
Таблицы с данными временного хранения
Ссылка на другую БД
Подпрограммы
Индексы
Индексы для проверки схемных ограничений целостности
Таблицы с внешним хранением данных

13. Некоторые замечания по оптимизации SQL-предложений

14. Транзакции и блокировки

Транзакции в Oracle
Примеры блокировок данных транзакциями
Разновидности блокировок
Неявные блокировки при операциях DML
Влияние внешних ключей
Явная блокировка таблиц (тип TM) командой LOCK
Явная блокировка отдельных строк таблиц
Недокументированная разновидность групповой блокировки
Блокировки предложениями DDL

15. Пользователи (схемы) и дополнительные средства разграничения доступа к данным

16. Таблицы системного каталога (словаря-справочника)

18. Встроенный SQL

Некоторые примеры составления запросов
19. Выдать сотрудников в соответствии с большим (меньшим) окладом

Вопрос к БД
"Очевидное", но неправильное решение
Правильные решения
Решение типа top-N (начиная с версии 8.1.5)
Решение с использованием аналитических функций ранжирования

20. Переформулировка запроса с HAVING

21. Декартово произведение

22. Ловушка условия с отрицанием NOT

23. Ловушка в NOT IN (S)

Введение в PL/SQL

1. Основные понятия

Место PL/SQL в архитектуре Oracle
Общая структура программы на PL/SQL

2. Основные типы и структуры данных

Скалярные переменные
Числовые типы
Строковые типы
Моменты времени и интервалы
Булевы переменные
LOB-типы
Объявление переменных и постоянных
Записи
Объявление записей в программе
Присвоения
Ссылка на типы уже имеющихся данных
Пользовательские подтипы

3. Выражения

4. Основные управляющие структуры

Ветвление программы
Предложение IF-THEN
Предложение IF-THEN-ELSE
Предложение IF-THEN-ELSIF
Предложения CASE
Безусловная передача управления
Циклы
Простой цикл
Счетный цикл (FOR)
Цикл по курсору (FOR)
Цикл WHILE
Имитация цикла REPEAT UNTIL
Метки в циклах и в блоках

5. Подпрограммы

Локальные подпрограммы
Переопределение "внешних" имен
Предваряющие (forward) объявления
Повторение имен на одном уровне (overloading)

6. Взаимодействие с базой данных: статический SQL
Использование записей вместо (списка) скаляров

7. Регулирование изменений в БД

Управление транзакциями
Блокировки
Автономные транзакции

8. Встроенный динамический SQL

Операторы встроенного динамического SQL
Сравнительный пример двух способов работы с динамическим SQL

9. Использование курсоров

Явные курсоры
Объявление явных курсоров
Открытие явных курсоров
Извлечение результата через явный курсор
Закрытие явного курсора
Отсутствие запрета изменений таблиц при открытом курсоре
Атрибуты для явных курсоров
Несколько примеров использования циклов и курсоров
Курсоры с блокировкой строк таблицы
Предложение SELECT … FOR UPDATE
Предосторожности употребления курсоров с блокировкой
Возможность изменять строки, выбираемые курсором
Ссылки на курсор
Общие сведения
Пример употребления для структуризации программы
Неявные курсоры

10. Обработка исключительных ситуаций

Объявление исключительных ситуаций
Примеры обработки
Порождение исключительных ситуаций
Зона действия и распространение
"Внутренние" исключительные ситуации блока
Использование функций SQLCODE и SQLERRM

11. Хранимые процедуры и функции

Общий синтаксис
Параметры
Тип параметра
Режим использования параметра
Значения по умолчанию
Способы указать фактические значения параметрам
Обращение к параметрам и к локальным переменным в теле подпрограммы
Взаимные вызовы и повторения имен
Указания компилятору при создании подпрограмм
Хранимые подпрограммы и привилегии доступа к данным в БД
Две логики реализации привилегий доступа к данным БД
Особенности передачи привилегий через роли

12. Триггерные процедуры

Создание триггерной процедуры
Отключение триггерных процедур
Триггерные процедуры для событий категории DML
Комбинированные триггерные процедуры
Управление транзакциями в теле триггерной процедуры
Последовательность срабатывания триггерных процедур, когда их несколько
Триггерные процедуры INSTEAD OF для выводимых таблиц
Триггерные процедуры для событий категории DDL
Триггерные процедуры для событий уровня схемы и БД

13. Пакеты в PL/SQL

Общая структура пакета
Обращение к элементами пакета
(Глобальные) данные пакета
Взаимные вызовы и повторения имен
Инициализация пакета
Прагма SERIALLY_REUSABLE

14. Вызов функций PL/SQL в предложениях SQL

Требования и ограничения на применение функций пользователей в SQL
Обращение в SQL к функциям из состава пакетов
Разрешение конфликта имен столбцов и функций
Табличные функции в SQL

15. Более сложные типы данных: коллекции

Синтаксис объявления типов для коллекций
Работа с ассоциативными массивами
Создание вложенной таблицы и массива VARRAY в программе
Добавление и убирание элементов в коллекциях
Множественные действия с коллекциями
Преобразования коллекций
Методы для работы с коллекциями в программе
Примеры использования коллекций в программе
Привилегии
Серийное выполнение и привязывание запросов к массивам
Серийное выполнение однотипных операций: конструкция FORALL
Привязка массивами: конструкция BULK COLLECT INTO
Пример для схемы SCOTT
Использование коллекций в табличных функциях (потоковой реализации)
Простой пример
Использование для преобразования данных

16. Отладка процедур в PL/SQL

Таблицы словаря-справочника
Зависимости подпрограмм
Системные пакеты
Пакет DBMS_PROFILER
Пакет DBMS_TRACE
Функции пакета DBMS_UTILITY
Пакет DBMS_DEBUG
Пример построения профиля работы программы

17. Системы программирования для PL/SQL

18. Системные пакеты PL/SQL

Пакеты STANDARD и DBMS_STANDARD
Прочие системные пакеты
Запись данных из программы в файл и обратно
Шифрование данных
Автоматический запуск заданий в Oracle
Управление динамическим размещением объектов в библиотечном буфере
Манипулирование большими неструктурированными объектами NULL
Доступ к старым значениям данных
Рассылка сообщений из программы на PL/SQL
Возможности работы в PL/SQL с COM Automation
Дополнительные сведения

19. Примеры употребления ссылки на курсор для разделения обработки запроса

Простой пример разделения открытия курсора и обработки
Более сложный пример разделения работы

20. Атрибуты триггерных процедур уровня схемы БД и событий в СУБД