- •1. Форматирование выходных данных запросов. 39
- •Тема 1.
- •1. Введение. История развития баз данных.
- •1. Введение. История развития баз данных
- •2. Основные понятия и определения
- •Тема 2.
- •1. Архитектура базы данных. Физическая и логическая независимость.
- •1. Архитектура базы данных. Физическая и логическая независимость
- •2. Разработка приложений в среде Microsoft Windows. Системы быстрой разработки приложений. Субд. Модели данных.
- •3. Основные этапы проектирование базы данных.
- •Тема 3.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •Тема 4.
- •1. Построение таблиц.
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •1. Построение таблиц
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •Тема 5.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •Тема 6.
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2. Суммирование данных с помощью функций агрегирования (групповых функций).
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2.Суммирование данных с помощью функций агрегирования (групповых функций).
- •Тема 7.
- •1. Форматирование выходных данных запросов.
- •2.Соединение таблиц
- •3.Вложенные подзапросы
- •4.Связанные подзапросы. Оператор exists
- •5.Вложенные и связанные подзапросы. Операторы any, all, come
- •Тема 8.
- •1. Форматирование выходных данных запросов.
- •1. Форматирование выходных данных запросов.
- •Тема 9.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •Тема 10.
- •1. Создание представлений .
- •2. Определение правд доступа к данным.
- •1. Создание представлений.
- •2. Определение правд доступа к данным.
- •Тема 11.
- •1. Определение синонимов объектов. Понятие транзакций. Управление параллелизмом.
- •Тема 12.
- •1. Встроенный sql, основные понятия
- •1. Встроенный sql, основные понятия.
3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
Индекс – это упорядоченный список содержимого столбцов или группы столбцов в таблице. Он служит для ускорения поиска данных в таблице. Т.к. записи в таблице в общем случае не упорядочены, то поиск записи по значению поля проводится последовательным просмотром. При длине таблицы в N записей это, в среднем, требует N/2 проверок. При наличии индекса, в среднем, требуется log 2N проверок.
Индекс также служит для быстрого нахождения записей, для которых значение поля находится в определённых пределах. Быстро отсортировать записи по совпадающему значению поля, извлечь записи из таблицы в отсортированных последовательностях и т.д. Будучи однажды созданным, индекс остаётся невидимым для пользователя. SQL сам решит, когда воспользоваться индексом и сделает это автоматически. Также автоматически выполнится обновление индекса при обновлении индексируемой таблицы.
Индекс может быть непосредственно создан командами CREATE TABLE и ENTER TABLE. Формат этой команды имеет следующий вид:
CREATE [UNIQUE] INDEX имя_таблицы ON имя_таблицы (имя_столбца, … , имя_столбца );
Где:
UNIQUE – значение индекса должно быть уникальным в таблице. SQL отслеживает уникальность индекса и не позволяет изменить БД так, чтобы уникальность нарушилась. Такой индекс нельзя создать, если таблица содержит записи с повторяющимися значениями поля. Уникальные индексы следует создавать одновременно с созданием таблиц.
имя_индекса уникально в базе данных.
имя_таблицы – имя индексируемой таблицы
имя_столбца – это имя столбца таблицы по значению которого строится индекс. Если указано несколько столбцов, индексы упорядочиваются по значению первого столбца, при совпадении значения – второго и т.д.
Пример:
CREATE INDEX Студфам ON Студент (sname);
Т.к. возможны полные однофамильцы, индекс строится не уникальным. Необходимость поименования индекса в основном связана с возможностью и необходимостью его уничтожения. Уничтожение индекса осуществляется по команде
DROP INDEX имя_индекса;
Две таблицы находятся, как правило, в отношении один ко многим через значения связующих полей. Для приведённого примера такая связь между таблицами Студент и Оценка по значениям полей snum и osnum. При этом, связующее поле со стороны отношения один называется родительским ключом, а со стороны многие – внешним ключом. SQL автоматически поддерживает отношения ссылочной целостности при внесении данных, если для таблицы определён внешний ключ. Это можно сделать в виде ограничения на столбец, являющийся внешним ключом в следующем формате:
REFERENCES родительская_таблица (столбец);
А можно сделать и в виде ограничения на таблицу:
FOREIGN KEY (список_стобцов_внеш_ключа) REFERENS родительская_таблица [(список_столбцов)];
В обоих случаях могут не указываться столбцы ключа родительской таблицы, если они определены параметром PRIMARY KEY. Типы столбцов в ключах обеих таблиц должны соответствовать друг другу.
Пример:
CREATE TABLE оценка (opnum char (3) NOT NULL REFERENS преподаватель (pnum), osnum char (3) NOT NULL REFERENS студент (snum), …
Пример (для таблицы Студент):
CREATE TABLE студент (snum char (3) PRIMARY KEY, sname char (30) NOT NULL, sgrp char (3), FOREIGN KEY (spdp) REFERENCE преподаватель (pnum));
Возможны также экзотические случаи, когда внешний ключ ссылается на таблицу, в которой он сам определён. Например, таблица Преподаватель может содержать столбец со ссылкой каждого преподавателя на заведующего кафедрой, в тоже время, заведующий сам является преподавателем, поэтому необходимо добавить ещё одно поле:
zavcaf char (3) FEFERENCES преподаватель (pnum);
При определении таблицы с внешним ключом можно определить или ограничить выполнение действий над таблицей с родительским ключом:
Запретить удаление записи или обновление родительского ключа при наличии связанных записей в таблице с внешним ключом.
UPDATE/DELETE OF родительская_табл RESTRICTED;
При удалении записи или обновлении родительского ключа автоматически удалять или обновлять записи с тем же внешним ключом.
UPDATE/DELETE OF родительская_табл CASCADES;
При удалении записи или обновлении родительского ключа, значение внешнего ключа автоматически устанавливается в NULL.
UPDATE/DELETE OF родительская_табл NULLS;
Пример:
CREATE TABLE студент (… spdp char (3) REFERENS преподаватель (pnum), UPDATE OF преподаватель CASCADE, DELETE OF преподаватель NULLS);