Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

15.4.Многострочная инструкция insert

Многострочная инструкция INSERT, синтаксическая диаграмма которой изображена на рисунке 11, добавляет в целевую таблицу несколько строк (более одной).

Рисунок 11 Синтаксическая диаграмма многострочной инструкции INSERT

В этой разновидности инструкции INSERT значения для новых строк явно не задаются. Источником новых строк служит запрос на выборку, содержащийся внутри инструкции.

На запрос, содержащийся внутри многострочной инструкции INSERT, накладывается несколько логических ограничений:

• в запрос нельзя включать предложение ORDER BY. He имеет смысла сортировать таблицу результатов запроса, поскольку она добавляется в таблицу, которая, как и все остальные, не упорядочена;

• таблица результатов запроса должна содержать количество столбцов, равное длине списка столбцов в инструкции INSERT (или полностью всю целевую таблицу, если список столбцов опущен), а типы данных соответствующих столбцов таблицы результатов запроса и целевой таблицы должны быть совместимыми;

• имя целевой таблицы инструкции не может присутствовать в предложении FROM запроса на выборку или любого запроса, вложенного в него. Тем самым запрещается добавление таблицы самой к себе.

16.Удаление существующих данных

Инструкция DELETE, синтаксическая диаграмма которой изображена на рисунке 12, удаляет выбранные строки из одной таблицы.

Рисунок 12 Синтаксическая диаграмма инструкции DELETE

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

Предположим, что недавно принятый на работу Иванов решил уволиться из компании. Инструкция DELETE, удаляющая относящуюся к служащему строку из таблицы STAFF выглядит следующим образом:

delete from staff

where lname = ‘Иванов’;.

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

При рассмотрении инструкции SELECT, что в предложении WHERE инструкции условия отбора могут определять как одну строку, так и набор строк – в зависимости от конкретного условия. То же самое справедливо и для предложения WHERE инструкции DELETE.

16.1.Удаление всех строк

Хотя предложение WHERE в инструкции DELETE является необязательным, оно присутствует почти всегда. Если же оно отсутствует, то удаляются все строки целевой таблицы. Например:

Удалить информацию обо всех сотрудниках организации

delete from staff;

Хотя в результате выполнения приведенной инструкции таблица STAFF становится пустой, из базы данных она не удаляется. Определение таблицы и ее столбцов остается в базе данных. Таблица по-прежнему существует, и в нее по-прежнему можно добавлять новые строки. Чтобы удалить из базы данных определение таблицы, необходимо использовать инструкцию DROP TABLE.

Инструкция DELETE, приведенная в примере несет в себе потенциальную угрозу удаления необходимых строк, поэтому всегда следует задавать условие отбора и обращать внимание на то, отбирает ли оно действительно ненужные строки. Желательно вначале проверить предложение WHERE в интерактивном режиме в составе инструкции SELECT и отобразить выбранные строки на экране. Убедившись, что это именно те строки, которые требуется удалить, можно использовать предложение WHERE в инструкции на удаление.