- •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, основные понятия.
Тема 10.
1. Создание представлений .
2. Определение правд доступа к данным.
1. Создание представлений.
Таблицы, о которых раньше шла речь, называются базовыми таблицами. Они, как правило, содержат реальные данные. С другой стороны, результат выполнения запроса – это тоже таблица, и было бы удобно использовать эти таблицы наряду с базовыми, т.е. строить по ним новые запросы. Это позволяет делать механизм SQL, называемый представлениями.
Представление – это описание запроса, сохранённое под некоторым именем. Представление определяется с помощью следующей команды:
CREATE VIEW имя_представления [список_столбцов_представления] AS запрос_выборки
Пример:
Определить представление для получения сведений о преподавателях кафедры К-1.
CREATE VIEW имя_представления Кафедра1 AS SELECT * FROM Преподаватель WHERE pcaf = «K-1»;
Следует отметить, что запрос по команде CREATE VIEW не выполняется, а происходит запоминание описания запроса.
Если список столбцов представления не определён, то столбцы получают имена столбцов базовой таблицы, перечисленных в предложении SELECT. Запрос выборки в представлении может быть любой сложности, содержать подзапросы и сам использовать представления вместо базовых таблиц. Уничтожить представление можно с помощью следующей команды:
DROP VIEW имя_представления;
Представления очень удобно использовать по следующим причинам:
Часто используемые запросы можно сохранить в виде представлений, что упрощает получение выходных данных и конструирования новых запросов на основе представлений.
Пример:
Если определено представление Кафедра1, то, в дальнейшем, список сотрудников кафедры можно получить по следующим запросам:
SELECT * FROM Кафедра1;
Определим следующее представление:
CREATE VIEW Дипломы AS SELECT pcaf, pname, sname FROM Преподаватель WHEREdfgkjdlfjgdlkjgdklg
Теперь возможны различные запросы к этому представлению.
Пример 1:
Получить список дипломников определённой кафедры:
SELECT * FROM Дипломы WHERE pcaf = «K-1»;
Пример2:
Получить количество дипломников у преподавателя:
SELECT pname, COUNT(*) FROM Дипломы GROUP BY pname;
Возможность открывать доступ пользователям только к той части информации, которую вы посчитаете нужной для пользователей. Т.е. базовые таблицы можно целиком сделать недоступными, а через представления дать пользователю доступ и обновление только части определённой информации в таблице. Следует отметить, что использование представлений для получения данных вызывает определённые проблемы производительности. Одним из наиболее сложных и неоднозначных аспектов представлений является применение их в командах обновления данных. Т.к. сами представления не содержат данных, то обновляться должны базовые таблицы. Если команду обновления данных можно применить к представлению, то такое представление является обновляемым, если нет – читаемым. Рассмотрим основные критерии, по которым представление считается обновляемым:
Оно должно базироваться на базовой таблице (на одной) и включать её в первичный ключ.
Оно не должно содержать полей, полученных с помощью выражений, в том числе, с помощью функций агрегирования.
Оно не должно содержать DISTINCT или GROUP BY .
Оно не должно использовать подзапросы (это ограничение стандарта ANSI, но некоторые системы это позволяют).
Оно может основываться на представлении, но это представление само должно быть обновляемым.
Для INSERT оно должно включать все поля базовой таблицы, имеющие ограничение NOT NULL.
Через представления в базовую таблицу может быть добавлена запись, которая сама в представление не входит. Например, корректным является следующий запрос:
INSERT INTO Кафедра1 VALUES («004», «П-4», «К-2»)
Однако, добавленная таким образом запись для преподавателя К-2 не будет отображена в представлении. Такая ситуация, как правило, недопустима.
Для того, чтобы обеспечить проверку условия запроса для вновь добавляемых записей, в запросах следует указывать предложение WITH CHECK OPTION. Для нашего примера это выглядит следующим образом:
CREATE VIEW Кафедра1 AS SELECT * FROM Преподаватель WHERE pcaf = «K-1» WITH CHECK OPTION;