- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.5. Метод er - проектирования
- •1.5.1. Сущности и связи
- •1.5.2. Степень связи
- •1.5.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.5.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.5.5. Последовательность проектирования бд при использовании er- метода
- •1.5.5. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.5. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.5. Изменение данных
- •3.4.7. Удаление данных
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 70
- •Часть 3. Разработка приложений для работы с базами данных 113
3.4.5. Изменение данных
Для изменения данных можно использовать различные методы, включая удаление и повторную вставку строк. Чаще всего изменение данных производится с помощью команды UPDATE, позволяющей выполнять как простое обновление данных в столбце, так и сложные операции модификации данных во множестве строк таблицы. Если алгоритм изменения данных достаточно сложен, то чтобы избавить пользователей от необходимости написания сложных запросов, можно создать хранимую процедуру, которая и будет изменять данные в таблице. Хранимые процедуры также могут быть использованы в тех случаях, когда пользователям нельзя предоставлять прямой доступ к таблицам. Чтобы выполнить модификацию данных, пользователю нужно будет вызвать соответствующую процедуру, которая и выполнит изменения. Аналогичным образом можно поступить и для реализации вставки, удаления и выборки данных.
Итак, изменение данных выполняется с помощью команды UPDATE. Рассмотрим синтаксис этой команды:
UPDATE
{table_name WITH ( <table_hint_limited>)
| view_name
| rowset_function_limited}
SET
{column_name = (expression | DEFAULT | NULL )
| @variable = expression
| @variable = column = expression }
{ [ FROM (<table_source>)]
[ WHERE <search__condition>]}
[ WHERE CURRENT OF
{( [ GLOBAL ] cursor_narne ) | cursor_variable_name]}
[OPTION ( <query_hint>)]
Рассмотрим подробно назначение каждого из аргументов.
- tab1e_name. Имя таблицы, в которой необходимо произвести изменение данных.
- [WITH ( <table_hint_limited> [.. .n])]. С помощью этого параметра можно управлять режимом блокирования данных в таблице на время выполнения команды UPDATE.
- view_name. Имя представления, данные в котором необходимо модифицировать.
- rowset_function_limited. Этот параметр подразумевает использование функции для работы с наборами строк — OPENQUERY или OPENROWSET, которая определяет набор изменяемых данных. Указанные функции позволяют реализовать возможности технологии OLE DB и работать с данными, расположенными не на сервере Microsoft SQL Server.
- SET. С ключевого слова SET начинается блок, в котором определяется список изменяемых столбцов или переменных. Команда UPDATE позволяет изменять не только столбцы таблицы, но и значения переменных. В одной команде допускается изменение и столбцов и переменных. За один вызов UPDATE можно изменить данные в нескольких столбцах множества строк одной таблицы.
- column_name = {expression | DEFAULT | NULL}. Для каждого изменяемого столбца нужно определить значение, которое он примет после выполнения изменения. С помощью ключевого слова DEFAULT можно присвоить столбцу значение, определенное для него по умолчанию. Можно также установить для столбца значение NULL. Если необходимо установить определенное значение, следует указать константу, переменную или выражение.
@variable = expression. Этот аргумент определяет имя переменной, с которой можно оперировать при выполнении команды. Данные в таблице при этом не изменяются. Все необходимые изменения выполняются в переменной. Такой подход можно использовать, например, для подсчета количества строк, удовлетворяющих определенному условию.
@variable = column = expression. Эта конструкция позволяет сочетать использование переменных и имен столбцов.
FROM {<table_source>}. Если при изменении данных в таблице необходимоучесть состояние данных в других таблицах (представлениях), то эти источникиданных необходимо указать в разделе From.
WHERE <search_condition> Назначение раздела Where, используемого в запросе Update, полностью соответствует назначению, которое раздел имеет в запросе Select.
WHERE CURRENT OF. Использование этой конструкции заставляет сервер выполнять обновление данных в строке, являющейся текущей в указанном курсоре.
Курсор – механизм обмена данными между сервером и клиентом. Он позволяет клиентским приложениям работать не с полным наботом данных, а лишь с одной конкретной строкой.
([GLOBAL] cursor_name | cursor_variable_name). Эта конструкция используется совместно с предыдущим параметром и определяет имя курсора. Ключевое слово Global говорит серверу о том, что курсор глобальный.
OPTION (<query_hint> […n]). Ключевое слово Option определяет набор хинтов, управляющих блокировкой курсора на время выполнения запроса.
Хинты – это специальные ключевые слова, распознаваемые оптимизатором запроса.