SQL Server СОЗДАТЬ ПРЕДСТАВЛЕНИЕ

В этом руководстве вы узнаете, как использовать оператор SQL Server CREATE VIEW для создания новых представлений.

Чтобы создать новое представление в SQL Server, используйте оператор CREATE VIEW, как показано ниже:

CREATE VIEW [OR ALTER] schema_name.view_name [(column_list)]
AS
    select_statement;

В этом синтаксисе:

  • Сначала укажите имя представления после ключевых слов CREATE VIEW. schema_name — это имя схемы, к которой принадлежит представление.
  • Во-вторых, укажите оператор SELECT(select_statement), который определяет представление после ключевого слова AS. Оператор SELECT может ссылаться на одну или несколько таблиц.

Если вы явно не укажете список столбцов для представления, SQL Server будет использовать список столбцов, полученный из оператора SELECT.

Если вы хотите переопределить представление, например, добавить в него больше столбцов или удалить из него некоторые столбцы, вы можете использовать ключевые слова OR ALTER после ключевых слов CREATE VIEW.

Примеры SQL Server CREATE VIEW

Для демонстрации мы будем использовать таблицы orders, order_items и products из образца базы данных.

Образцы таблиц SQL Server CREATE VIEW

Создание простого примера представления

Следующий оператор создает представление с именем daily_sales на основе таблиц orders, order_items и products:

CREATE VIEW sales.daily_sales
AS
SELECT
    year(order_date) AS y,
    month(order_date) AS m,
    day(order_date) AS d,
    p.product_id,
    product_name,
    quantity * i.list_price AS sales
FROM
    sales.orders AS o
INNER JOIN sales.order_items AS i
    ON o.order_id = i.order_id
INNER JOIN production.products AS p
    ON p.product_id = i.product_id;

После создания представления daily_sales вы можете запросить данные из базовых таблиц, используя простой оператор SELECT:

SELECT 
    * 
FROM 
    sales.daily_sales
ORDER BY
    y, m, d, product_name;

Ниже показан результат:

Пример создания представления SQL Server

Переопределение примера представления

Чтобы добавить столбец с именем клиента в представление sales.daily_sales, используйте CREATE VIEW OR ALTER следующим образом:

CREATE OR ALTER sales.daily_sales(
    year,
    month,
    day,
    customer_name,
    product_id,
    product_name
    sales
)
AS
SELECT
    year(order_date),
    month(order_date),
    day(order_date),
    concat(
        first_name,
        ' ',
        last_name
    ),
    p.product_id,
    product_name,
    quantity * i.list_price
FROM
    sales.orders AS o
    INNER JOIN
        sales.order_items AS i
    ON o.order_id = i.order_id
    INNER JOIN
        production.products AS p
    ON p.product_id = i.product_id
    INNER JOIN sales.customers AS c
    ON c.customer_id = o.customer_id;

В этом примере мы явно указали список столбцов для представления.

Следующий оператор запрашивает данные из представления sales.daily_sales:

SELECT 
    * 
FROM 
    sales.daily_sales
ORDER BY 
    y, 
    m, 
    d, 
    customer_name;

Вот что получилось:

Пример представления «Создать или изменить» SQL Server

Пример создания представления с использованием агрегатных функций

Следующий оператор создает представление с именем staff_sales, которое суммирует продажи по персоналу и годам с помощью агрегатной функции SUM():

CREATE VIEW sales.staff_sales(
        first_name, 
        last_name,
        year, 
        amount
)
AS 
    SELECT 
        first_name,
        last_name,
        YEAR(order_date),
        SUM(list_price * quantity) amount
    FROM
        sales.order_items i
    INNER JOIN sales.orders o
        ON i.order_id = o.order_id
    INNER JOIN sales.staffs s
        ON s.staff_id = o.staff_id
    GROUP BY 
        first_name, 
        last_name, 
        YEAR(order_date);

Следующий оператор возвращает содержимое представления:

SELECT  
    * 
FROM 
    sales.staff_sales
ORDER BY 
 first_name,
 last_name,
 year;

Вывод:

SQL Server Create View с агрегатной функцией

В этом руководстве вы узнали, как создать новое представление с помощью оператора SQL Server CREATE VIEW.

Мирослав С.

Автор статей, ИБ-специалист