Найти в Дзене
Столяров Филипп

Зачем нужны представления в SQL (View)

Определение:
Представления или Views это виртуальные таблицы. Но в отличии от обычных стандартных таблиц в базе данных представления содержат запросы, которые динамически извлекают используемые данные. Представления дают нам ряд преимуществ. Они упрощают комплексные SQL-операции. Они защищают данные, так как представления могут дать доступ к части таблицы, а не ко всей таблице. Представления также позволяют возвращать отформатированные значения из таблиц в нужной и удобной форме.
Для создания представления используется команда CREATE VIEW Постановка задачи: Представьте, что вы разработчик Баз данных.
В вашу систему загружаются итоги торгов валютными парами и производными продуктами на различные товары. Раньше был один поставщик данных и данные поставлялись двумя различными потоками и попадали в разные таблицы БД «fx_rates» и «gas_prices» В 2022 году поставщик данных сменился и данные стали поступать одним потоком и попадать в другую таблицу в БД «rates_mix». Пользователям неудобно
Оглавление

Определение:

Представления или Views это виртуальные таблицы. Но в отличии от обычных стандартных таблиц в базе данных представления содержат запросы, которые динамически извлекают используемые данные.

Представления дают нам ряд преимуществ. Они упрощают комплексные SQL-операции. Они защищают данные, так как представления могут дать доступ к части таблицы, а не ко всей таблице. Представления также позволяют возвращать отформатированные значения из таблиц в нужной и удобной форме.

Для создания представления используется команда CREATE VIEW

Постановка задачи:

Представьте, что вы разработчик Баз данных.
В вашу систему загружаются итоги торгов валютными парами и производными продуктами на различные товары. Раньше был один поставщик данных и данные поставлялись двумя различными потоками и попадали в разные таблицы БД
«fx_rates» и «gas_prices»

fx_rates
fx_rates
gas_prices
gas_prices

В 2022 году поставщик данных сменился и данные стали поступать одним потоком и попадать в другую таблицу в БД «rates_mix».

rates_mix
rates_mix

Пользователям неудобно работать с тремя разными таблицами, и они просят сделать одну таблицу со всеми данными, но очень оперативно. Свободной памяти на сервере нет для создания объединяющей данные таблицы, в этом случае можно сделать представление c названием «rates_all» (view - виртуальную таблицу), которое объединит все данные.

rates_all
rates_all

Решение задачи:

CREATE VIEW rates_all AS
SELECT
rec_id AS ric,
rec_date AS rec_date,
NULL as currency_code,
high,
low,
[open],
[close],
NULL AS calc_close,
NULL as settlement_price,
NULL AS instrument_description,
NULL AS asset_type_description,
NULL AS security_description,
NULL AS exchange_description,
NULL AS lot_units,
NULL AS expiration_date
FROM
fx_rates

UNION ALL

SELECT
rec_id AS ric,
rec_date AS rec_date,
cur AS currency_code,
high,
low,
[open],
[close],
NULL AS calc_close,
settlement AS settlement_price,
NULL AS instrument_description,
NULL as asset_type_description,
NULL as security_description,
NULL as exchange_description,
unit AS lot_units,
NULL AS expiration_date
FROM
gas_prices

UNION ALL

SELECT
--GetOnlyDigits ('rid')
NULL as ric,
trade_date AS rec_date,
currency_code,
bid_high AS high,
bid_low AS low,
open_bid AS [open],
universal_close_price AS [close],
NULL AS calc_close,
settlement_price,
NULL AS instrument_description,
asset_type_description,
security_description,
exchange_description,
lot_units,
expiration_date
FROM
rates_mix;

Для полноты картины можно было бы еще связать первые две таблицы между собой. Но это уже выходит за пределы темы изучения представлений.

Результатом данного запроса, будет являться созданное представление
rates_all

✔️Таблицы, которые использовались в статье, можно посмотреть здесь: https://disk.yandex.ru/i/L6unNayHpdJSSQ

✔️Благодарю за прочтение статьи. Если хочешь детальнее подготовиться к собеседованию или экзамену по SQL воспользуйся этим обучающим ресурсом:
https://stolyarovf.ru/

✔️Для подписчиков блога Яндекс Дзен скидка 10% по промо коду "Дзен"