- •1. Создадим таблицу для шапки счетов. Вводим команду.
- •Удаление таблицы
- •Подготовка скрипта для создания всех таблиц
- •Р исунок 1. Таблица exdoc с дубликатами.
- •Язык манипулирования данными
- •Команда select
- •Тестовый набор данных
- •Добавление записи в таблицу exdoc
- •Расчёт суммы за товар
- •Расчёт стоимости услуг упаковки
- •4. Можно на калькуляторе сложить все полученные значения и записать в таблицу услуг. Но…
- •5. Рассчитываем сумму услуг упаковки для всех позиций счёта. Отредактируем команду следующим образом.
- •6. Напишем команду, которая запишет рассчитанное значение в таблицу с услугами.
- •Расчёт услуг доставки
- •3. Запишем стоимость доставки в таблицу.
- •Расчёт общих сумм по счёту
- •Типы правил проверки данных
- •Практическая польза от уникальности записей
- •Обязательные для заполнения колонки
- •Дублирование записей
- •Создание первичного ключа
- •Пересоздание таблицы с позициями счетов
- •Добавим проверку значений
- •Правка таблицы с услугами
- •Создание последовательности
- •Начало и завершение транзакции
- •Проверка команды rollback
- •Выполнение команд с ошибками
- •Язык pl/sql
- •Команды программы sql*Plus
Подготовка скрипта для создания всех таблиц
1. Создадим скрипт для программы SQL*Plus. Скрипт будет создавать три таблицы из учебного примера.
Перейдем в текстовый редактор…
edit
… вводим следующий текст:
drop table exsvc
/
drop table expos
/
drop table exdoc
/
start cre_exdoc
start cre_expos
start cre_exsvc
desc exdoc
desc expos
desc exsvc
Все команды понятны? Три команды на удаление таблиц. Три команды start запускают команды, которые создают таблицы. Три команды SQL*Plus выводят описание таблиц.
2. Сохраним в файле.
save cre_base
3. Выполним скрипт.
start cre_base
Смотрим листинг: таблицы удалены; таблицы созданы; выведена структура первой таблицы exdoc; второй expos; третьей exsvc.
4. Закрываем программу SQL*Plus.
Смотрим содержимое рабочей папки. Видим 6 файлов: ярлык запуска SQl*Plus, служебный файл текстового редактора afiedt.buf, 4 файла с расширением sql.
Теперь знаем
Язык описания данных DDL:
CREATE TABLE
DROP TABLE
типы данных: number, varchar2, date
Команды SQL*Plus:
connect
disconnect
list
edit
/
desc
save
start
Лекция 4: Работа с данными. Записи.
Записи таблицы
Мы уже знаем, что информация в базе данных ORACLE хранится в таблицах. В предыдущем уроке мы создали таблицы для учебного примера. Рассмотрим одну из них. Например, таблицу с позициями товаров EXPOS.
Для каждой строки воображаемой таблицы создается запись в базе данных. Значения в колонках хранятся друг за другом. В том порядке, в котором они перечислены в описании таблицы. Например, значения в колонках первой записи будут записаны в файле ORACLE друг за другом.
При этом записи внутри таблицы хранятся беспорядочно. Это означает, что запись, добавленная первой, может быть записана в конец таблицы, а запись, добавленная второй, может быть записана в начало или середину таблицы.
Р исунок 1. Таблица exdoc с дубликатами.
Например. Запись первой позиции счёта номер 152 добавлена первой и записана в конец таблицы. Записи для счёта номер 139, добавлены после неё и были записаны в начало таблицы.
На порядок хранения записей не накладывается никаких ограничений.
Следствием этого является факт: при отсутствии явных указаний при чтении информации из данных мы будем получать записи не в порядке добавления. Порядок значений внутри записи будет совпадать с порядком, в котором колонки перечислены в описании таблицы.
Ещё одно следствие. У записи нет номера, т.е. нельзя сказать: "Удали вторую запись в таблице".
Как же указать на запись, которую хотим удалить или изменить?
Для этого необходимо описать эту запись. Отличить одну запись от другой можно только по значениям, которые в них хранятся. Другими словами, надо сказать в каких колонках, какие значения записаны.
Например. Меня интересует вторая позиция счёта 137. Или сказать: запись, в которой колонка DOC_ND равна 137 и колонка POS_NO равна 2.
Получается, что при работе с данными таблицы необходимо прибегать к описанию записей, используя значения, которые они хранят.
Может случиться так, что под такое описание будут попадать несколько записей.
Важно знать: команды для работы с записями изначально ориентированы на работу с группой записей.
Ещё один важный вопрос: "Как прочитать записи в нужном порядке?"
В ряде случаев записи должны возвращаться в определенном порядке. Для этого необходимо либо определить правило задающее порядок, либо создать дополнительную колонку для хранения порядкового номера.
Например. В таблице с позициями есть колонка "Номер позиции". Колонка соответствует полю в форме счёта, придумана не нами. Записи одного счёта можно упорядочить, используя значения этой колонки.
Для упорядочивания записей из нескольких счетов придется использовать правило. Примерно такое: выводить записи в порядке возрастания номеров счетов, записи одного счёта выводить в порядке возрастания номеров позиций.
Порядок значений в записи тоже важен. Нам придется часто его изменять. Кроме того, зачастую придется использовать не все поля записи, а только некоторые. Например. Требуется получить данные в формате: первое поле название товара, далее количество, цена и номер счёта.
Команды по работе с записями позволяют указывать список колонок, т.е. есть возможность задать порядок значений в записи. Но этот порядок будет действовать только в рамках одной команды. На порядок хранения значений в таблице он не будет влиять.