DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Записи таблицы

Мы уже знаем, что информация в базе данных ORACLE хранится в таблицах. В предыдущем уроке мы создали таблицы для учебного примера. Рассмотрим одну из них. Например, таблицу с позициями товаров EXPOS.
Для каждой строки воображаемой таблицы создается запись в базе данных. Значения в колонках хранятся друг за другом. В том порядке, в котором они перечислены в описании таблицы. Например, значения в колонках первой записи будут записаны в файле ORACLE друг за другом. 
При этом записи внутри таблицы хранятся беспорядочно. Это означает, что запись, добавленная первой, может быть записана в конец таблицы, а запись, добавленная второй, может быть записана в начало или середину таблицы. 
Рисунок 1. Таблица EXDOC с дубликатами.
Например. Запись первой позиции счёта номер 152 добавлена первой и записана в конец таблицы. Записи для счёта номер 139, добавлены после неё и были записаны в начало таблицы.
На порядок хранения записей не накладывается никаких ограничений. 
Следствием этого является факт: при отсутствии явных указаний при чтении информации из данных мы будем получать записи не в порядке добавления. Порядок значений внутри записи будет совпадать с порядком, в котором колонки перечислены в описании таблицы.
Ещё одно следствие. У записи нет номера, т.е. нельзя сказать: "Удали вторую запись в таблице". 
Как же указать на запись, которую хотим удалить или изменить?
Для этого необходимо описать эту запись. Отличить одну запись от другой можно только по значениям, которые в них хранятся. Другими словами, надо сказать в каких колонках, какие значения записаны. 
Например. Меня интересует вторая позиция счёта 137. Или сказать: запись, в которой колонка DOC_ND равна 137 и колонка POS_NO равна 2.
Получается, что при работе с данными таблицы необходимо прибегать к описанию записей, используя значения, которые они хранят.
Может случиться так, что под такое описание будут попадать несколько записей. 
Важно знать: команды для работы с записями изначально ориентированы на работу с группой записей.
Ещё один важный вопрос: "Как прочитать записи в нужном порядке?" 
В ряде случаев записи должны возвращаться в определенном порядке. Для этого необходимо либо определить правило задающее порядок, либо создать дополнительную колонку для хранения порядкового номера.
Например. В таблице с позициями есть колонка "Номер позиции". Колонка соответствует полю в форме счёта, придумана не нами. Записи одного счёта можно упорядочить, используя значения этой колонки. 
Для упорядочивания записей из нескольких счетов придется использовать правило. Примерно такое: выводить записи в порядке возрастания номеров счетов, записи одного счёта выводить в порядке возрастания номеров позиций.
Порядок значений в записи тоже важен. Нам придется часто его изменять. Кроме того, зачастую придется использовать не все поля записи, а только некоторые. Например. Требуется получить данные в формате: первое поле название товара, далее количество, цена и номер счёта.
Команды по работе с записями позволяют указывать список колонок, т.е. есть возможность задать порядок значений в записи. Но этот порядок будет действовать только в рамках одной команды. На порядок хранения значений в таблице он не будет влиять.

Язык манипулирования данными
Для работы с записями предусмотрены следующие операции: добавление, удаление, изменение и чтение. Эти операции в ORACLE реализованы с помощью команд манипулирования данными. Язык Data Manipulation Language (DML).
Во всех командах DML надо указывать имя таблицы. И как говорилось, они предусматривают работу с группой записей. Правило отбора записей задаётся в конструкции WHERE.
Рассмотрим самый простой синтаксис команд манипулирования данными.
Добавление одной записи. Это команда INSERT.
Для добавления записи необходимо указать имя таблицы, список колонок и список значений. Колонки могут быть указаны только те, которые хотим заполнить. Количество значений в списке должно совпадать с количеством колонок. Причём должно быть соответствие по типам данных.
Вторая команда - DELETE. Удаление записей. Очень простая. 
Для удаления записей необходимо указать имя таблицы. 
Действие команды можно распространить на группу записей, или на одну запись, или использовать для удаления всех записей таблицы. Это задаётся с помощью условия в правиле WHERE. 
Если отсутствует конструкция WHERE, то будут удалены все записи таблицы. 
Если конструкция WHERE присутствует в команде, то команда DELETE удалит только те записи, для которых выполняется указанное условие. 
Подробнее условия отбора записей разберём в практической части.
Команда изменения записей UPDATE. 
Для её выполнения также потребуется указать имя таблицы. Обязательно нужно определить, какая колонка какое значение будет принимать. Можно использовать конструкцию WHERE для задания правила отбора изменяемых записей.

Команда SELECT
Четвертая команда – SELECT, чтение записей из таблицы. "Рабочая лошадка". 
В простейшем случае она записывается так. 
Во-первых, в конструкции FROM указываем имя таблицы, из которой необходимо прочитать данные. 
Во-вторых, перечисляем колонки, значения которых нас интересуют. 
В-третьих, при необходимости дописываем конструкцию WHERE. 
В-четвертых, задаём порядок в конструкции ORDER BY. 
Список колонок может быть опущен. Вместо него можно ввести символ "*". Это означает, что необходимо получить значения из всех колонок. Порядок следования значений определяется порядком колонок в описании таблицы.
В списке колонок можно указывать арифметические выражения. На практике будем их активно использовать.
Порядок работы команды SELECT примерно таков. 
Выполняется чтение записей из таблицы, указанной в конструкции FROM. 
Каждая запись проверяется на выполнение условия, которое заданно в конструкции WHERE. 
Для каждой отобранной записи рассчитываются все арифметические выражения. Используются значения колонок этой записи. 
Записи сортируются. Правила указаны в конструкции ORDER BY.

Тестовый набор данных
Напомню, мы занимаемся разработкой программного модуля для ведения счетов. Уже подготовили структуру, создали таблицы.
На этом этапе хотелось бы знать: 
Можно ли данные счёта сохранить в этих таблицах?
Какую часть счёта мы сможем записать в таблицы, а какую нет?
Удобно ли нам работать с этими таблицами?
Кроме того, нам придется писать запросы на выборку данных из этих таблиц. 
Как проверить работу команды SELECT на пустой таблице? 
Как убедиться в её правильном написании?
Эти вопросы подталкивают к мысли, что после создания таблиц хорошо бы их чем-нибудь и как-нибудь наполнить. 
Чем наполнять? Желательно реальными данными. Взять их можно из описания задачи, из образцов первичных документов. Или из отчетов, которые к ней прилагаются. В общем, поищите реальные данные. Это самый простой способ. Желательно найти несколько вариантов.
Стоит отметить следующее. Во-первых. В задании на разработку зачастую есть описание всевозможных правил заполнения, исключительных ситуаций, памяток и т.д. Это может быть оговорено явно или передаваться "из уст в уста".
Во-вторых. Часто бывает, что в описании задачи есть порядок расчёта той или иной величины. Например, это может быть "интуитивно" понятная формула или словесное описание алгоритма.
Хотим мы того или нет, но нам нужно будет со всем этим работать. И с "исключениями", и с "интуитивно" понятными формулами. Придется специально подготовить данные. Они будут учитывать то или иное "исключительное" правило, а возможно и комбинацию правил.
Итак. Для работы нужно подготовить один или несколько тестовых наборов данных. Чем раньше начнете готовить, тем легче будет.
Оформить тестовые наборы можно в форме "распечатки", таблицы Excel. И конечно нужно иметь скрипт ввода тестового набора и скрипт для его удаления.
В нашем случае возьмем данные из формы учебного примера.

Алгоритм расчёта стоимости услуг
Учебный пример предполагает, что стоимости услуг рассчитываются по алгоритму. Рассмотрим его подробнее.
Рисунок 2. Расчёт стоимости упаковки.
Расчёт услуг упаковки выполняется с использованием таблицы. Она определяет размер партии для штучных товаров. Сколько единиц товара составляют партию. Указан вес одной партии в килограммах и стоимость упаковки.
Например. Если продаем стеклянные банки, то партией считается одна банка и стоимость упаковки равна 1 рубль. Если счёт выписан на медицинские пробки, то партия состоит из 10 пробок и стоимость упаковки будет составлять 1 рубль 50 копеек.
Расчёт услуг на доставку товара выполняется следующим образом. 
Рисунок 3. Расчёт стоимости доставки.
Для каждой позиции счёта рассчитывается вес: определяем количество партий, находим вес одной партии и рассчитываем общий вес. Далее суммируем вес всех позиций с товаром, т.е. находим общий вес всех товаров по счёту. 
Определяем стоимость доставки исходя из общего веса. 
Если до 100 кг, то доставка будет 1 рубль 80 копеек. Если вес от 100 до 200 кг, то стоимость будет 4 рубля 70 копеек. Доставка веса больше 200 кг, обойдется покупателю в 6 рублей.
 


Оружейные сейфы оптом Владивосток. Оружейные сейфы оптом Якутск. . Ремонт компьютеров Москва: починить компьютер. Починить компьютер? Звоните. . купить диплом в москве







jAntivirus