Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ORACLE 2004 года.doc
Скачиваний:
28
Добавлен:
03.05.2015
Размер:
466.43 Кб
Скачать

1 Строка обновлена.

FILMID STOIMOST_PROK KOL

SQL> update film ---------- -------------------------- ---------------

2 set kol = 4, Stoimost_prok = 30 2 30 4

3 where filmid=2; 1 30 3

1 строка обновлена.

Пример.

Ввод данных о назначении стоимости проката фильмов 40 р. Убедиться в том, что изменения произведены успешно.

SQL> update film

2 set Stoimost_prok = 40;

6 строк обновлено.

SQL> select filmid, stoimost_prok

2 from film;

FILMID STOIMOST_PROK

---------------- -------------------------

1 40

2 40

8 40

6 строк выбрано.

Пример

Если указанное вами значение не существует в родительской таблице, выдается сообщение о том, что "родительский ключ" не обнаружен, что является нарушением ограничения.

SQL> update dogovor

2 set filmid=15

3 where filmid = 1;

update dogovor

*

ошибка в строке 1:

ORA-02291: нарушено ограничение целостности (USER32.FILMID_FK) – исходный ключ не найден

Удаление строк

Синтаксис

DELETE FROM таблица

[WHERE условие];

где:

таблица

имя таблицы.

условие

задает строки, которые необходимо удалить, и состоит из имен столбцов, выражений, констант, подзапросов и операторов сравнения.

Пример.

Удаление информации о договоре, заключенном после 1 февраля 2003 года:

SQL> delete from dogovor

2 where vidacha >

3 TO_Date('01.02.2003','dd.mm.yyyy');

1 строка удалена.

Если команда DELETE не содержит предложения WHERE, удаляются все строки таблицы.

Транзакции

Совокупность команд DML, результаты действия которых еще не стали постоянными, называется транзакцией или логической единицей работы. Транзакция начинается, когда сервер Oracleполучает первую исполняемую командуSQL, и заканчивается, когда происходит одно из следующих событий:

  • Команда COMMIT или ROLLBACK.

  • Команда DDL (например, CREATE) или команда DCL.

  • Обнаружение определенных ошибок - например, взаимной блокировки.

  • Завершение сеанса работы в SQL*Plus пользователем.

  • Аппаратный сбой или аварийный останов системы.

После завершения одной транзакции следующее выполняемое предложение SQL автоматически начинает следующую транзакцию.

Результаты выполнения команд DDL и DCL (см. таблица 1) фиксируются автоматически.

Команды явного управления транзакциями

Команда

Описание

COMMIT

Завершает текущую транзакцию, делая постоянными все произведенные изменения данных.

SAVEPOINT имя

Устанавливает в текущей транзакции маркер точки сохранения (savepoint).

ROLLBACK[TO SAVEPOINT имя]

Прекращает текущую транзакцию, отменяя все произведенные изменения в данных.

Команды неявной обработки транзакций

Статус

Причина

Автоматическая

фиксация

Команда DDL или DCL.

Нормальное завершение сеанса работы в SQL*Plus без явной команды COMMIT или ROLLBACK.

Автоматический откат

Аварийное прекращение сеанса работы в SQL*Plus или системный сбой.

Пример.

Создание нового фильма. Все изменения данных становятся постоянными.

SQL> insert into film(filmid, namef, god_vip)

2 values( 11, 'Красный дракон','12.03.1988');

1 строка создана.

SQL> COMMIT;

Фиксация обновлений завершена.

Пример.

Во время удаления записи из таблицы dogovor случайно стерты все данные этой таблицы. Ошибка исправляется, посылается правильная команда, и изменения фиксируются.

SQL> delete from dogovor;

1 строка удалена.

SQL> rollback;

Откат завершен.

SQL> COMMIT;

Фиксация обновлений завершена

Пример.

Увеличение на 5 процентов стоимости проката кассет, количество копий которых меньше 4. Создается точка сохранения UPDATE_DONE.

SQL> update film FILMID NAMEF

2 set stoimost_prok = stoimost_prok*1.05 ---------- -------------------------

3 where kol<4; 55 Filname

2 строк обновлено.

SQL> savepoint update_done; SQL> rollback to update_done;

Точка отката создана. Откат завершен

SQL> insert into film (filmid, namef) SQL> select filmid, namef

2 values (55, 'Filname'); 2 from film

1 строка создана. 3 where filmid=55;

строки не выбраны

SQL> select filmid, namef

2 from film

3 where filmid=55;

Лабораторная работа №3

Тема: ВЫБОРКА СТРОК

Основной блок запроса

Синтаксис

SELECT [DISTINCT] {*, столбец [псевдоним], ....}

FROM таблица;

где: SELECT Список, включающий, по крайней мере, один столбец.

DISTINCT Подавляет выборку дубликатов.

* Выбирает все столбцы.

Столбец Выбирает заданный столбец.

Псевдоним Дает выбранным столбцам другие заголовки.

FROM таблица Указывает таблицу, содержащую столбцы.

Выборка всех столбцов и строк.

Пример.

Вывод содержимого всех столбцов и строк таблицы KLIENT.

SQL> SELECT *

2 FROM KLIENT;

KLIENTID FIO PHONE

-------------------------------------------------------------

1 Иванов И.Н. 9005363

2 Петров Н.О 7854458

3 Сидоров О.Г. 4455478

Выборка заданных столбцов

Вывод можно ограничить столбцами, имена которых указаны через запятую в предложении SELECT.

Пример.

Вывод всех фамилий клиентов и их телефонных номеров из таблицы KLIENT.

SQL> SELECT FIO, PHONE

2 FROM KLIENT;

FIO PHONE

--------------------------------------

Иванов И.Н. 9005363

Петров Н.О 7854458

Сидоров О.Г. 4455478

Пример.

Использование оператора умножения для вывода общей стоимости партии.

SELECT NAMEF, STOIMOST_PROK * KOL

2 FROM FILM;

NAMEF STOIMOST_PROK * KOL

------------------------------------------------------------------------------

Красотка 126

Дом 160

Азазель 200

Ва-банк 126

Куклы

6 строк выбрано.

Псевдонимы столбцов

Псевдоним указывается в списке команды SELECT сразу за именем столбца и отделяется от него пробелом. По умолчанию такие альтернативные заголовки выводятся в символах верхнего регистра и не могут содержать пробелов, если псевдоним не заключен в кавычки (" ").

Пример.

Вывод фамилии клиентов, общей стоимости партии. общей стоимости партии вычисляется путем перемножения стоимости проката и количества. Назвать столбец STOIMOST_VSEGO.

SELECT NAMEF, STOIMOST_PROK * KOL AS STOIMOST_VSEGO

2 FROM FILM;

SELECT NAMEF, STOIMOST_PROK * KOL “Стоимость всего

2 FROM FILM;