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



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

WITH min_ranges AS
( SELECT aircraft_code,
rank() OVER (
PARTITION BY left( model, 6 )
ORDER BY range
) AS rank
FROM aircrafts_tmp
WHERE model ~ '^Airbus' OR model ~ '^Boeing'
)
DELETE FROM aircrafts_tmp a
USING min_ranges mr
WHERE a.aircraft_code = mr.aircraft_code
AND mr.rank = 1
RETURNING *;
225


Глава 7. Изменение данных
Мы включили в команду DELETE предложение RETURNING * для того, чтобы пока-
зать, как выглядят комбинированные строки, сформированные с помощью предло-
жения USING. Конечно, удаляются не они, а только оригинальные строки из таблицы
aircrafts_tmp.
aircraft_code |
model
| range | aircraft_code | rank
---------------+-----------------+-------+---------------+------
321
| Airbus A321-200 | 5600 | 321
|
1
733
| Boeing 737-300 | 4200 | 733
|
1
(2 строки)
В заключение этого раздела упомянем еще команду TRUNCATE, которая позволяет
быстро удалить все строки из таблицы. Следующие две команды позволяют удалить
все строки из таблицы aircrafts_tmp:
DELETE FROM aircrafts_tmp;
TRUNCATE aircrafts_tmp;
Однако команда TRUNCATE работает быстрее.
Контрольные вопросы и задания
1. Добавьте в определение таблицы aircrafts_log значение по умолчанию
current_timestamp и соответствующим образом измените команды INSERT,
приведенные в тексте главы.
2. В предложении RETURNING можно указывать не только символ «∗», означающий
выбор всех столбцов таблицы, но и более сложные выражения, сформированные
на основе этих столбцов. В тексте главы мы копировали содержимое таблицы
«Самолеты» в таблицу aircrafts_tmp, используя в предложении RETURNING
именно «∗». Однако возможен и другой вариант запроса:


Достарыңызбен бөлісу:
1   ...   173   174   175   176   177   178   179   180   ...   256




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

    Басты бет