Размер:
A A A
Цвет: C C C
Изображения Вкл.Выкл.
Обычная версия сайта
Demidov Yaroslavl State University

Наш адрес: 150003, г. Ярославль, ул. Советская, д. 14
График работы с посетителями в отделах университета:
пн, вт, ср, чт: 9.00-12.00, 14.00-17.00,
пт: 9.00-12.00, 14.00-16.00.
Приемная комиссия: +7 (4852) 303210
Ректорат: +7 (4852) 797702
Факс: +7 (4852) 255787
e-mail: rectorat@uniyar.ac.ru

Курс "База данных Oracle 11g: Программирование на SQL и PL/SQL (Oracle Database: Program with PL/SQL)"

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

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. Атрибуты триггерных процедур уровня схемы БД и событий в СУБД