
- •Введение
- •Общая схема банка данных в системе
- •Основные понятия
- •Базы данных
- •Банк данных как система управления основные понятия
- •Банк данных как автоматизированная система
- •Субд с включающим языком
- •Информационные системы
- •Документальные аис основные понятия дескриптор
- •Фактографические аис
- •Основные понятия
- •Основные данные
- •Уровни моделей
- •Классификация моделей
- •Роль подсхемы
- •Этапы проектирования базы данных
- •Архитектура банка данных
- •Последовательность действий при чтении записи
- •Инфологическое проектирование базы данных
- •Модели данных и подъязыки данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Реляционные базы данных
- •Алгебра отношений
- •Преимущества реляционных бд
- •Отношения
- •Нормализация отношений
- •Функциональная зависимость
- •Полная функциональная зависимость.
- •Проектирование баз данных.
- •Специальные операции над отношениями
- •Операции над отношениями.
- •Централизация и децентрализация процессов обработки данных.
- •Традиционный набор операций
- •Нормализация отношений
- •Исчисление отношений
- •Вторая и третья нормальные формы.
- •26. Язык запросов sql
- •1 Основы sql
- •Многотабличные запросы на чтение (объединения)
- •Сортировка результатов запроса (предложение order by)
- •Объединение результатов нескольких запросов (union)*
- •Запрос на объединение и сортировка *
- •Многотабличные запросы на чтение (объединения)
- •Простое объединение таблиц (объединение по равенству)
- •Запросы с использованием отношения предок/потомок
- •Объединения с условием для отбора строк
- •Несколько связанных столбцов
- •Запросы на чтение к трем и более таблицам
- •Чтение всех столбцов
- •Самообъединения
- •Псевдонимы таблиц
- •Правила выполнения многотабличных запросов
- •Внешнее объединение таблиц *
- •Итоговые запросы на чтение
- •Агрегатные функции
- •Агрегатные функции в списке возвращаемых столбцов
- •Запросы с группировкой (предложение group by)
- •Несколько столбцов группировки
- •Ограничения на запросы с группировкой
- •Вложенные запросы на чтение
- •Внешние ссылки
- •Вложенные запросы и объединения
- •Связанные вложенные запросы
- •Однострочный оператор insert
- •В интерактивном режиме удобно не включать в оператор insert список столбцов, так как это уменьшает длину оператора. В случае программного
- •Многострочный оператор insert
- •Удаление существующих данных
- •Удаление всех строк
- •Оператор delete с вложенным запросом *
- •Обновление существующих данных
-
Удаление существующих данных
Удаление существующей строки из реляционной базы данных происходит тогда, когда объект, представляемый этой строкой, исчезает из "внешнего мира". На примере учебной базы данных это выглядит следующим образом:
• если клиент отменяет заказ, необходимо удалить соответствующую строку из таблицы ORDERS;
• если служащий увольняется из компании, должна быть удалена соответствующая строка из таблицы salesreps;
• если ликвидируется офис, необходимо удалить соответствующую строку из таблицы offices; в случае, когда служащие этого офиса увольняются, их строки в таблице salesreps также должны быть удалены; если служащие переводятся в другой офис, то соответствующие значения в столбце office необходимо обновить.
Во всех приведенных примерах новая строка удаляется для того, чтобы база данных оставалась точной моделью реального мира. Наименьшей единицей информации, которую можно удалить из реляционной базы данных, является одна строка.
ОПЕРАТОР DELETE
Оператор delete удаляет выбранные строки данных из одной таблицы. В предложении from указывается таблица, содержащая строки, которые требуется удалить. В предложении where указываются строки, которые должны быть
Предположим, что недавно принятый на работу Генри Якобсен решил уволиться из компании. Вот оператор delete, удаляющий относящуюся к служащему строку из таблицы sale sre ps :
В приведенном выше примере в предложении where определена одна строка таблицы salesreps, которая будет удалена из этой таблицы. Предложение where имеет знакомый вид — действительно, это то же самое предложение where, которое необходимо включить в оператор select для чтения из таблицы этой же строки. Условия поиска, которые можно задать в предложении where оператора delete, полностью совпадают с условиями поиска, доступными в предложении where оператора select.
Вспомним, что в предложении where оператора select условия поиска могут определять как одну строку, так и набор строк — в зависимости от конкретного условия. То же самое справедливо и для предложения where оператора delete. Предположим, например, что клиент служащего Якобсена, компания InterCorp (идентификатор клиента 2126), отменила все свои заказы. Вот оператор delete, удаляющий заказы из таблицы orders:
В данном примере предложение where выбирает несколько строк таблицы orders, которые затем удаляются из нее. Все строки таблицы orders последовательно проверяются на соответствие условию поиска. Строки, в которых условие поиска имеет значение true, удаляются, а строки, в которых условие поиска имеет значения false или null, сохраняются. Поскольку этот тип оператора delete осуществляет в таблице поиск удаляемых строк, его иногда называют поисковым, в отличие от другого типа оператора delete, всегда удаляющего одну строку и называемого позиционным. Позиционный оператор delete применяется только в программном SQL.
Удаление всех строк
Хотя предложение where в операторе delete является необязательным, оно присутствует почти всегда. Если же оно отсутствует, то удаляются все строки целевой таблицы. Например:
Хотя в результате выполнения приведенного оператора delete таблица orders становится пустой, из базы данных она не удаляется. Определение таблицы orders и ее столбцов остается в базе данных. Таблица по-прежнему существует, и в нее по-прежнему можно добавлять новые строки с помощью оператора insert. Чтобы удалить из базы данных определение таблицы, необходимо использовать оператор drop table.
Такой оператор delete несет в себе потенциальную угрозу удаления необходимых строк, поэтому всегда необходимо задавать условие поиска и обращать внимание на то, отбирает ли оно действительно ненужные строки. Желательно вначале проверить предложение where в интерактивном режиме в составе оператора select и отобразить выбранные строки на экране. Убедившись, что это именно те строки, которые требуется удалить, можно использовать предложение where в операторе delete.