Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_BD.doc
Скачиваний:
12
Добавлен:
14.04.2019
Размер:
1.55 Mб
Скачать

4.4 Операторы манипулирования данных

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

4.4.1 Оператор удаления данных delete

Оператор DELETE имеет формат:

DELETE FROM <базовая таблица | представление> [WHERE <предикат>];

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

Пример 4.42 Удалить все содержимое таблицы Продавцы:

DELETE FROM Продавцы;

Теперь, когда таблица пуста, ее можно окончательно удалить командой DROP TABLE. Обычно, нужно удалить только некоторые определенные строки из таблицы. Чтобы определить, какие строки будут удалены, используется предикат, так же как и для запросов.

Пример 4.43 Удалить продавца Аксельрода из таблицы Продавцы:

DELETE FROM Продавцы WHERE snum = 1003;

Замечание. Рекомендуется сначала выполнить оператор SELECT, имеющий такое же предложение WHERE, чтобы убедиться те ли строки будем удалять.

Пример 4.44 Если закрыто ведомство в Лондоне, то чтобы удалить всех заказчиков назначенных, к продавцам в Лондоне, используем следующий оператор:

DELETE FROM Заказчики WHERE snum = ANY

( SELECT snum FROM Продавцы WHERE city = 'Лондон' );

Эта команда удалит из таблицы Заказчики строки с заказчиками Хофман и Клеменс

(назначенных для Пила), и Перера (назначенного к Мотика).

4.4.2 Оператор вставки данных insert

Оператор INSERT имеет один из следующих форматов:

INSERT INTO <базовая таблица | представление> [(<столбец> [,<столбец>] ...)]

VALUES (<константа>|<переменная> [,<константа>| <переменная>] ...);

или

INSERT

INTO <базовая таблица | представление> [(<столбец> [,<столбец>] ...)] <подзапрос>;

В первом формате в таблицу вставляется строка со значениями полей, указанными в перечне фразы VALUES (значения), причем i-е значение соответствует i-му столбцу в списке столбцов (столбцы, не указанные в списке, заполняются NULL-значениями). Если в списке VALUES фразы указаны все столбцы модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы, то список столбцов в предложении INTO можно опустить.

Пример 4.45 Добавить нового продавца:

INSERT INTO Продавцы VALUES (1009, 'Вильсон', 'Лондон', 0.12);

Замечание. Команды DML не производят никакого вывода, но СУБД должна дать некоторое подтверждение того, что данные были использованы. Имя таблицы (в нашем случае - Продавцы) должно быть предварительно определено в команде CREATE TABLE (см. п.4.5 ), а каждое значение, заданное в предложении значений VALUES, должно совпадать с типом данных столбца, в который оно вставляется.

Во втором формате сначала выполняется подзапрос, т.е. по предложению SELECT в памяти формируется рабочая таблица, а потом строки рабочей таблицы загружаются в модифицируемую таблицу. При этом i-й столбец рабочей таблицы (i-й элемент списка выбора SELECT) соответствует i-му столбцу в списке столбцов модифицируемой таблицы. Здесь также при выполнении указанных выше условий может быть опущен список столбцов фразы INTO.

Можно также использовать команду INSERT, чтобы выбирать значения из одной таблицы и помещать их в другую. Чтобы сделать это, вы просто заменяете предложение VALUES (из предыдущего примера) на соответствующий запрос:

Пример 4.46 INSERT INTO Лондон_1 SELECT * FROM Продавцы WHERE city = 'Лондон';

Здесь выбираются все значения, произведенные запросом - все строки из таблицы Продавцы со значениями city = ‘Лондон’ - и помещаются в таблицу, называемую Лондон_1. Эта таблица должна отвечать следующим условиям:

  • она должна уже быть создана командой CREATE TABLE.;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]