- •Конспект лекций
- •1.4. Стандартные процедуры и функции
- •1.5. Процедуры вывода
- •1.6. Таблицы учебной база данных
- •2. Простые типы данных
- •2.1. Числовые типы
- •2.2. Символьные типы данных
- •2.3. Тип данных даты-времени
- •2.4. Преобразование типов
- •2.5. Порядок вычисления выражений
- •3. Типы команд языка sql
- •3.1. Команды обработки данных
- •3.1.1. Извлечение данных с помощью запросов
- •3.1.2. Вставка, обновление и удаление строк в таблицах
- •3.2. Управление транзакциями
- •3.2.1. Подтверждение транзакций
- •3.2.2. Откат транзакций
- •3.3. Команды определения данных
- •3.3.1. Таблицы
- •3.3.2. Последовательности
- •3.3.3. Представления
- •3.3.4. Синонимы
- •3.4. Команды управления данными
- •4. Управление привилегиями
- •4.1. Понятие привилегии
- •4.2. Типы привилегий
- •4.3. Системные привилегии
- •4.4. Объектные привилегии
- •4.5. Роли
- •4.5.1. Создание ролей
- •4.5.2. Изменение ролей
- •5.2 Ваша первая программа
3.1.2. Вставка, обновление и удаление строк в таблицах
Рассмотрим вопрос о том, как вводить, изменять и удалять данные таблиц с помощью команд INSERT, UPDATE и DELETE языка SQL.
Команда INSERT может быть построена, исходя из следующего синтаксиса.
INSERT INTO таблица
(поле [,])
{ VALUES ( выражение [,] ) | запрос }
Данный синтаксис позволяет использовать команду INSERT в двух вариантах в зависимости от того, нужно ли вставить в таблицу одиночные строки или сразу множество строк из другой таблицы. Например, приведенная команда добавит строку в таблицу SAL с пустыми значениями для третьего и четвертого столбцов:
INSERT INTO sal
VALUES (1008, ‘Tom’, NULL, NULL)
В следующем примере показан второй вариант команды INSERT: команда вставляет строки в таблицу SAL_COPY, копируя их из таблицы SAL
INSERT INTO sal_copy
SELECT * FROM sal
Синтаксис команды UPDATE можно представить следующим образом.
UPDATE таблица
SET { поле = { выражение | запрос } [,] | ( поле [,]) = запрос }
[ WHERE условие ]
В приведенном ниже примере командой UPDATE увеличивается на 50 рейтинг покупателей, чьи заказы оформлял продавец с номером 1001.
UPDATE cust SET rating=rating + 50
WHERE snum = 1001;
Команда DELETE имеет следующий синтаксис.
DELETE [ FROM ] таблица
[ WHERE условие ]
Если в команде DELETE опустить фразу WHERE, то при таком простом варианте будут удалены все строки из таблицы. Следует отметить, что при этом сама таблица не будет удалена их базы данных, но она станет пустой. Пример удаления всех заказов из таблицы ORD показан ниже.
DELETE FROM ord
Для удаления строк, отвечающих заданному условию, в команду DELETE требуется включить фразу WHERE с условием удаления. Так, следующем примере удаляются заказы, сумма которых не превышает 100.
DELETE FROM ord WHERE amt <= 100;
3.2. Управление транзакциями
ТРАНЗАКЦИЯ - это логическая единица работы, составленная из одной или нескольких команд SQL. Транзакция - это атомарная единица; результаты всех команд SQL, составляющих транзакцию, должны быть либо все ПОДТВЕРЖДЕНЫ (применены к базе данных), либо все ОТМЕНЕНЫ. Транзакции должны состоять лишь из тех команд SQL, которые в совокупности осуществляют одно согласованное изменение данных.
Транзакция начинается с первой выполняемой команды SQL. Транзакция заканчивается, когда она либо подтверждается, либо отменяется, что может быть сделано явно (командами COMMIT или ROLLBACK) или неявно (когда выдается команда DDL).
3.2.1. Подтверждение транзакций
ПОДТВЕРЖДЕНИЕ транзакции означает объявление постоянными всех изменений, которые были выполнены командами SQL внутри этой транзакции.
Для подтверждения транзакции используйте команду COMMIT. Следующие предложения эквивалентны и подтверждают текущую транзакцию:
COMMIT WORK;
COMMIT;
3.2.2. Откат транзакций
ОТКАТ означает отмену всех изменений данных, которые были сделаны командами SQL в неподтвержденной транзакции.
Чтобы отменить всю, используйте команду ROLLBACK. Например, каждое из следующих предложений откатывает всю текущую транзакцию:
ROLLBACK WORK;
ROLLBACK;
