Create view ms sql: CREATE VIEW (Transact-SQL) — SQL Server

Содержание

Transact-SQL | Представления

176

Работа с базами данных в .NET Framework — SQL Server 2012 — Представления

Исходники баз данных

В предыдущих статьях инструкции DDL и DML рассматривались применительно к базовым таблицам. Данные базовой таблицы хранятся на диске. В отличие от базовых таблиц, представления по умолчанию не существуют физически, т.е. их содержимое не сохраняется на диске. Это не относится к так называемым индексированным представлениям, которые рассматриваются позже. Представления (views) — это объекты базы данных, которые всегда создаются на основе одной или более базовых таблиц (или других представлений), используя информацию метаданных. Эта информация (включая имя представления и способ получения строк из базовых таблиц) — все, что сохраняется физически для представления. По этой причине представления также называются виртуальными таблицами.

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

Представление создается посредством инструкции CREATE VIEW, синтаксис которой выглядит следующим образом:

CREATE VIEW view_name [(column_list)]
    [WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}]
    AS select_statement
    [WITH CHECK OPTION]


Соглашения по синтаксису

Инструкция CREATE VIEW должна быть единственной инструкцией пакета. (Это означает, что эту инструкцию следует отделять от других инструкций группы посредством инструкции GO.)

Параметр view_name задает имя определяемого представления, а в параметре column_list указывается список имен, которые будут использоваться в качестве имен столбцов представления. Если этот необязательный параметр опущен, то используются имена столбцов таблиц, по которым создается представление. Параметр select_statement задает инструкция SELECT, которая извлекает строки и столбцы из таблиц (или других представлений). Параметр WITH ENCRYPTION задает шифрование инструкции SELECT, повышая таким образом уровень безопасности системы баз данных.

Предложение SCHEMABINDING привязывает представление к схеме таблицы, по которой оно создается. Когда это предложение указывается, имена объектов баз данных в инструкции SELECT должны состоять из двух частей, т.е. в виде schema.db_object, где schema — владелец, а db_object может быть таблицей, представлением или определяемой пользователем функцией.

Любая попытка модифицировать структуру представлений или таблиц, на которые ссылается созданное таким образом представление, будет неудачной. Чтобы такие таблицы или представления можно было модифицировать (инструкцией ALTER) или удалять (инструкцией DROP), нужно удалить это представление или убрать из него предложение SCHEMABINDING.

Когда при создании представления указывается параметр VIEW_METADATA, все его столбцы можно обновлять (за исключением столбцов с типом данных timestamp), если представление имеет триггеры INSERT или UPDATE INSTEAD OF.

Инструкция SELECT в представлении не может содержать предложение ORDER BY или параметр INTO. Кроме этого, по временным таблицам нельзя выполнять запросы.

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

  • Для ограничения использования определенных столбцов и/или строк таблиц. Таким образом, представления можно использовать для управления доступом к определенной части одной или нескольких таблиц.

  • Для скрытия подробностей сложных запросов. Если для приложения базы данных требуются запросы со сложными операциями соединения, создание соответствующих представлений может упростить такие запросы.

  • Для ограничения вставляемых или обновляемых значений некоторым диапазоном.

В примере ниже показано создание представления:

USE SampleDb;

GO
CREATE VIEW view_Consultant
    AS SELECT EmpId, ProjectNumber, EnterDate
    FROM Works_on
    WHERE Job = 'Консультант';

Запрос в этом примере выбирает из таблицы Works_on строки, удовлетворяющие условию Job=’Консультант’. Представление view_Consultant определяется строками и столбцами, возвращаемыми этим запросом. На рисунке ниже отображена таблица Works_on, в которой строки, выбранные в представлении view_Consultant, выделены красным цветом:

Запрос в этом примере задает выборку строк, т.е. он создает горизонтальное подмножество базовой таблицы Works_on. Возможно также создание представления с ограничениями на включаемые в него столбцы и строки. Создание такого представления показано в примере ниже:

USE SampleDb;

GO
CREATE VIEW view_WithoutBudget
    AS SELECT Number, ProjectName
    FROM Project;

Запрос в этом примере выбирает для включения в представление view_WithoutBudget все столбцы таблицы Project, за исключением столбца Budget.

Как уже упоминалось ранее, в общем формате инструкции CREATE VIEW не обязательно указывать имена столбцов представления. Однако, с другой стороны, в приведенных далее двух случаях обязательно требуется явно указывать имена столбцов:

В примере ниже показано создание представления, для которого явно указываются имена столбцов:

USE SampleDb;

GO
CREATE VIEW view_Count(projectNumber, countProject)
    AS SELECT ProjectNumber, COUNT(*)
    FROM Works_on
    GROUP BY ProjectNumber;

Здесь имена столбцов представления view_Count должны быть указаны явно по той причине, что инструкция SELECT содержит агрегатную функцию count(*), которая требует, чтобы все столбцы представления были именованы.

Не требуется явно указывать список столбцов в инструкции CREATE VIEW, если применить заголовки столбцов, как это показано в примере ниже:

USE SampleDb;

GO
CREATE VIEW view_Count1
    AS SELECT ProjectNumber, COUNT(*) countProject
    FROM Works_on
    GROUP BY ProjectNumber;

Представление можно создать из другого представления, как показано в примере:

USE SampleDb;

GO
CREATE VIEW view_project_p2
    AS SELECT EmpId
    FROM view_Consultant
        WHERE ProjectNumber ='p2';

Представление view_project_p2 в примере ниже создается из представления view_Consultant. Все запросы, использующие представление view_project_p2, преобразовываются в эквивалентные запросы к базовой таблице Works_on.

Представления можно также создавать посредством среды Management Studio. Для этого выберите в обозревателе объектов базу данных, в которой требуется создать представление, щелкните в ней правой кнопкой мыши узел Views и в открывшемся контекстном меню выберите пункт New View. Откроется редактор представлений, в котором можно выполнять следующие действия:

Изменение и удаление представлений

Для изменения определения представления в языке Transact-SQL применяется инструкция ALTER VIEW. Синтаксис этой инструкции аналогичен синтаксису инструкции CREATE VIEW, применяющейся для создания представления.

Использование инструкции ALTER VIEW позволяет избежать переназначения существующих разрешений для представления. Кроме этого, изменение представления посредством этой инструкции не влияет на объекты базы данных, зависящие от этого представления. Если же модифицировать представление, сначала удалив его (инструкция DROP VIEW), а затем создав новое представление с требуемыми свойствами (инструкция CREATE VIEW), то все объекты базы данных, которые ссылаются на это представление, не будут работать должным образом, по крайней мере, в период времени между удалением представления и его воссоздания.

Использование инструкции ALTER VIEW показано в примере ниже:

USE SampleDb;

GO
ALTER VIEW view_WithoutBudget
    AS SELECT Number, ProjectName
    FROM Project
    WHERE Number >= 'p3';

В этом примере инструкция ALTER VIEW расширяет инструкцию SELECT в представлении view_WithoutBudget новым условием в предложении WHERE.

Инструкция DROP VIEW удаляет из системных таблиц определение указанного в ней представления. Применение этой инструкции показано в примере ниже:

USE SampleDb;

GO
DROP VIEW view_Count;

При удалении представления инструкцией DROP VIEW все другие представления, основанные на удаленном, также удаляются, как показано в примере ниже:

USE SampleDb;

GO
DROP VIEW view_Consultant;

Здесь инструкция DROP VIEW явно удаляет представление view_Consultant, при этом неявно удаляя представление view_project_p2, основанное на представлении view_Consultant. Теперь попытка выполнить запрос по представлению view_project_p2 возвратит сообщение об ошибке.

При удалении базовой таблицы представления, основанные на ней другие представления, не удаляются автоматически. Это означает, что все представления для удаленной таблицы нужно удалять явно, используя инструкцию DROP VIEW. С другой стороны, представления удаленной таблицы можно снова использовать на новой таблице, имеющей такую же логическую структуру, как и удаленная.

Редактирование информации о представлениях

Наиболее важным представлением каталога применительно к представлениям является sys.objects. Как уже упоминалось, это представление каталога содержит информацию касательно всех объектов в текущей базе данных. Все строки этого представления со значением V в столбце type содержат информацию о представлениях.

А представление каталога sys.views содержит дополнительную информацию о существующих представлениях. Наиболее важным столбцом этого представления является столбец with_check_option, который информирует, указано или нет предложение WITH CHECK OPTION. Запрос для определенного представления можно отобразить посредством системной процедуры sp_helptext.

Databases. An example of creating a view in a database of MS SQL Server type using MS Visual Studio. Creating a calculated field

An example of creating a view in a database of MS SQL Server type using MS Visual Studio. Creating a calculated field

This topic describes the step-by-step detailed process of creating a view using the example of the Education. mdf database, which is located in a local file. The database is designed to work under the control of the Microsoft SQL Server DBMS.

Using this example, you can learn how to create your own data views that are obtained from tables. Based on the views, you can create reports to display the results of the program in a convenient (paper) form.


Contents

  • Task
  • Instruction
    • 1. Run Microsoft Visual Studio
    • 2. Connect the Education.mdf database to the databases list of the Server Explorer utility
    • 3. Adding a new view. The command “Add New View”
    • 4. Adding the calculated field “Average”
    • 5. Running the SQL query to display the view
    • 6. Saving the View
    • 7. Displaying a view in the Server Explorer window
    • 8. Viewing the output of the view. The “Show Results” command
  • Related topics

Search other websites:

Task

Let the database, which is located in the file Education. mdf, be given. The database contains two linked Student and Session tables.

The tables are linked by the ID_Book field.

Using the tools of Microsoft Visual Studio, you need create a View with the name View1, which will have the following structure:

Field nameTable
Num_BookStudent
NameStudent
MathematicsSession
InformaticsSession
PhilosophySession
AverageВычисляемое поле

  ⇑

Instruction

1. Run Microsoft Visual Studio
2. Connect the Education.mdf database to the databases list of the Server Explorer utility

In order not to waste time developing and linking the tables of the Education.mdf database, you can download the finished database here. After loading and saving in a certain folder, the database must be connected to the databases list of the Server Explorer utility.

Database connection is realized in one of several standard ways:

  • by selecting the command “Connect to Database …” from the Tools menu;
  • by selecting the “Connect to Database …” button (command) from the Server Explorer utility.

As a result, the wizard window opens, in which you need to configure the database.

Figure 1. Ways of adding/connecting a database

The database configuration process is carried out in sequence with refinements. Windows are opened in which the appropriate settings are set.

For a detailed description of how to connect a Microsoft SQL Server-type database to Microsoft Visual Studio, see the topic:

  • An example of creating/connecting a local database of Microsoft SQL Server, which is located in the * .mdf file

After connection, the window of the Server Explorer utility will look like shown in Figure 2.

Figure 2. Server Explorer with the connected Education. mdf database

  ⇑

3. Adding a new view. The command “Add New View”

The Microsoft Visual Studio system allows you to create a data view (views). The views themselves only display the data of the tables in an easy-to-read format. They are not directly data of tables. In our case, we need to create a view in accordance with the task.



The view is created using the “Add New View” command, which is called from the context menu (Figure 3).

Figure 3. Command “Add New View…”

As a result, the “Add Table” window opens, in which you need to select the tables whose data will be used in the view (Figure 4).

Figure 4. Selecting the tables that will be used in the query

For our case, we need to select both tables.

As a result, the Microsoft Visual Studio window will appear as shown in Figure 5.

Figure 5. Microsoft Visual Studio window after creating a view

In the tables, you need to select the fields that will be used in the view. The order of the selection of fields can correspond to their display in the query in accordance with the condition of the task. This means that the fields of the Student table (NumBook, Name) are first selected, and then the fields of the Session table (Mathematics, Informatics, Philosophy) are selected.

For our case, the selection of fields is shown in Figure 6.

Figure 6. Selecting fields for the view

As you can see from Figure 6, at the bottom of the window you can see a view in the SQL language generated by the system

SELECT  dbo.Student.Num_Book, dbo.Student.Name,
        dbo.Session.Mathematics, dbo.Session.Informatics,
        dbo.Session.Philosophy
FROM    dbo.Session INNER JOIN
          dbo.Student ON dbo.Session.ID_Book = dbo.Student.ID_Book

  ⇑

4. Adding the calculated field “Average”

To create a calculated Average field, you need to change the text of the SQL query for the view at the bottom (see Figure 6, bottom). For example:

SELECT  dbo.Student.Num_Book, dbo.Student.Name,
        dbo.Session.Mathematics, dbo.Session.Informatics,
        dbo.Session.Philosophy,
        (dbo.Session.Mathematics + dbo.Session.Informatics + dbo.Session.Philosophy)/3.0 AS Average
FROM    dbo.Session INNER JOIN
        dbo.Student ON dbo.Session.ID_Book = dbo.Student.ID_Book

The calculated “Average” field is added (Figure 7).

Figure 7. Adding the calculated “Average” field

  ⇑

5. Running the SQL query to display the view

At the bottom of the Figure 7, is shown the result of executing the SQL query for the view. The query is executed by calling the “Execute SQL” command from the “Query Designer” menu or by pressing the ‘!’ Button, as shown in Figure 8.

Figure 8. Calling the execution an SQL query

  ⇑



6. Saving the View

After calling the command

File->Save All

the “Choose Name” window (Figure 9) opens, in which you want to specify the name of the newly created view. In our case, you can leave the name (View1), which is offered by the system by default.

Figure 9. The window of selecting name for the view

  ⇑

7. Displaying a view in the Server Explorer window

After saving the view, the window of the Server Explorer utility will look like shown in Figure 10. As you can see from the figure, the View1 view is displayed in the Server Explorer window.

Figure 10. The Server Explorer window with View1 view

  ⇑

8. Viewing the output of the view. The “Show Results” command

Using the “Show Results” command from the context menu, you can see the result of the View1 view (Figure 11).

Figure 11. Calling the “Show Results” command

After the “Show Results” command is called, a window will appear in which the result of the SQL-query for the View1 view will be displayed.

Figure 12. Result of displaying the view

  ⇑


Related topics

  • An example of creating a query in the database
  • An example of creating/connecting local Microsoft SQL Server database located in the “*. mdf” file
  • An example of creating the “*.mdf” file of local database Microsoft SQL Server in MS Visual Studio

  ⇑


Создание представлений — SQL Server

Обратная связь

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Статья
  • 2 минуты на чтение

Применимо к:
SQL Server (все поддерживаемые версии)
База данных SQL Azure
Управляемый экземпляр Azure SQL
Аналитика синапсов Azure
Система аналитической платформы (PDW)

Вы можете создавать представления в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Представление можно использовать для следующих целей:

  • Чтобы сфокусировать, упростить и настроить восприятие базы данных каждым пользователем.

  • В качестве механизма безопасности, позволяющего пользователям получать доступ к данным через представление без предоставления пользователям разрешений на прямой доступ к базовым таблицам.

  • Для обеспечения обратно совместимого интерфейса для эмуляции таблицы, схема которой изменилась.

В этой теме

  • Прежде чем начать:

    Ограничения и запреты

    Безопасность

  • Чтобы создать вид, используйте:

    Студия управления SQL Server

    Transact-SQL

Перед началом работы

Ограничения и ограничения

Представление может быть создано только в текущей базе данных.

Представление может содержать не более 1024 столбцов.

Безопасность

Разрешения

Требуется разрешение CREATE VIEW в базе данных и разрешение ALTER на схему, в которой создается представление.

Использование SQL Server Management Studio

Создание представления с помощью конструктора запросов и представлений
  1. В Object Explorer разверните базу данных, в которой вы хотите создать новое представление.

  2. Щелкните правой кнопкой мыши папку Views , затем щелкните Новый вид… .

  3. В диалоговом окне Добавить таблицу выберите элемент или элементы, которые вы хотите включить в новое представление, на одной из следующих вкладок: Таблицы, Представления, Функции и Синонимы.

  4. Щелкните Добавить , затем щелкните Закрыть .

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

  6. На панели критериев выберите дополнительные критерии сортировки или фильтрации для столбцов.

  7. В меню Файл щелкните Сохранить имя представления .

  8. В диалоговом окне Choose Name введите имя нового вида и нажмите OK .

    Дополнительные сведения о конструкторе запросов и представлений см. в разделе Инструменты конструктора запросов и представлений (визуальные инструменты для баз данных).

Использование Transact-SQL

Создание представления
  1. В обозревателе объектов подключитесь к экземпляру компонента Database Engine.

  2. На стандартной панели щелкните Новый запрос .

  3. Скопируйте и вставьте следующий пример в окно запроса и нажмите Выполнить .

     ИСПОЛЬЗОВАТЬ AdventureWorks2012 ;
    ИДТИ
    CREATE VIEW HumanResources.EmployeeHireDate
    В КАЧЕСТВЕ
    ВЫБЕРИТЕ p.FirstName, p.LastName, e.HireDate
    FROM HumanResources. Employee AS e ПРИСОЕДИНЯЙТЕСЬ к Person.Person AS p
    ON e.BusinessEntityID = p.BusinessEntityID ;
    ИДТИ
    -- Запрос представления
    ВЫБЕРИТЕ Имя, Фамилию, HireDate
    ОТ HumanResources.EmployeeHireDate
    ЗАКАЗАТЬ ПО Фамилии;
     

Дополнительные сведения см. в разделе CREATE VIEW (Transact-SQL).

Обратная связь

Отправить и просмотреть отзыв для

Этот продукт

Эта страница

Просмотреть все отзывы о странице

SQL: VIEW


В этом руководстве по SQL объясняется, как создавать, обновлять и удалять SQL VIEWS с синтаксисом и примерами.

Описание

SQL VIEW, по сути, представляет собой виртуальную таблицу, которая физически не существует. Скорее, он создается оператором SQL, который объединяет одну или несколько таблиц.

Создать SQL VIEW

Синтаксис

Синтаксис оператора CREATE VIEW в SQL:

 CREATE VIEW имя_представления AS
  ВЫБЕРИТЕ столбцы
  ИЗ столов
  [ГДЕ условия]; 
представление_имя
Имя SQL VIEW, которое вы хотите создать.
ГДЕ условия
Дополнительно. Условия, которые должны быть выполнены для включения записей в VIEW.

Пример

Вот пример использования SQL CREATE VIEW:

 CREATE VIEW sup_orders AS
  ВЫБЕРИТЕ Suppliers.supplier_id, заказы.количество, заказы.цена
  ОТ поставщиков
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ заказы
  ПО Suppliers.supplier_id = orders.supplier_id
  ГДЕ Suppliers.supplier_name = 'IBM'; 

В этом примере SQL CREATE VIEW создается виртуальная таблица на основе набора результатов оператора select. Теперь вы можете запросить SQL VIEW следующим образом:

 SELECT *
ОТ sup_orders; 

Обновление SQL VIEW

Вы можете изменить определение SQL VIEW, не удаляя его, с помощью инструкции SQL CREATE OR REPLACE VIEW.

Синтаксис

Синтаксис оператора SQL CREATE OR REPLACE VIEW:

 CREATE OR REPLACE VIEW view_name AS
  ВЫБЕРИТЕ столбцы
  ИЗ таблицы
  [ГДЕ условия]; 

Пример

Вот пример использования инструкции SQL CREATE OR REPLACE VIEW:

 CREATE или REPLACE VIEW sup_orders AS
  ВЫБЕРИТЕ Suppliers. supplier_id, заказы.количество, заказы.цена
  ОТ поставщиков
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ заказы
  ПО Suppliers.supplier_id = orders.supplier_id
  ГДЕ Suppliers.supplier_name = 'Майкрософт'; 

В этом примере SQL CREATE OR REPLACE VIEW будет обновлено определение SQL VIEW с именем sup_orders без его удаления. Если бы SQL VIEW еще не существовало, SQL VIEW был бы просто создан в первый раз.

Удалить SQL VIEW

После создания SQL VIEW его можно удалить с помощью инструкции SQL DROP VIEW.

Синтаксис

Синтаксис инструкции SQL DROP VIEW:

 DROP VIEW имя_представления; 
представление_имя
Имя представления, которое вы хотите удалить.

Пример

Вот пример использования инструкции SQL DROP VIEW:

 DROP VIEW sup_orders; 

В этом примере SQL DROP VIEW удаляется/удаляется SQL VIEW с именем заказы_поддержки .

Часто задаваемые вопросы

Вопрос: Можно ли обновить данные в SQL VIEW?

Ответ: VIEW в SQL создается путем объединения одной или нескольких таблиц.