Базы данных | страница 33
Fromимя отношения;
В языке SQL существует специальное обозначение для необязательных элементов выражений – квадратные скобки […]. Поэтому в самом общем виде операция проекции будет выглядеть следующим образом:
Select [distinct] список имен атрибутов
Fromимя отношения;
Однако если результат применения операции гарантированно не содержит дубликатов или же дубликаты все-таки допустимы, то опцию distinct лучше не указывать, чтобы не загромождать запись, т. е. из соображений производительности работы оператора.
Рассмотрим пример, иллюстрирующий возможность стопроцентной уверенности в отсутствии дубликатов. Пусть дана уже известная нам схема отношений:
Успеваемость (№ зачетной книжки, Семестр, Код предмета, Оценка, Дата).
Пусть дан следующий оператор Select:
Select№ зачетной книжки, Семестр, Код предмета
FromУспеваемость;
Здесь, как легко видеть, три возвращающихся оператором атрибута образуют ключ отношения. Именно поэтому опция distinct становится излишней, ведь дубликатов гарантированно не будет. Это следует из требования, накладываемого на ключи, называемого ограничением уникальности. Подробнее это свойство мы рассмотрим дальше, но если атрибут ключевой, то дубликатов в нем нет.
3. Операция переименования.
Операция переименования атрибутов на языке структурированных запросов осуществляется довольно просто. А именно воплощается в действительность следующим алгоритмом:
1) в списке имен атрибутов фразы Select перечисляются те атрибуты, которые необходимо переименовать;
2) к каждому указанному атрибуту добавляется специальное ключевое слово as;
3) после каждого вхождения слова as указывается то имя соответствующего атрибута, на которое необходимо поменять имя исходное.
Таким образом, с учетом всего вышесказанного, оператор, соответствующий операции переименования атрибутов, будет выглядеть следующим образом:
Selectимя атрибута 1 as новое имя атрибута 1, …
Fromимя отношения;
Покажем работу этого оператора на примере. Пусть дана уже знакомая нам схема отношения:
Успеваемость (№ зачетной книжки, Семестр, Код предмета,Оценка, Дата);
Пусть у нас имеется заказ поменять имена некоторых атрибутов, а именно вместо «№ зачетной книжки» должно стоять «№ зачетки» и вместо «Оценка» – «Балл».
Запишем, как будет выглядеть оператор Select, реализующий эту операцию переименования:
Selectзачетной книжки as № зачетки, Семестр, Код предмета, Оценка as Балл, Дата
FromУспеваемость;
Таким образом, результатом применения этого оператора будет новая схема отношения, отличающаяся от исходной схемы отношения «Успеваемость» именами двух атрибутов.