Учебное пособие Санкт-Петербург «бхв-петербург»


WHERE model ~ '^Bom' ORDER BY when_add



Pdf көрінісі
бет173/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   169   170   171   172   173   174   175   176   ...   256
sql osnovi yazika

WHERE model ~ '^Bom' ORDER BY when_add;
-[ RECORD 1 ]--+---------------------------
aircraft_code | CR2
model
| Bombardier CRJ-200
range
| 2700
when_add
| 2017-02-05 00:27:38.591958
operation
| INSERT
-[ RECORD 2 ]--+---------------------------
aircraft_code | CR2
model
| Bombardier CRJ-200
range
| 3240
when_add
| 2017-02-05 00:27:56.688933
operation
| UPDATE
Представим себе такую ситуацию: руководство компании хочет видеть динамику
продаж билетов по всем направлениям, а именно: общее число проданных билетов
и дату/время последнего увеличения их числа для конкретного направления.
Создадим временную таблицу tickets_directions с четырьмя столбцами:
– города отправления и прибытия — departure_city и arrival_city;
– дата/время последнего увеличения числа проданных билетов —
last_ticket_time;
– число проданных билетов на этот момент времени по данному направлению —
tickets_num.
Создадим таблицу с помощью запроса к представлению «Маршруты» и заполним
данными, однако в ней сначала будет только два первых столбца.
CREATE TEMP TABLE tickets_directions AS
SELECT DISTINCT departure_city, arrival_city FROM routes;
Ключевое слово DISTINCT является здесь обязательным: ведь нам нужны только уни-
кальные пары городов отправления и прибытия.
Добавим еще два столбца и заполним столбец-счетчик нулевыми значениями.
ALTER TABLE tickets_directions
ADD COLUMN last_ticket_time timestamp;
ALTER TABLE tickets_directions
ADD COLUMN tickets_num integer DEFAULT 0;
220


7.2. Обновление строк в таблицах
Поскольку PostgreSQL не требует обязательного создания первичного ключа, то не
будем создавать его. Это не помешает нам однозначно идентифицировать строки
в таблице tickets_directions.
Поскольку в команде ALTER TABLE нет предложения WHERE, в котором было бы усло-
вие, ограничивающее множество обновляемых строк, то будут обновлены все строки
таблицы — во все будет записано значение 0 в столбец tickets_num.
Для того чтобы не усложнять изложение материала, создадим временную таблицу,
являющуюся аналогом таблицы «Перелеты», однако без внешних ключей. Поэтому
мы сможем добавлять в нее строки, не заботясь о добавлении строк в таблицы «Биле-
ты» и «Бронирования». Тем не менее первичный ключ все же создадим, чтобы проде-
монстрировать, что в случае попытки ввода строк с дубликатными значениями пер-
вичного ключа значения счетчиков в таблице tickets_directions наращиваться
не будут.


Достарыңызбен бөлісу:
1   ...   169   170   171   172   173   174   175   176   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет