Оператор выборки в Transact-SQL. Использование представлений (Лабораторная работа № 3), страница 10

                       groupby coach_type

Второй способ – указать псевдоним для второго столбца внутри оператора select:

            create view coach_types_prices

            as

select coach_type, avg(price) as average_price

                       from coaches, seats, passengers_seats

                       where passengers_seats.id_seat = seats.id_seat

                                   and seats.id_coach = coaches.id_coach

                       groupby coach_type

Теперь рассмотрим ситуацию, когда возникает конфликт имен. Требуется создать представление на основе эквисоединения таблиц coaches и trains. Эквисоединение содержит все столбцы исходных таблиц, поэтому общий столбец id_train встретится в эквисоединении дважды, что недопустимо для представлений. Избежать конфликта имен можно только одним способом: переименовать хотя бы один из столбцов id_train:

            create view coaches_trains (id_coach, coach_number, coach_type, id_train, id_train2, train_name, train_type, train_number)

            as

            select *

                       from coaches, trains

                       where coaches.id_train = trains.id_train

В представлении coaches_trains два идентичных столбца выступают под разными именами: столбец coaches.id_train в представлении носит имя id_train, а trains.id_train переименовывается в id_train2.

2.5.2. Выборка из представлений

Выборка из представлений осуществляется точно так же, как и из таблиц. В частности, возможна выборка из нескольких таблиц и представлений одновременно. А значит, на основе выборки из представлений может быть создано еще одно представление. В этом случае говорят о вложенности представлений. Вложенность представлений в Microsoft SQL Server 2005 не должна превышать 32 уровней.

2.5.3. Модификация данных через представление

Transact-SQL допускает использование имен представлений в операторах insert, update и delete. При этом создается видимость обработки записей представления, хотя на самом деле через представление обрабатываются записи и отдельные поля исходных таблиц БД. Необходимо отметить, что выполнить обработку данных через представление с помощью указанных операторов SQL не всегда возможно. Это связано с действием в СУБД SQL Server следующих ограничений:

·  можно модифицировать только столбцы, которые выбраны непосредственно из таблиц и представлений; нельзя модифицировать столбцы представлений, созданные на основе результатов вычислений;

·  за одну операцию изменения (вставки, удаления) разрешается модифицировать столбцы, принадлежащие только одной таблице; это замечание актуально для представлений, созданных на основе выборки из нескольких таблиц.

2.5.4. Изменение представлений

Изменение представлений осуществляется при помощи команды alterview:

alterview [имя_БД.][имя_схемы.]имя_представления

           [(столбец [,…n])]

           as запрос

Параметры команды полностью аналогичны параметрам команды createview. С помощью оператора alterview можно изменить код запроса для существующего представления и переименовать его столбцы.

2.4.5. Удаление представлений

Чтобы удалить представление из БД, следует воспользоваться SQL-командой dropview, единственным параметром которого является имя представления или список имен представлений, перечисляемых через запятую. Команда dropview удаляет представления только из текущей БД. Удаление представления не приводит к уничтожению данных в таблицах БД.

3. Порядок выполнения работы

1. Изучить теоретическую часть и литературные источники в части программирования SQL-запросов.

2. Для своего варианта задания реализовать запросы к БД. Часть запросов должна быть реализована в виде представлений.

3. Проверить правильность работы всех запросов.

4. Продемонстрировать преподавателю работу запросов в SQL Server Management Studio.

4. Литература

1. Мамаев Е. В. Microsoft ® SQL Server 2000. – СПб.: БХВ-Петербург, 2004. – 1280 с.: ил.