
- •Оглавление
- •Раздел 4. Проектирование реляционных баз данных. 113
- •Раздел 5. Определение структур данных и обслуживание баз данных. 114
- •Введение
- •Раздел 1. Основы теории баз данных Тема 1: Базы данных и информационные системы. Основные понятия.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Тема 2: Банки данных. Системы управления базами данных.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Раздел 2. Реляционная алгебра Тема1: Реляционная алгебра. Классические операции теории множеств.
- •Тема 2: Специальные операции теории множеств.
- •Раздел 3. Модели данных. Тема 1: Классические модели данных.
- •Сетевая модель представления данных.
- •Реляционная модель представления данных.
- •Элементы реляционной модели
- •Тема 2: Связывание таблиц. Целостность связей.
- •Основные виды связи таблиц.
- •Контроль целостности связей.
- •Характеристика видов связей
- •Раздел 4. Проектирование реляционных баз данных. Тема 1: Основные принципы проектирования баз данных.
- •2. Избыточное дублирование данных и аномалии
- •3. Формирование исходного отношения.
- •Тема 2: Метод нормальных форм
- •2. Выявление зависимостей между атрибутами
- •3. Нормальные формы
- •Тема 3: Метод сущность-связь. Этапы проектирования.
- •2.Этапы проектирования
- •3.Пример проектирования бд учебной части.
- •Тема 4: Правила формирования отношений.
- •2. Формирование отношений для связи 1:м
- •3. Формирование отношений для связи м:м
- •Раздел 5. Определение структур данных и обслуживание баз данных. Тема 1: Среда sql*Plus.
- •Функции.
- •2. Основные типы данных
- •3. Арифметические выражения
- •4. Операторы сравнения
- •5. Обработка неопределенных значений
- •6. Функции
- •7. Форматные модели
- •Тема 2: Структуры данных. Создание таблиц.
- •Создание таблиц.
- •3. Создание таблиц
- •Тема 3: Изменение таблиц и ограничений
- •Добавление и изменение столбца.
- •Изменение ограничений.
- •Удаление таблицы. Изменение имени таблицы и добавление комментариев.
- •Тема 4: Операции с ограничениями.
- •Тема 5: Манипулирование данными.
- •1. Вставка новых строк в таблицу
- •2. Копирование строк из другой таблицы
- •3. Обновление строк в таблице
- •4. Удаление строк из таблицы
- •Тема 6: Команда запроса данных. Простой запрос.
- •Тема 7: Сложные запросы.
- •Использование функций для работы с датами при организации запроса.
- •Тема 8: Группировка строк в запросе
- •2. Группы внутри групп.
- •3. Предложение having.
- •Тема 9: Подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •Однострочные и многострочные подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •2.Однострочные и многострочные подзапросы.
- •Тема 10: Выборка данных из нескольких таблиц.
- •2. Псевдонимы таблиц.
- •3. Дополнительные условия поиска.
- •4. Внешние соединения.
- •Select таблица.Столбец, таблица.Столбец
- •Тема 11: Создание, изменение и удаление последовательностей.
- •Создание последовательности.
- •2. Изменение и удаление последовательности.
- •3. Генерация значений последовательности.
- •Тема 12: Создание, изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Тема 13: «Индексы»
- •Понятие индекса. Необходимость использования.
- •Создание и удаление индексов.
- •1. Понятие индекса. Необходимость использования.
- •2. Создание и удаление индексов.
- •Тема 14: «Создание отчетов»
- •2. Форматирование number колонок.
- •3. Оформление Отчета пробелами и итоговыми строками.
- •4. Вычисление итоговых строк при изменении значения колонки.
- •5. Определение заголовков.
- •6. Установка размеров страницы
- •7. Сохранение и Печать Результатов Запроса
- •Тема 15: Управление транзакциями
- •Практикум Раздел 3. Реляционная алгебра.
- •Раздел 4. Проектирование реляционных баз данных.
- •Раздел 5. Определение структур данных и обслуживание баз данных.
- •Библиографический список
5. Обработка неопределенных значений
Неопределенным значением (NULL) называется недоступное, неприсвоенное, неизвестное или неприменимое значение. Неопределенное значение - это не ноль и не пробел. Издержки "хранения" неопределенного значения - это один байт внутренней памяти.
Неопределенные значения возможны в столбцах любых типов, если при создании таблицы они не были описаны как столбцы только с определенными значениями (NOT NULL) или столбцы, содержащие первичный ключ (PRIMARY KEY).
Если выражение содержит неопределенное значение в любом из столбцов, то и результатом вычисления выражения будет неопределенное значение. При попытке деления на ноль вы получите сообщение об ошибке, а результатом деления на неопределенное значение будет неопределенное значение.
Для преобразования неопределенного значения в фактическое используется функция NVL:
NVL (выражение 1, выражение 2)
где:
выражение 1 - исходное или вычисленное значение, которое может быть неопределенным
выражение 2 - значение, которое подставляется вместо неопределенного значения.
Преобразование NVL для различных типов:
Тип данных |
Пример преобразования |
|
NUMBER |
NVL (числовой столбец, 9) |
|
DATE |
NVL (столбец даты, '01-ЯНВ-95') |
|
CHAR или VARCHAR2 |
NVL (символы|столбец, 'Недоступно') |
6. Функции
В языке SQL существуют два класса функций – однострочные и групповые.
Однострочные функции принимают на вход одну строку (запроса или арифметического выражения) и выдают один результат. Этот результат, как и в случае понятия функции в любом языке программирования, связывается с ее именем. Однострочные функции могут быть разных типов: символьные; числовые; для работы с датами; функции преобразования и т.д. Аргументом однострочных функций может быть: константа, заданная пользователем; значение переменной; имя столбца таблицы; выражение.
Групповые функции принимают на входе группу строк и выдают одно значение после обработки этой группы.
Синтаксис:
имя_функции (столбец|выражение, [аргумент 1, аргумент 2, …])
Некоторые числовые функции
Функция |
Возвращаемое значение |
ABS(n) |
Абсолютное значение величины n |
CEIL(n) |
Наименьшее целое, большее или равное n |
ЕХР(n) |
e в степени n |
FLOOR(n) |
Наибольшее целое, меньшее или рапное n |
MOD(m, n) |
Остаток от деления m на n |
POWER(w, n) |
w в степени n |
ROUND(n[,m]) |
n, округленное до m позиций после десятичной точки. По умолчанию m равно нулю |
SIGN(n) |
-1 (если n<0); 0 (если n=0); 1 (если n>0) |
Некоторые символьные функции
Функция |
Возвращаемое значение |
Символьные функции, возвращающие символьные значения: |
|
СОNСАТ(сhar1,char2) |
Конкатенация символьных строк char1 и char2 |
INITCAP(char) |
Символьная строка сhar, первые буквы всех слов в которой преобразованы в прописные |
LOWER(char) |
Символьная строка char, все буквы которой преобразованы в строчные |
UPPER(char) |
Символьная строка char, в которой все буквы преобразованы в прописные |
Функции для работы с датами
Oracle хранит данные во внутреннем цифровом формате: век, год, месяц, число, часы, минуты, секунды. По умолчанию дата выдается в формате «DD-MON-YY».
Функция |
Назначение |
MONTHS_BETWEEN(date1, date2) |
Определяет число месяцев, разделяющих две даты. Дробная часть результата представляет собой долю месяца. |
ADD_MONTHS(date,n) |
Добавление календарных месяцев к дате. |
NEXT_DAY(date, ‘char’) |
Ближайшая дата, когда наступит заданный день. Аргумент ‘char’ может задавать порядковый номер или название дня недели. |
LAST_DAY(date) |
Определение последнего дня месяца, содержащего заданную дату. |
ROUND(date[, ‘fmt’]) |
Округление до целого числа суток. Если fmt=YEAR, определяет первый день года. |
TRUNC(date[, ‘fmt’]) |
Возвращает первый день месяца, указанного в аргументе date. Если fmt=YEAR, возвращает дату первого дня года. |
SYSDATE() |
Возвращает текущую дату и время. |
Функции преобразования типа
Функция |
Возвращаемое значение |
TO_CHAR (date[, 'fmt']) |
Преобразование даты в строку символов в соответствии с форматной моделью fmt. |
TO_CHAR (number[, 'fmt']) |
Преобразование числа в строку символов в соответствии с форматной моделью fmt. |
TO_NUBER (char) |
Преобразование строки символов в числовой формат. |
TO_DATE (char[, 'fmt']) |
Преобразование строки символов в формат даты в соответствии с форматной моделью fmt. |
Групповые функции
Функция |
Возвращаемое значение |
AVG([DISTINCT|ALL]n) |
Среднее значение от n, нулевые значения опускаются |
COUNT([ALL]*) |
Число строк, извлекаемых в запросе или подзапросе |
COUNT([DISTINCT|ALL] expr) |
Число строк, для которых expr принимает не пустое значение |
MAX([DISTINCT|ALL] expr) |
Максимальное значение выражения eхрr |
MIN([DISTINCT|ALL] expr) |
Минимальное значение выражения eхрr |
SUM([DISTINCT|ALL] n) |
Сумма значений n |