CREATE OR REPLACE VIEW seats_by_fare_cond AS
SELECT a.model, s.aircraft_code, s.fare_conditions,
count( * ) AS num_seats
FROM seats
GROUP BY aircraft_code, fare_conditions
ORDER BY aircraft_code, fare_conditions;
93
Однако СУБД выдаст сообщение об ошибке:
ОШИБКА: изменить имя столбца "count" на "num_seats" в представлении
нельзя
,
→
В чем дело? А дело в том, что при первоначальном создании этого представления
третий столбец уже получил имя count (такое имя ему дала СУБД). Поэтому если мы
хотим воспользоваться вариантом команды с фразой OR REPLACE, мы не должны из-
менять названия столбцов ни путем указания псевдонимов, ни с помощью списка
имен столбцов, приводимого в начале команды. Так что если мы все же захотим из-
менить имя столбца в представлении, нам придется сначала удалить это представле-
ние, а затем создать его заново.
DROP VIEW seats_by_fare_cond;
CREATE OR REPLACE VIEW seats_by_fare_cond AS
SELECT a.model, s.aircraft_code, s.fare_conditions,
count( * ) AS num_seats
FROM seats
GROUP BY aircraft_code, fare_conditions
ORDER BY aircraft_code, fare_conditions;
А вот и второй способ задания имен столбцов в представлении — с помощью списка
их имен, заключенного в скобки:
DROP VIEW seats_by_fare_cond;
CREATE OR REPLACE VIEW seats_by_fare_cond
( code, fare_cond, num_seats )
AS
SELECT aircraft_code, fare_conditions, count( * )
FROM seats
GROUP BY aircraft_code, fare_conditions
ORDER BY aircraft_code, fare_conditions;
Представления позволяют облегчить развитие и модификацию базы данных, потому
что они могут позволить сохранить интерфейс неизменным, но сам запрос, который
лежит в основе конкретного представления, может измениться. При этом для при-
кладного программиста представление останется неизменным, поэтому не потребу-
ется переделывать запросы к этому представлению в прикладной программе.
В базе данных «Авиаперевозки» создано представление «Рейсы» (flights_v), сконстру-
ированное на основе таблицы «Рейсы» (flights), но содержащее дополнительную ин-
формацию, а именно:
– подробные сведения об аэропорте вылета (departure_airport,
departure_airport_name, departure_city);
– подробные сведения об аэропорте прибытия (arrival_airport, arrival_airport_name,
arrival_city);
– местное время вылета, как плановое, так и фактическое
(scheduled_departure_local, actual_departure_local);
– местное время прибытия, как плановое, так и фактическое
(scheduled_arrival_local, actual_arrival_local);
94
– продолжительность полета, как плановая, так и фактическая (scheduled_duration,
actual_duration).
Мы только опишем все столбцы представления, а SQL-команду для его создания при-
ведем в главе 6.
Достарыңызбен бөлісу: |