DeepEdit!

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

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

Добавление записей в таблицы

Подключаемся к учебной базе данных: запускаем SQL*Plus; вводим имя пользователя, пароль, строку соединения с базой данных.

Добавление записи в таблицу EXDOC
1. Вспомним структуру таблицы c шапками счетов. Введём команду.
desc exdoc
2. Вводим команду для добавления записи в таблицу. 

insert into exdoc
( doc_nd
, doc_dd
, customer_n
, address
, total_cost
, total_tax
, total_doc)
values
( 137
, '12-sep-2003'
, 'Морейнис А. Н.'
, 'ул. Рабочая канавка д.12, кв.37'
, 5391.60
, 959.52
, 6351.12)
Вспоминаем синтаксис команды INSERT. Обязательно указываем имя таблицы. Перечисляем список колонок, для каждой указываем значение. Данные взяли из формы счёта в учебном примере. Общие итоги вводим уже рассчитанные – перебиваем из формы.
Обратите внимание на ввод констант. Для ввода десятых используем знак точки как разделитель. Строковые константы заключаем в апострофы. Для ввода даты используем сроку следующего формата: "DD-MON-YYYY", где: DD –номер дня; MON – английская аббревиатура месяца; YYYY –полный номер года. 
3. Выполним команду. Вводим символ "/".
Одна строка добавлена. Если встретили ошибки, то перейдите в режим редактирования edit, исправьте ошибки и повторно выполните команду INSERT.
4. Запишем команду в файл ins_exdoc.sql Она нам ещё пригодится. Если файл с таким именем уже существует, то используйте опцию replace.
save ins_exdoc replace
5. Посмотрим содержимое таблицы exdoc. Для чтения данных из таблицы используем команду SELECT.
select * from exdoc;
Эта команда выбирает все записи из таблицы exdoc.
Символ "*" означает: выводить значения всех колонок.
Конструкция WHERE отсутствует, значит выводить все записи.
Конструкция ORDER BY тоже отсутствует, порядок не важен. 
Команда вернула одну строку. Её мы добавили командой INSERT.
6. Команда SELECT вывела запись не в очень читабельном виде. Настроим удобный вывод, используем команды SQL*Plus для форматирования результатов. 
В программе используется моноширинный шрифт, т.е. все символы имеют одинаковую ширину, и это позволяет задавать ширину колонок, как количество символов.
Пусть, в строке будет 120 символов. 
set linesize 120
7. Для колонки address зададим ширину в 36 символов. В ней самые длинные строки.
col address for a36
Где:
"col" - сокращение команды SQL*Plus column; 
"for" - сокращение опции format, отвечает за форматирование выводимых значений;
"a36" – формат, в колонке будут выводиться строковые значения, ширина колонки 36 символов.
8. Формат для колонки с именем покупателя.
col customer_n for a16
Если выводимое значение имеет больше 16 символов, то оставшиеся символы будут перенесены на следующую строку. Это режим по умолчанию.
9. Формат для колонки с номером документа.
col doc_nd for 999
В колонке выводятся числовые значения, поэтому задаём количество цифр. "999" – формат, ширина всего 3 знака, если значение больше 999, то будет выведен знак переполнения "#". Если значение равно нулю, то значение не будет выводиться.
10. Выполним последний SELECT ещё раз. Команда хранится в буфере, вводим "/". 
Красота.
11. Теперь читаем все записи из таблицы exdoc, но на экран будем выводить только общую сумму по счёту. Вместо символа "*" перечислим только нужные колонки.
select doc_nd, doc_dd, total_doc from exdoc;
Выведена наша запись, причём только номер, дата и общая сумма по счёту. Остальные колонки не выведены, хотя в записи для них значения заданы. 
Команды форматирования продолжают действовать. 

Удаление записей
1. Давайте удалим запись. Для этого используем команду DELETE.
delete from exdoc;
Сообщение: 1 запись удалена. 
Эта команда удалит все записи из таблицы счетов exdoc. 
2. Проверим содержимое таблицы.
select * from exdoc;
Действительно, в таблице записей нет.
3. Добавим запись в таблицу exdoc. Выполним скрипт с командой INSERT.
@ins_exdoc
Символ "@" – это синоним команды start.
4. Проверим.
select * from exdoc;
Запись в таблице счетов есть. 

Добавление записей в таблицу с позициями счетов
1. Вспомним структуру таблицы.
desc expos
2. Вводим команду INSERT. Выполняем. Записываем команду в файл. Смотрим содержимое таблицы. Данные переписываем из формы счёта в учебном примере.
Если допустили ошибку, то перейдите в режим редактирования. Это команда edit. Исправьте текст ошибки. Ещё раз выполните команду INSERT.

insert into expos
( doc_nd
, doc_dd
, pos_no
, good_n
, ed
, quant
, price
, cost
, tax
, sum_tax
, sum_pos)
values
( 137
, '12-sep-2003'
, 1
, 'Банки стеклянные'
, 'шт'
, 7
, 3.25
, 22.75
, 18
, 4.10
, 26.85)
3. /
4. save ins_expos1 
5. select * from expos; 
Запись добавлена, команда INSERT записана в файл ins_expos1, в таблице запись присутствует.
6. Форматируем вывод.
col good_n for a18
7. col pos_no for 99 
8. col price for 990.00 
Обратите внимание на формат для числовых значений с десятичной точкой. Символы "0" предписывают в обязательном порядке выводить значение, даже если оно равно нулю. Т.е формат предписывает обязательно выводить единицы и два символа после десятичной точки. Колонка price шириной в 6 символов.
9. /
Запись в таблице есть. 
10. Добавим вторую запись в таблицу с позициями счетов. Для этого используем предыдущую команду INSERT.
get ins_expos1
Команда SQL*Plus get может загружать содержимое файла в буфер ввода.
11. В текстовом редакторе отредактируем команду.
Для этого делаем так: после приглашения SQL*Plus вводим edit; переходим в текстовый редактор; набираем текст команды.

insert into expos
( doc_nd
, doc_dd
, pos_no
, good_n
, ed
, quant
, price
, cost
, tax
, sum_tax
, sum_pos)
values
( 137
, '12-sep-2003'
, 2
, 'Горшки цветочные'
, 'шт'
, 2
, 12.5
, 2 * 12.5
, 18
, 2 * 12.5 * 18 / 100
, 2 * 12.5 + 2 * 12.5 * 18 / 100)
В качестве значений можно использовать арифметические выражения. Допускается использование круглых скобок для изменения порядка вычислений.
Обратите внимание на дублирование вычислений при расчёте стоимости товара, суммы налога и общей суммы. В команде INSERT нельзя сослаться на значение в другой колонке, приходится переписывать расчёт.
12. Закрываем текстовый редактор, возвращаемся в SQL*Plus, выполняем команду - вводим "/".
Сообщение: 1 строка добавлена.
13. Запишем команду в файл с другим именем ins_pos2. 
save ins_expos2
14. Проверим содержимое таблицы expos.
select * from expos;
В таблице expos две записи. Обратите вынимание на колонки стоимость товара, сумма налога и общая сумма. В них хранятся значения, которые были рассчитаны по арифметическим выражениям в команде INSERT.
Добавим в счёт третью и четвертую позицию.
1. За основу берём предыдущую команду INSERT.
get ins_expos2
2. Вводим edit и редактируем текст команды. 

insert into expos
( doc_nd
, doc_dd
, pos_no
, good_n
, ed
, quant
, price
, tax)
values
( 137
, '12-sep-2003'
, 3
, 'Грунт для цветов'
, 'кг'
, 160
, 32.4
, 18)
В команде INSERT можно указать только те колонки, для которых хотим задать значение. Если колонка не указана, то ей будет присвоено значение NULL.
3. Возвращаемся в SQL*Plus и выполняем команду.
4. Записываем команду в файл.
save ins_expos3
5. Смотрим содержимое таблицы expos.
select * from expos;
Запись добавлена. В пропущенных колонках ничего не выводится. По умолчанию значение NULL на экран не выводится.
6. Добавляем четвертую позицию. Читаем предыдущую команду.
get ins_expos3
7. Редактируем.

insert into expos
( doc_nd
, doc_dd
, pos_no
, good_n
, ed
, quant
, price
, tax)
values
( 137
, '12-sep-2003'
, 4
, 'Пробка медицинская'
, 'шт'
, 45
, 3.05
, 10)
8. Выполняем.
9. Записываем в файл.
save ins_expos4

Расчёт суммы за товар
1. Рассчитаем стоимость товара, сумму налога и общую сумму по позиции. Для этого будем использовать команду UPDATE.
update expos set cost = price * quant
В команде UPADTE указываем имя таблицы – это expos. 
В команде нет конструкции WHERE. Значит, будут задействованы все записи таблицы.
Для каждой записи будет рассчитано значение колонки cost. Выражение для расчёта использует значения, которые на этот момент есть в колонках price и quant для изменяемой записи.
Обращаю внимание: значение колонки cost в первой и второй записях тоже будут пересчитаны.
2. Выполним команду. Вводим “/”.
Изменились четыре строки.
3. Запишем команду в файл.
save upd_expos
4. Смотрим результат работы команды UPDATE.
select * from expos;
Теперь во всех записях колонка cost заполнена.
5. Добавляем в файл upd_expos ещё две команды UPDATE для расчёта суммы налога и общей суммы. Переходим в текстовый редактор и делаем правки.
edit upd_expos

update expos set cost = price * quant
/
update expos set sum_tax = cost * tax / 100
/
update expos set sum_pos = cost + sum_tax
/
Выходим из редактора, подтверждаем перезапись файла.
6. Выполним скрипт.
@upd_expos
Видим, что каждая команда изменила по 4 записи.
7. Проверяем результат расчёта.
select * from expos;
 


купить диплом иркутск . Купить технологические карты: куплю легальный паспорт.







jAntivirus