1. Происхождение и объем диалекта SQL фирмы Oracle
1.1. База данных и модель данных
1.1.1. База данных
1.1.2. СУБД
1.1.3. Реляционный подход к моделированию данных
1.1.4. Программное воплощение реляционной СУБД
1.1.5. Другие подходы к моделированию данных и другие типы СУБД
1.2. SQL
1.2.1. Что такое SQL ?
1.2.2. История и стандарты
1.2.3. Диалект SQL в СУБД Oracle
1.3. PL/SQL
2. Инструменты для общения с базой данных
3. Данные для дальнейших примеров
3.1. Таблицы
3.2. Пользователи и полномочия
4. Создание, удаление и изменение структуры таблиц
4.1. Предложение CREATE TABLE
4.2. Типы данных в столбцах
4.2.1. Числовые типы
4.2.2. Строки текста
4.2.3. Строки байтов
4.2.4. Моменты и интервалы времени
4.3. Общие свойства типов
4.3.1. Пропущенные значения и NULL
4.3.2. Сравнение величин на равенство
4.4. Уточнения возможных значений в столбцах
4.5. Свойства столбцов, не связанные со значениями
4.5.1. Шифрованное хранение
4.5.2. Виртуальные столбцы
4.6. Создание таблиц по результатам запроса к БД
4.7. Именование таблиц и столбцов
4.8. Удаление таблиц
4.8.1. Простое удаление
4.8.2. Мусорная корзина
4.9. Изменение структуры таблиц
4.9.1. Добавление столбца
4.9.2. Изменение типа столбца
4.9.3. Добавление и упразднение умолчательных значений в столбце и ограничений целостности
4.9.4. Удаление столбца
4.9.5. Технологии повышения производительности
4.10. Переименования
4.11. Использование синонимов для именования таблиц
4.12. Справочная информация о таблицах и прочих объектах в БД
5. Общие элементы запросов и предложений DML: выражения
5.1. Исходные значения
5.1.1. Явно обозначенные величины («литералы»)
5.1.2. «Системные переменные» и «псевдостолбцы»
5.1.3. Величины, взятые из полей строк таблицы
5.2. Составные выражения
5.2.1. Арифметические операции и числовые выражения
5.2.2. Простые выражения над строками текста
5.2.3. Операции над типами «момент» и «интервал времени»
5.2.4. Функции
5.2.5. Конструкции (операторы) CASE для построения выражений
5.2.6. Скалярный запрос
5.2.7. Условные выражения
5.3. Отдельные замечания по поводу отсутствия значения в выражениях
6. Выборка данных
6.1. Фразы предложения SELECT
6.1.1. Логический порядок обработки предложения SELECT
6.1.2. Пример 1 предложения SELECT
6.1.3. Пример 2 предложения SELECT
6.2. Логическая целостность обработки предложением SELECT
6.3. Фраза FROM предложения SELECT
6.3.1. Варианты указания таблицы-источника во фразе FROM и поля строки в остальных фразах
6.3.2. Использование псевдонимов в запросе
6.3.3. Подзапрос в качестве источника данных
6.3.4. Указание для таблицы пробной выборки строк
6.3.5. Специальный синтаксис для запроса-соединения
6.3.6. Физический адрес ROWID строки в таблице
6.4. Фраза WHERE предложения SELECT
6.4.1. Операторы сравнения значений
6.4.2. Логические операторы AND, OR и NOT в логических выражениях
6.4.3. Вычисление составного логического выражения
6.4.4. Условный оператор IS
6.4.5. Условный оператор LIKE
6.4.6. Условный оператор REGEXP_LIKE
6.4.7. Условный оператор BETWEEN
6.4.8. Условный оператор IN с явно перечисляемым множеством
6.4.9. Условный оператор IN с множеством, получаемым из БД
6.4.10. Кванторы ANY и ALL при сравнении с элементами множества значений
6.4.11. Условный оператор EXISTS
6.4.12. Псевдостолбец ROWNUM и особенности его использования
6.5. Фраза SELECT и функции в предложении SELECT
6.5.1. Сокращенная запись для «всех столбцов таблицы»
6.5.2. Выражения во фразе SELECT
6.5.3. Именование столбцов в результате запроса
6.5.4. Уточнение DISTINCT (UNIQUE)
6.5.5. Агрегатные функции в предложении SELECT
6.5.6. Аналитические функции
6.5.7. Выражение типа ссылка на курсор
6.6. Соединение фраз SELECT и FROM фразами PIVOT/UNPIVOT
6.6.1. Разворачивание данных в столбцы указанием PIVOT
6.6.2. Сворачивание данных в столбец указанием UNPIVOT
6.7. Фраза ORDER BY предложения SELECT
6.7.1. Простейшая сортировка
6.7.2. Упорядочение по значению выражения
6.7.3. Указание номера столбца
6.7.4. Упорядочение текстовых значений: двоичное и по правилам языка
6.7.5. Особенности обработки отсутствующих значений при сортировке
6.8. Фразы GROUP BY и HAVING предложения SELECT
6.8.1. Пример отработки фразы GROUP BY … HAVING
6.8.2. Отсутствие значения в выражении для группировки
6.8.3. Другие примеры
6.8.4. Указание ROLLUP, CUBE и GROUPING SETS в во фразе GROUP BY
6.8.5. Несамостоятельность группировки с обобщениями ROLLUP, CUBE и GROUPING SETS
6.9. Фраза CONNECT BY предложения SELECT
6.9.1. Хранение древовидно зависимых данных в БД
6.9.2. Примеры запросов по дереву
6.9.3. Фильтрация узлов дерева
6.9.4. Специальные системные функции в предложениях с CONNECT BY
6.9.5. Упорядочение результата
6.9.6. Обработка зацикливания
6.9.7. Недревовидная иерархия
6.10. Комбинирование результатов SELECT множественными операциями
6.10.1. Сложение строк — результатов SELECT оператором UNION
6.10.2. Пересечение результатов SELECT оператором INTERSECT
6.10.3. Вычитание результатов SELECT оператором MINUS
6.10.4. Общие правила
6.11. Операция соединения в предложении SELECT
6.11.1. Виды соединений
6.11.2. Предостерегающй пример использования полуоткрытого соединения
6.11.3. Типовой пример употребления полуоткрытого соединения
6.11.4. Синтаксис стандарта SQL:1999 для операции соединения
6.11.5. Сравнение собственного синтаксиса Oracle SQL для открытых соединений и стандартного
6.12. Подзапросы и разложение запроса на подзапросы
6.12.1. Подзапросы в тексте запроса
6.12.2. Вынесенные подзапросы, или разложение запроса на подзапросы с помощью фразы WITH
6.12.3. Вынесение определений подзапросов ради удобства формулировки
6.12.4. Формулирование рекурсивных запросов
7. Обновление данных в таблицах
7.1. Добавление новых строк
7.1.1. Добавление одной строки
7.1.2. Добавление строк, полученных подзапросом
7.1.3. Добавление строк одним оператором в несколько таблиц
7.2. Изменение существующих значений полей строк
7.3. Общие свойства INSERT и UPDATE
7.3.1. Использование умолчательных значений в INSERT и UPDATE
7.3.2. Аномалия проверки занесенного в БД значения
7.4. Удаление строк из таблицы
7.4.1. Выборочное удаление
7.4.2. Вариант полного удаления
7.5. Объединение INSERT, UPDATE и DELETE в одном операторе
7.6. Целостность выполнения операторов обновления данных и реакция на ошибки
7.6.1. Реакция на ошибки в процессе исполнения
7.6.2. Особая реакция на ошибки нарушения уникальности при выполнении оператора INSERT
7.7. Запрет на изменение данных в таблице
7.8. Фиксация или отказ от изменений в БД
7.8.1. Данные о номере последней транзакции, изменившей строку таблицы
7.9. Обращение с прошлыми данными после внесения изменений
7.9.1. Обращение к прошлым значениям данных в таблице
7.9.2. Восстановление данных существующих таблиц, ранее удаленных таблиц и всей БД
8. Объявленные ограничения целостности
8.1. Разновидности объявленных ограничений целостности
8.1.1. Ограничение NOT NULL
8.1.2. Первичные ключи
8.1.3. Уникальность значений в столбцах
8.1.4. Внешние ключи
8.1.5. Дополнительное условие для занесения значений в поля строки
8.2. Добавление ограничения с отказом от проверки соответствия имеющимся данным
8.3. Приостановка проверки объявленных ограничений в пределах транзакции
8.4. «Долговременное» отключение ограничений целостности
8.4.1. Технология включения и выключения объявленных ограничений целостности
8.5. Более сложные правила целостности
9. Представления данных, или же виртуальные таблицы (views)
9.1. Примеры определений представлений данных
9.2. Обновление БД через представления данных
9.3. Ограничения целостности для представлений данных
9.3.1. Запрет непосредственных обновлений
9.3.2. Сужение возможности непосредственных обновлений
9.4. Материализованные (овеществленные) представления данных
9.5. Особенности именованых представлений данных
9.6. Представления данных, встроенные в запрос
10. Объектные типы данных в Oracle
10.1. Программируемые типы данных и объекты в БД
10.1.1. Простой пример
10.1.2. Таблицы с объектными столбцами
10.1.3. Таблицы объектов
10.1.4. Ссылки на объекты
10.1.5. Пример использования методов объектов
10.2. Коллекции
10.2.1. Вложенные таблицы
10.2.2. Массивы VARRAY
10.2.3. Перевод данных в коллекции к табличному представлению и другие возможности
10.2.4. Различия в употреблении
10.3. Тип XMLTYPE
10.3.1. Простой пример
10.3.2. Таблицы данных типа XMLTYPE
10.3.3. Преобразование табличных данных в тип XMLTYPE
10.4. Тип ANYDATA
11. Вспомогательные виды хранимых объектов
11.1. Генератор последовательности из чисел
11.1.1. Создание и использование генератора
11.1.2. Изменение свойств генератора
11.1.3. Применение генератора чисел
11.2. Каталог операционной системы
11.3. Связь с другой БД
11.4. Подпрограммы
11.5. Индексы
11.5.1. Индексы в БД в Oracle
11.5.2. Индексы для проверки объявленных ограничений целостности
11.6. Таблицы с временным хранением строк
11.7. Таблицы с внешним хранением данных
11.7.1. Таблицы с драйвером ORACLE_LOADER загрузчика данных
11.7.2. Таблицы с драйвером ORACLE_DATAPUMP перекачки данных
12. Некоторые общие свойства объектов хранения разных видов
12.1. Пространства имен для объектов в Oracle
12.2. Редакции объектов БД в Oracle
12.2.1. Создание редакций для объектов и управление ими
12.2.2. Настройка на работу с нужной редакцией
12.2.3. Пример создания и использования разных редакций представления данных (view)
12.2.4. Методология использования в связи с изменением структуры таблиц
13. Некоторые замечания по оптимизации выполнения предложений SQL
13.1. Сокращение вычислений при локализации объектов доступа
13.2. Отказ от повторных вычислений выражений
13.3. Оптимизация вычисления составного логического выражения
13.4. Переформулировка для сокращение объема обрабатываемых строк
13.5. Возможность использовать индекс для доступа к строкам таблицы
14. Транзакции и блокировки
14.1. Транзакции в Oracle
14.1.1. Команды COMMIT и ROLLBACK
14.1.2. Команды ROLLBACK и ROLLBACK TO SAVEPOINT
14.1.3. Команда SET TRANSACTION
14.2. Пример блокирования действий в транзакции
14.3. Замки, их типы, режимы наложения и правила совместимости
14.4. Неявные блокировки при операциях DML
14.4.1. Влияние внешних ключей
14.5. Явное наложение замка типа TM на таблицу командой LOCK TABLE
14.6. Явная блокировка групп строк в таблицах
14.6.1. Групповая блокировка исключительно свободных строк
14.7. Другие замки, способные блокировать доступ к данным
14.7.1. Замки доступа, используемые предложениями DDL
14.7.2. Замки доступа к версиям редакций объектов
15. Таблицы словаря-справочника
16. Встроенный SQL
Некоторые примеры составления запросов
17. Запрос первых N записей
17.1. Вопрос к БД
17.2. «Очевидное», но неправильное решение
17.3. Правильные решения
18. Декартово произведение
19. Ловушка условия с отрицанием NOT
20. Ловушка в NOT IN ( S )
21. Типичная ошибка в составлении полуоткрытых соединений
Дополнение
22. Дополнительные сведения об аналитических функциях
22.1. Сравнение с обычными функциями агрегирования
22.2. Разбиение данных на группы для вычислений
22.3. Упорядочение в границах отдельной группы
22.4. Выполнение вычислений для строк в группе по плавающему окну (интервалу)
22.4.1. Формирование интервалов агрегирования «по строкам» и «по значениям»
22.4.2. Функции FIRST_VALUE и LAST_VALUE для интервалов агрегирования
22.4.3. Интервалы времени