PL/SQL - процедурный язык, разработанный фирмой Oracle для написания хранимых в БД подпрограмм. PL/SQL обеспечивает общую основу процедурного программирования как в клиентских приложениях, так и на стороне сервера, в том числе хранимых на сервере подпрограмм, пакетов и триггеров базы данных. Курс сопровождается практическими упражнениями, позволяющими закрепить понимание базовых понятий и освоить основные технические приемы программирования на языках SQL и PL/SQL.
По окончании курса слушатели получают возможность самостоятельного программирования Oracle на этих языках для решения задач разработки приложений в архитектуре клиент-сервер, а также задач администрирования БД.
Курс предназначен для разработчиков, программистов и администраторов баз данных. Слушатели должны обладать хорошим уровнем компьютерной грамотности, и иметь опыт программирования.
Введение в Oracle SQL 1. Основные понятия • Базы данных и реляционная модель • Базы данных • СУБД • Реляционный подход к моделированию данных • Реализация реляционной СУБД • Другие подходы к моделированию данных и другие типы СУБД • SQL .Что такое SQL ? • История и стандарты • Oracle-диалект SQL • PL/SQL 2. SQL*Plus и ввод предложений на SQL 3. Пример "схемы" базы данных 4. Создание, удаление таблиц и изменение структуры • Предложение CRE ATE TABLE • Типы данных в столбцах • Уточнения в описаниях столбцов • Указание NOT NULL • Значения по умолчанию • Проверка CHECK поступающих в таблицу значений • Создание таблиц по результатам запроса к БД • Именование таблиц и столбцов • Виртуальные столбцы • Удаление таблиц • Изменение структуры таблиц • Логические и технические особенности удаления столбца • Использование синонимов для именования таблиц • Переименования • Справочная информация о таблицах в БД 5. Основные элементы предложений DML: выражения • Непосредственные значения данных (литералы) • Числовые значения • Строки текста • Моменты и интервалы времени • "Системные переменные" • Числовые выражения • Выражения над строками текста • Выражения над типом "момент времени" • Функции • Скалярные функции • CASE-выражения • Скалярный запрос • Условные выражения • Отдельные замечания по поводу отсутствия значения в выражениях 6. Выборка данных • Фразы предложения SELECT • Общие правила построения предложения SELECT • Порядок обработки предложения SELECT • Пример 1 предложения SELECT • Пример 2 предложения SELECT • Логическая целостность обработки предложения SELECT • Фраза FR OM предложения SELECT • Варианты указания столбца • Столбцы из разных таблиц • Использование псевдонимов в запросе • Подзапрос в качестве источника данных • Специальный случай для запроса-соединения • Фраза WHERE предложения SELECT • Общий алгоритм отработки фразы WH ERE • Операторы сравнения для получения условного выражения • Связки 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. Обновление данных в таблицах • Добавление новых строк • Явное добавление строки • Добавление строк, полученных подзапросом • Добавление в несколько таблиц одним оператором • Изменение существующих значений полей • Использование умолчательных значений в INS ERT и UPDATE • Удаление строк из таблицы • Выборочное удаление • Вариант полного удаления • Комбинирование UPDATE, INS ERT и 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. Таблицы системного каталога (словаря-справочника) 17. Хранение объектов БД 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. Использование курсоров • Явные курсоры • Объявление явных курсоров • Открытие явных курсоров • Извлечение результата через явный курсор • Закрытие явного курсора • Отсутствие запрета изменений таблиц при открытом курсоре • Атрибуты для явных курсоров • Несколько примеров использования циклов и курсоров • Курсоры с блокировкой строк таблицы • Предложение SELE CT … 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 IN TO • Пример для схемы 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. Атрибуты триггерных процедур уровня схемы БД и событий в СУБД |