- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Запросы на изменение
Запросы на изменение предназначены для добавления, удаления или обновления записей, а также для создания таблиц.
Синтаксис запроса на добавление записей:
INSERT INTO таблица-получатель SELECT список полей FROM таблица-источник;
Если в инструкции на добавление отсутствует предложение WHERE, то в таблицу-получатель будут добавлены все записи таблицы-источника.
Синтаксис запроса на удаление записей:
DELETE FROM имя таблицы [WHERE условие удаления];
В этой инструкции предложение WHERE также не обязательное. При его отсутствии из указанной таблицы будут удалены все записи.
Синтаксис запроса на создание таблицы:
SELECT список полей INTO новая таблица FROM исходная таблица [WHERE условие выбора];
Полную копию исходной таблицы можно создать, указав вместо списка полей символ * и не используя предложение WHERE.
Запрос на обновление используется для присвоения новых значений отдельным столбцам при помощи операторов UPDATE и SET:
UPDATE имя таблицы SET имя_поля_1=значение [,имя_поля_2=значение[,…]] [WHERE условие обновления];
Перекрестные запросы
Перекрестные запросы позволяют создавать различные итоговые запросы, использующие статистические функции SQL. Когда данные группируются с помощью перекрестного запроса, можно выбирать значения из заданных полей или выражений как заголовки столбцов. Это позволяет просматривать данные в более компактной форме, чем при работе с запросом на выборку. Для организации перекрестных запросов используются операторы Jet-SQL TRANSFORM и PIVOT:
TRANSFORM статистическая функция (имя поля) [AS наименование] SELECT список полей FROM имя таблицы PIVOT поле [IN (значение_1[, значение_2[, ...]])];
Пример перекрестного запроса: Представить данные о количествах деталей, поставленных каждым поставщиком.
TRANSFORM Sum(Пк.Кол) SELECT Пк.ПN, Sum(Пк.Кол) AS [ВСЕГО:] FROM Поставки AS Пк GROUP BY Пк.ПN PIVOT Пк.ДN;
Результатом такого запроса будет таблица:
ПN |
ВСЕГО: |
Д1 |
Д2 |
Д3 |
Д4 |
Д5 |
Д6 |
П1 |
900 |
900 |
|
|
|
|
|
П2 |
3200 |
|
|
3100 |
|
100 |
|
П3 |
700 |
|
|
200 |
500 |
|
|
П4 |
600 |
|
|
|
|
|
600 |
П5 |
3110 |
110 |
300 |
200 |
800 |
1000 |
700 |
Инструкция TRANSFORM является необязательной, но если она присутствует, то должна быть первой инструкцией в команде SQL. Она должна находиться впереди инструкции SELECT, которая указывает поля, содержащие заголовки строк, и предложения GROUP BY, которое задает группировку по строкам. При желании можно включить и другие предложения, например WHERE для описания дополнительных условий отбора и сортировки. Кроме того, можно использовать подчиненные запросы как предикаты в перекрестном запросе, особенно в предложении WHERE.
Значения, возвращенные аргументом поле, используются в качестве заголовков столбцов в результирующем наборе запроса. Аргумент поле можно ограничить, чтобы создать заголовки из фиксированных значений (значение_1, значение_2 ), перечисленных в необязательном предложении IN. Кроме того, фиксированные заголовки, которым не соответствуют реальные данные, можно использовать для создания дополнительных столбцов.
Используя SQL, можно обновить данные или удалить записи таблиц, относящихся к другим базам данных любого типа (FoxPro, dBase, Paradox,…). Для определения файла внешней таблицы или базы данных используется оператор IN. Средствами MS ACCESS можно создавать или изменять таблицы dBase или Paradox, указав в операторе IN путь к их файлу и тип файла.