Select№ зачетной книжки, Оценка
From Сессия
Where Код предмета = ( Select Код предмета
From Предметы
Where Имя предмета = «Базы данных» )
as «Оценки „Базы данных“ ;
Применение здесь опции as означает, что мы присвоили этому запросу псевдоним «Оценки „Базы данных“ . Сделали мы это для удобства дальнейшей работы с этим запросом.
Далее, в этом запросе подзапрос:
Select Код предмета
From Предметы
Where Имя предмета = «Базы данных» ;
позволяет выделить из отношения «Сессия» те кортежи, которые относятся к рассматриваемому предмету, т. е. к базам данных.
Интересно, что этот внутренний подзапрос может возвращать не более одного значения, так как атрибут «Имя предмета» является ключом отношения «Предметы», т. е. все его значения уникальны.
А весь запрос «Оценки „Базы данных“ позволяет выделить из отношения «Сессия» данные о тех студентах (их номера зачетных книжек и оценки), которые удовлетворяют условию, оговоренному в подзапросе, т. е. информацию о предмете под названием «База данных».
Теперь составим основной запрос, используя уже полученные результаты.
Select Студенты. № зачетной книжки ,
Trim( Фамилия ) + « » + Left( Имя , 1) + «.» + Left( Отчество , 1) + «.» as ФИО , Оценки «Базы данных» . Оценка
From Студенты inner join
(
Select№ зачетной книжки, Оценка
From Сессия
Where Код предмета = ( Select Код предмета
From Предметы
Where Имя предмета = «Базы данных» )
) as «Оценки „Базы данных“.
on Студенты. № зачетной книжки = Оценки «Базы данных». № зачетной книжки.
Итак, сначала мы перечисляем атрибуты, которые будет необходимо вывести, после окончания работы запроса. Необходимо упомянуть, что атрибут «№ зачетной книжки» из отношения Студенты, оттуда же – атрибуты «Фамилия», «Имя» и «Отчество». Правда, два последних атрибута выводим не полностью, а только первые буквы. Также мы упоминаем атрибут «Оценка» из запроса Оценки «Базы данных , которое ввели раньше.
Выбираем мы все эти атрибуты из внутреннего соединения отношения «Студенты» и запроса «Оценки „Базы данных“ . Это внутреннее соединение, как мы можем видеть, берется нами по условию равенства номеров зачетной книжки. В результате этой операции внутреннего соединения, к отношению «Студенты» добавляются оценки.
Надо заметить, что так как атрибуты «Фамилия», «Имя» и «Отчество» по условию не допускают Null-значений и не являются пустыми, то формула вычисления, возвращающая атрибут «ФИО» ( Trim(Фамилия) + « » + Left(Имя, 1) + «.» + Left(Отчество, 1) + «.» asФИО), соответственно не требует дополнительных проверок, упрощается.
Лекция № 7. Базовые отношения
Как мы уже знаем, базы данных – это как бы своеобразный контейнер, основное предназначение которого заключается в хранении данных, представленных в виде отношений.
Необходимо знать, что в зависимости от своей природы и структуры, отношения делятся на:
1) базовые отношения;
2) виртуальные отношения.
Отношения базового вида содержат только независимые данные и не могут быть выражены через какие-либо другие отношения баз данных.
В коммерческих системах управления базами данных базовые отношения обычно называются просто таблицамив отличие от представлений, соответствующих понятию виртуальных отношений. В данном курсе мы будем довольно подробно рассматривать только базовые отношения, основные приемы и принципы работы с ними.
Типы данных, как и отношения, делятся на базовыеи виртуальные.
(О виртуальных типах данных мы поговорим чуть позже, посвятим этой теме отдельную главу.)
Базовые типы данных– это любые типы данных, заданные в системах управления базами данных изначально, т. е. присутствующие там по умолчанию (в отличие от пользовательского типа данных, который мы проанализируем сразу после прохождения типа данных базового).
Читать дальше
Конец ознакомительного отрывка
Купить книгу