
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
6. Удаление существующих данных
Удаление существующей строки из реляционной базы данных происходит тогда, когда объект, представляемый этой строкой, исчезает из "внешнего мира". На примере учебной базы данных это выглядит следующим образом:
если клиент отменяет заказ, необходимо удалить соответствующую строку из таблицы orders;
если служащий увольняется из компании, должна быть удалена соответствующая строка из таблицы salesreps;
если ликвидируется офис, необходимо удалить соответствующую строку из таблицы offices; в случае, когда служащие этого офиса увольняются, их строки в таблице salesreps также должны быть удалены; если служащие переводятся в другой офис, то соответствующие значения в столбце office необходимо обновить.
Во всех приведенных примерах новая строка удаляется для того, чтобы база данных оставалась точной моделью реального мира. Наименьшей единицей информации, которую можно удалить из реляционной базы данных, является одна строка.
Оператор delete, синтаксическая диаграмма которого изображена ниже, удаляет выбранные строки данных из одной таблицы. В предложении from указывается таблица, содержащая строки, которые требуется удалить. В предложении WHERE указываются строки, которые должны быть удалены.
DELETE FROM <имя таблицы> [WHERE <предикат>].
Предположим, что недавно принятый на работу Генри Якобсон решил уволиться из компании. Вот оператор delete, удаляющий относящуюся к служащему строку из таблицы sales reps:
DELETE FROM SALESREPS WHERE NAME = Henry Jacobsen'
В приведенном выше примере в предложении where определена одна строка таблицы salesrees, которая будет удалена из этой таблицы.
Хотя предложение where в операторе delete является необязательным, оно присутствует почти всегда. Если же оно отсутствует, то удаляются все строки целевой таблицы. Например:
DELETE FROM ORDERS
Хотя в результате выполнения приведенного оператора delete таблица orders становится пустой, из базы данных она не удаляется. Определение таблицы orders и ее столбцов остается в базе данных. Таблица по-прежнему существует, и в нее по-прежнему можно добавлять новые строки с помощью оператора insert. Чтобы удалить из базы данных определение таблицы, необходимо использовать оператор drop table.
Оператор delete с вложенным запросом
Операторы delete с простыми условиями поиска, рассмотренные в предыдущих примерах, отбирают строки для удаления исключительно на основании содержимого этих строк. Но иногда отбор строк необходимо производить, опираясь на данные из других таблиц. Однако в операторе delete запрещено использовать объединение таблиц. Оператор delete с параллельным удалением из двух таблиц является неправильным.
Вложенные запросы в предложении where могут иметь несколько уровней вложенности. Они могут также содержать внешние ссылки на целевую таблицу оператора DELETE. В этом случае предложение FROM оператора delete играет такую же роль, как и предложение from оператора select. Вот пример запроса на удаление, в котором требуется использовать вложенный запрос, содержащий внешнюю ссылку:
Удалить все данные о клиентах, которые не делали заказов с 10 ноября 1989 года.
DELETE FROM CUSTOMERS WHERE NOT EXISTS (SELECT *FROM ORDERS WHERE COST = CUST_NUM AMD ORDER_DATE > '10-NOV-89')
Приведенный выше оператор DELETE выполняется таким образом: каждая строка таблицы custoMers по очереди проверяется на соответствие условию поиска. Для каждого клиента вложенный запрос отбирает все заказы, размещенные этим клиентом после указанной даты. Ссылка на столбец cust_num во вложенном запросе является внешней ссылкой на идентификатор клиента той строки таблицы customers, которая проверяется оператором delete в настоящий момент. Вложенный запрос в данном примере является связанным вложенным запросом.