Как изменить представление sql

Из данного материала Вы узнаете, что такое Представления (VIEW) и для чего они нужны в Microsoft SQL Server, а также научитесь создавать, изменять и удалять представления на языке T-SQL

Приветствую всех посетителей сайта Info-Comp.ru! Сегодня мы с Вами поговорим о таких объектах Microsoft SQL Server, как «Представления», Вы узнаете, что это за объекты, для чего они нужны, а также как создавать, изменять и удалять представления на языке T-SQL.

Представление (VIEW) в T-SQL

Заметка! Что такое T-SQL. Подробное описание для начинающих.

Содержание

  1. Представление (VIEW) в Microsoft SQL Server
  2. Для чего нужны представления
  3. Какие бывают представления
  4. Работа с представлениями на T-SQL
  5. Исходные данные
  6. Создание представлений
  7. Изменение представлений
  8. Удаление представлений
  9. Обновляемые представления в Microsoft SQL Server

Представление (VIEW) в Microsoft SQL Server

Представление (VIEW) – это объект базы данных Microsoft SQL Server, который хранит в себе запрос SELECT и в случае обращения к данному объекту будет возвращен результирующий набор данных, который формирует запрос, указанный в определении представления.

Иными словами, это виртуальная (логическая) таблица, она не содержит в себе данных, но к ней можно обращаться как к обычной таблице, и она будет возвращать Вам данные. Обычно такой объект называют «Вьюха».

Для чего нужны представления

Если достаточно часто в своих SQL запросах Вы используете однотипные вложенные запросы, которые возвращают табличные данные, т.е. являются производными таблицами, то для удобства и сокращения кода Вы можете сохранить такие вложенные запросы в виде представления. И затем, где Вам требуется использовать именно тот набор данных, который Вы указали в запросе, Вы будете указывать название представления, точно так же как мы указываем название таблиц, согласитесь — это очень удобно!

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

  • Упрощения и сокращения кода запроса;
  • Повышения читабельности кода запроса;
  • Сокрытия сложности реализации задачи от пользователя;
  • Обеспечения эффективных путей доступа к данным;
  • Обеспечения корректности производных данных;
  • Более легкого управления. Чтобы внести изменения в алгоритм, формирующий данные, которые возвращает представление, не требуется изменять код везде, где используется этот алгоритм, достаточно изменить код в одном определении представления.

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

Заметка! Для чего нужны хранимые процедуры в языке T-SQL.

Какие бывают представления

Представления бывают:

  • Пользовательские – это те, которые мы сами создаем;
  • Системные – это представления, которые уже есть в SQL сервере. Они возвращают нам системную информацию.

Исходные данные

Сначала нам необходимо создать тестовые данные для наших примеров.

Допустим, у нас будет таблица Goods, которая хранит некую информацию о товарах, и таблица Categories, которая хранит данные о категориях товара.

   
   --Создание таблицы
   CREATE TABLE Goods (
	ProductId INT IDENTITY(1,1) NOT NULL,
	Category INT NOT NULL,
	ProductName VARCHAR(100) NOT NULL,
	Price MONEY NULL,
   );

   --Добавление данных в таблицу
   INSERT INTO Goods(Category, ProductName, Price)
	VALUES (1, 'Клавиатура', 30),
	       (1, 'Монитор', 100),
	       (2, 'Смартфон', 200);

   --Создание таблицы с категориями
   CREATE TABLE Categories (
	CategoryId INT IDENTITY(1,1) NOT NULL,
	CategoryName VARCHAR(100) NOT NULL
   );

   --Добавление данных в таблицу с категориями
   INSERT INTO Categories
	VALUES ('Комплектующие компьютера'),
	       ('Мобильные устройства');

   SELECT * FROM Goods;
   SELECT * FROM Categories;

Скриншот 1

Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

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

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

Создается представление с помощью инструкции CREATE VIEW.

Для решения нашей задачи мы можем создать следующее представление.

   
   CREATE VIEW CountProducts
   AS
	SELECT C.CategoryName AS CategoryName,  
		   COUNT(*) AS CntProducts
	FROM Goods G
	INNER JOIN Categories C ON Category = C.CategoryId
	GROUP BY C.CategoryName;

Скриншот 2

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

Курс по SQL для начинающих

Примечание! В представлении нельзя использовать секцию ORDER BY, т.е. сортировку, в случае необходимости, отсортировать данные Вы можете, когда будете обращаться к этому представлению. Использование ORDER BY возможно, только если указан оператор TOP.

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

   
   SELECT * FROM CountProducts;

Скриншот 3

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

А сейчас давайте допустим, что нам нужно, чтобы это представление возвращало еще и идентификатор категории, если Вы обратили внимание, то в предыдущем примере таких данных нет. Для этого используем инструкцию ALTER VIEW, которая подразумевает изменение представления.

   
   ALTER VIEW CountProducts
   AS
	SELECT C.CategoryId,
		   C.CategoryName AS CategoryName,  
		   COUNT(*) AS CntProducts
	FROM Goods G
	INNER JOIN Categories C ON Category = C.CategoryId
	GROUP BY C.CategoryId, C.CategoryName;

   GO

   SELECT * FROM CountProducts;

Скриншот 4

В данном случае мы написали инструкцию ALTER VIEW, которая говорит SQL серверу, что мы хотим изменить существующий объект, затем указали название представления, чтобы сервер мог определить, какое именно представление мы хотим изменить, после ключевого слова AS мы указали новое определение представления, т.е. измененный запрос SELECT.

Чтобы отделить инструкцию изменения представления от SQL запроса на выборку, мы написали команду GO.

Заметка! Транзакции в T-SQL – основы для новичков с примерами.

Удаление представлений

Если Вам представление больше не требуется, т.е. Вы им больше не будете пользоваться, и оно не используется в других представлениях, функциях или процедурах, иными словами, на него никто не ссылается, то Вы его можете удалить, это делается с помощью инструкции DROP VIEW.

   
   DROP VIEW CountProducts;

Скриншот 5

Теперь данного представления больше нет, и к нему Вы больше обратиться не сможете.

Обновляемые представления в Microsoft SQL Server

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

  • Любое изменение (UPDATE, INSERT или DELETE) должно касаться столбцов только одной базовой таблицы;
  • Столбцы, данные которых Вы хотите изменить, должны напрямую ссылаться на столбцы базовой таблицы, иными словами, нельзя внести изменения в столбцы, которые были сформированы в представлении, например, агрегатной функцией или другими вычислениями.

Допустим, у нас есть представление, которое возвращает список товаров. Для примера мы его назвали GoodsUpdate.

   
   CREATE VIEW GoodsUpdate
   AS
	SELECT ProductId, Category, ProductName, Price
	FROM Goods;

   GO

Заметка! Чем отличаются функции от хранимых процедур в T-SQL.

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

   
   SELECT * FROM GoodsUpdate;

   GO

   UPDATE GoodsUpdate SET Price = Price + 10
   WHERE Category = 2;

   GO

   SELECT * FROM GoodsUpdate;

Скриншот 6

Мы видим, что данные успешно изменены.

Заметка! Для комплексного изучения языка SQL и T-SQL рекомендую пройти онлайн-курсы по T-SQL, на которых используется последовательная методика обучения и рассматриваются все объекты SQL Server и конструкции языка T-SQL.

На сегодня это все, надеюсь, материал был Вам интересен и полезен, до новых встреч!

Представления и табличные объекты

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

Последнее обновление: 14.08.2017

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

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

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

CREATE VIEW название_представления [(столбец_1, столбец_2, ....)]
AS выражение_SELECT

Например, пусть у нас есть три связанных таблицы:

CREATE TABLE Products
(
    Id INT IDENTITY PRIMARY KEY,
    ProductName NVARCHAR(30) NOT NULL,
    Manufacturer NVARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price MONEY NOT NULL
);
CREATE TABLE Customers
(
    Id INT IDENTITY PRIMARY KEY,
    FirstName NVARCHAR(30) NOT NULL
);
CREATE TABLE Orders
(
    Id INT IDENTITY PRIMARY KEY,
    ProductId INT NOT NULL REFERENCES Products(Id) ON DELETE CASCADE,
    CustomerId INT NOT NULL REFERENCES Customers(Id) ON DELETE CASCADE,
    CreatedAt DATE NOT NULL,
    ProductCount INT DEFAULT 1,
    Price MONEY NOT NULL
);

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

CREATE VIEW OrdersProductsCustomers AS 
SELECT Orders.CreatedAt AS OrderDate, 
		Customers.FirstName AS Customer,
		Products.ProductName As Product  
FROM Orders INNER JOIN Products ON Orders.ProductId = Products.Id
INNER JOIN Customers ON Orders.CustomerId = Customers.Id

То есть данное представление фактически будет возвращать сводные данные из трех таблиц. И после его создания мы сможем его увидеть в
узле Views у выбранной базы данных в SQL Server Management Studio:

Views in SQL Server Management Studio

Теперь используем созданное выше представление для получения данных:

SELECT * FROM OrdersProductsCustomers

Представления Views в MS SQL Server

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

Представления могут иметь не более 1024 столбцов и могут обращаться не более чем к 256 таблицам.

Также можно создавать представления на основе других представлений. Такие представления еще называют вложенными (nested views). Однако уровень вложенности не может быть больще 32-х.

Команда SELECT, используемая в представлении, не может включать выражения INTO
или ORDER BY (за исключением тех случаев, когда также применяется выражение TOP или OFFSET).
Если же необходима сортировка данных в представлении, то выражение ORDER BY применяется в команде SELECT, которая извлекает данные из представления.

Также при создании представления можно определить набор его столбцов:

CREATE VIEW OrdersProductsCustomers2 (OrderDate, Customer,Product)
AS SELECT Orders.CreatedAt,
		Customers.FirstName,
		Products.ProductName
FROM Orders INNER JOIN Products ON Orders.ProductId = Products.Id
INNER JOIN Customers ON Orders.CustomerId = Customers.Id

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

Для изменения представления используется команда ALTER VIEW. Эта команда имеет практически тот же самый синтаксис, что и CREATE VIEW:

ALTER VIEW название_представления [(столбец_1, столбец_2, ....)]
AS выражение_SELECT

Например, изменим выше созданное представление OrdersProductsCustomers:

ALTER VIEW OrdersProductsCustomers
AS SELECT Orders.CreatedAt AS OrderDate, 
		Customers.FirstName AS Customer,
		Products.ProductName AS Product,
		Products.Manufacturer AS Manufacturer
FROM Orders INNER JOIN Products ON Orders.ProductId = Products.Id
INNER JOIN Customers ON Orders.CustomerId = Customers.Id

Удаление представления

Для удаления представления вызывается команда DROP VIEW:

DROP VIEW OrdersProductsCustomers

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

View is a virtual table based on the result-set of an SQL statement. It is like the subset of the table and basically created to optimize the database experience.

Like real table, this also contains rows and column. The data in a view are the data extracted from one or more real tables in the database.

We can perform all the functions to the view as we do with the tables.

Create VIEW syntax:

CREATE VIEW view_name AS SELECT
column_1, column_2, ...
FROM table_name WHERE condition;

Renaming of view can be done through Object explorer in SQL Server.

Step 1: Create database

Use the following command to create database.

Query:

CREATE TABLE geeks;

Step 2: Use database

Query:

USE geeks;

Step 3: Table definition

We have the following geeksforgeeks table in the database.

Query:

CREATE TABLE geeksforgeeks
(FIRSTNAME varchar(20), 
LASTNAME varchar(20),
GENDER varchar(10), AGE int);

Step 4: Insert values

Following command is used to insert values into the table.

Query:

INSERT INTO geeksforgeeks VALUES
('ROMY','KUMARI','FEMALE', 22),
 ('PUSHKAR', 'JHA', 'MALE', 23),
('SOUMYA', 'SHRIYA', 'FEMALE', 22), 
('NIKHIL', 'KALRA', 'MALE', 23),
('ROHIT', 'KUMAR', 'MALE', 23), 
('ASTHA', 'GUPTA', 'FEMALE',22),
('SAMIKSHA', 'MISHRA', 'FEMALE', 22), 
('MANU', 'PILLAI', 'MALE', 24);

Step 5: View data of the table

Query:

SELECT * FROM geeksforgeeks;

Output:

Step 6: Create View 

Query:

CREATE VIEW FEMALE AS SELECT fIRSTNAME, LASTNAME,AGE
FROM geeksforgeeks WHERE GENDER='FEMALE';

This will have the values whose gender is female.

Step 7: See the content of the view

Content can be viewed with the same query as we use for table.

Query:

SELECT * FROM female;

Output:

Step 8 : Rename view from object explorer

Steps to rename view:

  • Select View from menu bar.
  • Select Object explorer option. Object explorer will be appeared on left side of the screen.
  • Select Database folder and select your database (geeks we have used in this article).
  • Inside the database, select View option.
  • Right click on you viewname and select RENAME option.
  • Give new name as per your choice.
  • Object explorer:

  • View that we have created:

  • Rename by right clicking on it:

  • We have changed the name of view to ‘Changed_name’

Step 8: See the content of view using new view name

Query:

SELECT * FROM Changed_name;

Output:

View is a virtual table based on the result-set of an SQL statement. It is like the subset of the table and basically created to optimize the database experience.

Like real table, this also contains rows and column. The data in a view are the data extracted from one or more real tables in the database.

We can perform all the functions to the view as we do with the tables.

Create VIEW syntax:

CREATE VIEW view_name AS SELECT
column_1, column_2, ...
FROM table_name WHERE condition;

Renaming of view can be done through Object explorer in SQL Server.

Step 1: Create database

Use the following command to create database.

Query:

CREATE TABLE geeks;

Step 2: Use database

Query:

USE geeks;

Step 3: Table definition

We have the following geeksforgeeks table in the database.

Query:

CREATE TABLE geeksforgeeks
(FIRSTNAME varchar(20), 
LASTNAME varchar(20),
GENDER varchar(10), AGE int);

Step 4: Insert values

Following command is used to insert values into the table.

Query:

INSERT INTO geeksforgeeks VALUES
('ROMY','KUMARI','FEMALE', 22),
 ('PUSHKAR', 'JHA', 'MALE', 23),
('SOUMYA', 'SHRIYA', 'FEMALE', 22), 
('NIKHIL', 'KALRA', 'MALE', 23),
('ROHIT', 'KUMAR', 'MALE', 23), 
('ASTHA', 'GUPTA', 'FEMALE',22),
('SAMIKSHA', 'MISHRA', 'FEMALE', 22), 
('MANU', 'PILLAI', 'MALE', 24);

Step 5: View data of the table

Query:

SELECT * FROM geeksforgeeks;

Output:

Step 6: Create View 

Query:

CREATE VIEW FEMALE AS SELECT fIRSTNAME, LASTNAME,AGE
FROM geeksforgeeks WHERE GENDER='FEMALE';

This will have the values whose gender is female.

Step 7: See the content of the view

Content can be viewed with the same query as we use for table.

Query:

SELECT * FROM female;

Output:

Step 8 : Rename view from object explorer

Steps to rename view:

  • Select View from menu bar.
  • Select Object explorer option. Object explorer will be appeared on left side of the screen.
  • Select Database folder and select your database (geeks we have used in this article).
  • Inside the database, select View option.
  • Right click on you viewname and select RENAME option.
  • Give new name as per your choice.
  • Object explorer:

  • View that we have created:

  • Rename by right clicking on it:

  • We have changed the name of view to ‘Changed_name’

Step 8: See the content of view using new view name

Query:

SELECT * FROM Changed_name;

Output:


������������� (VIEW) (� ������� ��� ����� «��������» — ����. ���.) ���
������ ������, ������� �� �������� ������� ������ ��� ���������. ��� ���
�������, �أ ���������� ���������� �� ������ ������ � ������� ����������
�������. �� ���� ��������� �������� � ��������, ��� ��������� �������������
���������� ��������������.

� ���� ����� �� �������, ��� ����� �������������, ��� ��� ���������, � �������
� �� ������������ � ������������. ������������� �������������, ���������� ��
���������� ��������� ��������, ����� ��� ����������� � ���������, �������������
����� ���������, � ��������� ������� ���� ������� ������� �� ��������� � ���������.

��� ����� �������������?

�������, � �������� �� ����� ���� �� ��� ���, ���������� �������� ���������.
��� �������, ������� �������� ������. ������ ������� ������ ��� ������ —
�������������. ������������� ��� �������, �أ ���������� ���������� ���
���������� �� ������ ������. ��� �������� � �������� � ���������� DML ����� ���
��, ��� � �������� �������, �� �� �������� ������� ����������� ������.

������������� ������� �����, ����� ������� �� �������������� ���������� (���
��� ����, ��� � ������ �����, ��� �� ����� �������), ������� ������� �������� �
������� �������. ������������� ��� ���������� ������, ������� ����������� ������
���, ����� ������������� ���������� ����� �������. ����� ������� ��� ���� �
������ ������ ���������� ����������� �������������.

������� CREATE VIEW

�� �������� ������������� �������� CREATE VIEW. ��� ������� �� ���� CREATE
VIEW (������� �������������), ����� �������������, ������� ����� �������, ��́��� AS (���) � �������, ��� � ��������� �������:

       CREATE VIEW Londonstaff
          AS SELECT *
          FROM Salespeople
          WHERE city = 'London';

������ � ��� ���� ������������� Londonstaff. �� ������
������������ ��� ������������� ����� ��� ��, ��� � ����� ������ �������. �����
���� �������� ������, �����������, ������� �, �������� �� � ���������� � �������
��������� � ���������������.

������� ������� ������ ������������� (�����
������� �� ������� 20.1):

            SELECT *
               FROM Londonstaff;


         ===============  SQL Execution Log ============
        |                                               |
        | SELECT *                                      |
        | FROM  Londonstaff;                            |
        |                                               |
        | ==============================================|
        |   snum      sname         city         comm   |
        | ------    ----------   -----------   -------  |
        |   1001      Peel         London       0.1200  |
        |   1004      Motika       London       0.1100  |
        |                                               |
         ===============================================

	     ������� 20.1 ������������� Londonstaff

����� �� ������������ SQL ������� (SELECT) ��� ������ (*) �� �������������,
�� ��������� ������, ���������� � ����������� Loncfonstaff,  � ���������� �ӣ ��
��� ������. ���� �������� � ������� �������������, ����� ������� ������ ��
������ �������������, ������� ����� ������������� ����� ���������. �� ������ ���������, ��� � ����� 15 �� ����� ������� Londonstaff, � ������� �� ��������� ��� �� ����� ���������� (�������, ��
��������, ��� ������� �� ������� ������. ���� ��� ���, �� ������ ������ �������
������ ��� ��� ������ �������������).

������������ ������������� �������������,
�� ��������� � �������� ��������, � ���, ��� ������������� ����� ��������������
������������� ������ ���, ����� ��������� �������, ������� � ��� ������.

���������� ������������� �� ����������� � ��������������� ������ ���, �����
�� ���������� �� ������������� � �������. ���� �� �������� ������ �������
�������� � ������� ��������, �� ������������� �������� � �������������.

������������� ����������� ��������� ���������� ������ �������. ���
������������ ������ ���� ��������� ������ � ���������, �� �� ����, ���������� �
�������. ���� �� ������, ����� ��� �������� ��� ������� � ������� ���������, ��
��� ���� �� ���� �������� ������������ ������ ���������, �� ����� �� �������
������������� � �������������� ���������� ��������� (����� ������� �� �������
20.2):

       CREATE VIEW Salesown
          AS SELECT snum, sname, city
          FROM Salespeople:

             ===============  SQL Execution Log ============
            |                                               |
            | SELECT *                                      |
            | FROM  Salesown;                               |
            |                                               |
            | ==============================================|
            |   snum      sname         city                |
            | ------    ----------   -----------            |
            |   1001      Peel         London               |
            |   1002      Serres       San Jose             |
            |   1004      Motika       London               |
            |   1007      Rifkin       Barcelona            |
            |   1003      Axelrod      New York             |
             ===============================================

		 ������� 20.2 ������������� Salesown

������� �������, ��� ������������� — ����� ��, ��� ��� ������� ���������, ��
����������� ���� ��� ���� comm �� ����������� � ������� �, �������������, ��
���� �������� � �������������.

��������������� �������������

������������� ����� ������ ���������� ��������� ����������� DML, ��
����������� �� ����� �������������� �� ���� �������������. ������� ����� ��
����� ���� �������������� � ������� �������:

         UPDATE Salesown
            SET city = 'Palo Alto'
            WHERE snum = 1004;

��� �������� ��������� ���������� ��� �� ������� � ������� ���������. ������,
���� �������� ������������ �������� ����� ���������� �������� UPDATE

         UPDATE Salesown
            SET comm = .20
            WHERE snum = 1004;

��� ����� ����������, ��� ��� ���� comm ����������� � ������������� Salesown.
��� ������ ���������, ������������, ��� �� ��� ������������� ����� ����
��������������. �� ����� ����������� �������� ����������� ������������� �
����� 21.

���������� ��������

� ����� ������� ���� ����� ������������� ����� ���� �����, ���������� �����
�� �ͣ� ����� �������� �������. ��� ������. ������ ��� ����� ��������
���� ������� ������ �������:

  • ����� ��������� ������� �������� ����������, � ������� �� �������� ����.
  • ����� ��� ��� ����� �������� � ����������� ����� �� �� �����, ��� � �� ������� �������.

�����, ������� ����� ����� ������� �����, ������ � ������� ������� () �����
����� �������. ��� �� ����� ���������, ���� ��������� � ������� �����
������������� �������. ��� ������ � ������ ���� ����� ����� ���������� ��
������������� �����, ������� «����������» � ���. ������ �� �� ���������� �����
���� �����, �� ���� �� �ӣ-���� ������� ���, �� ������ ������ ��� ��� �������
���� � �������������.

�������������� ���������� ������������� � �������� �������� � ��������������

����� �� ������� ������ �������������, ��, ����������, ���������� ������.
�������� ������ ��� SQL ������ ��� — ���������� ��������� ���� �������� � ����.
������� ��������� �ݣ ��� �� ���� ������������� Londonstaff:

         CREATE VIEW Londonstaff
            AS SELECT *
            FROM Salespeople
            WHERE city = 'London';

���� �� ��������� ��������� ������ � ���� �������������

         SELECT *
           FROM Londonstaff
           WHERE comm > .12;

�� ����� ����� ��, ��� ���� �� �� ��������� ��������� � ������� ���������:

       SELECT *
          FROM Salespeople
          WHERE city = 'London'
          AND comm > .12;

��� ���������, �� ����������� ���� ��� ���������� ��������� �������� �
��������������. ������� ����������� ���������� �� ���� ��������� ����������
���������� � ��������� ���������, ������� �� ����� ��������. ��������,
�����������, ��� �� ������� (CREATE) ��������� �������������:

       CREATE VIEW Ratingcount (rating, number)
          AS SELECT rating, COUNT (*)
          FROM Customers
          GROUP BY rating;

��� ���� ��� ����� ����������, ������� �� ����� ��� ������� ������ ������
(rating). �� ������ ����� ������� ������ ����� �������������, ����� ��������,
������� �� �����-������ ������ � ��������� �����, ����������� ��� �ң�
����������:

       SELECT *
          FROM Ratingcount
          WHERE number = 3;

���������, ��� �������� ���� �� ������������ ��� ���������:

       SELECT rating, COUNT (*)
          FROM Customers
          WHERE COUNT (*) = 3
          GROUP BY rating;

��� ������������ ������. ���������� �������, ����� ��� COUNT (����), �� �����
�������������� � ���������. ���������� �������� ��� ������������ ���������������
�������, ������� ��, ����� ���������:

        SELECT rating, COUNT (*)
           FROM Customers
           GROUP BY rating;
           HAVING COUNT (*) = 3;

�� SQL ����� �� ��������� �����������. ����� �� ����������� ������ ������
������� Ratingcount ��������� �������? �� �����! ��� ������������� ������� SQL,
��� �������� ������������� ������������� ����� ���� ������� ����������. �����
������, ��� ����� ������� � ������, ����� �� ���� ������ �� ������� � �����
��������� ������������, ��� ���������� �����������.

���� �������
���������, �� ������ ������������ �������������, ����� ���������� ���������
����������� SQL � ���������� �������.

��������� �������������

��������� ������������� ��� �������������, ��������� ������� Ratingcount �
���������� �������, ������� �������� ����������� GROUP BY ��� �������
������������ �� ������ ��������� ��������������.

��������� ������������� ����� ����� ������������ �������� ����������� ���������
���������� ����������. �����������, ��� ������ ���� �� ������ �������
�� �������� ������� ����������, �������� ��������� ����������� ������, ��������
�������, ������� ����������� ������� � ����� ������ ������������ � �������.

��� �������������� ������ ��� ������� ������, �� ������ ������ �������
��������� �������������:

   CREATE VIEW Totalforday
        AS SELECT odate, COUNT (DISTINCT cnum), COUNT
                (DISTINCT snum), COUNT (onum), AVG
                (amt), SUM (amt)
                FROM Orders
        GROUP BY odate;

������ �� ������� ������� ��� ��� ���������� � ������� �������� �������:

         SELECT *
            FROM Totalforday;

��� �� ������, SQL-������� ����� ���� ��� ������ �������� ������������, ���
��� ������������� ������������ ��� ����������� ������ � ������ ������������
����� ���������� �����, ��� ���� ������ ����� ���� ������������.

��� ����� ����� ������ ���� ������ ����� �������, �������������� ������
������� ��� ��� �������� � �������� ������� ������.

������������� � �����������

������������� �� �������, ����� �� ����� ������������� �� ����� �������
�������. ��� ��� ����� ����� ���������� ������ SQL ����� ���� ����������� �
�������������, ��� ����� �������� ���������� �� ������ ����� ������� ������ ���
�� ������ �������������. �� �����, ��������, ������� �������������, �������
���������� �� ������ �������� � ��������� �� �����:

       CREATE VIEW Nameorders
          AS SELECT onum, amt, a.snum, sname, cname
             FROM Orders a, Customers b, Salespeople c
             WHERE a.cnum = b.cnum
               AND a.snum = c.snum;

������ �� ������ ������� (SELECT) ��� ������ ��������� ��� �������� (*), ���
������ ������� ��� ���������� ��� ������ ������.

��������, ����� ������� ��� ������ �������� Rifkin, �� ������ ������
��������� ������ (����� ������� �� ������� 20.3):

          SELECT *
             FROM Nameorders
             WHERE sname = 'Rifkin';


            ===============  SQL Execution Log ==============
           |                                                 |
           | SELECT *                                        |
           | FROM  Nameorders                                |
           | WHERE sname = 'Rifkin';                         |
           | =============================================== |
           |   onum       amt       snum   sname     cname   |
           |  ------   --------    -----  -------   -------  |
           |   3001       18.69     1007  Rifkin    Cisneros |
           |   3006     1098.16     1007  Rifkin    Cisneros |
           |                                                 |
             ================================================

	  ������� 20.3 ������ Rifkin, ���������� � Nameorders

�� ������ ����� ���������� ������������� � ������� ���������, ��������
��������� ��� ���������������, ������� �� ������ ������� ��� ������ �������� Axelrod � �������� ��� ������������ � ������ �������:

           SELECT a.sname, cname, amt  comm
              FROM Nameorders a, Salespeople b
              WHERE a.sname = 'Axelrod'
                AND b.snum = a.snum;

����� ��� ����� ������� ������� �� ������� 20.4. � ��������� �� ����� ��
��������: «WHERE a.sname = ‘Axelrod’ AND b.sname = ‘Axelrod'», �� ��������,
������� �� ������������ �����, ����� �����������������. ����� ����, ���� snum
��� ��������� ���� ������� ���������, �, �������������, ������, �� �����������,
���� ����������.

            ===============  SQL Execution Log ==============
           |                                                 |
           | SELECT a.sname, cname, amt * comm               |
           | FROM  Nameorders a, Salespeople b               |
           | WHERE a.sname = 'Axelrod'                       |
           | AND b.snum = a.snum;                            |
           | =============================================== |
           |   onum       amt       snum   sname     cname   |
           |  ------   --------    -----  -------   -------  |
           |   3001       18.69     1007  Rifkin    Cisneros |
           |   3006     1098.16     1007  Rifkin    Cisneros |
           |                                                 |
             ================================================

	������� 20.4 ����������� �������� ������� � ��������������

���� �� ���, ��������, ���� ��� Axelrod, ������� � ������ ����� ����������
������ �� ������. ����� ���������������� ������� — ������������ ���� snum, �����
������� ��� ��������.

������������� � ����������

������������� ����� ����� ������������ � ����������, ������� ������ӣ����
����������. �����������, ���� �������� ��������������� ������ ��� ��� ���������,
������� ����� ��������� � ����� ������� ������� ��� ����� ��������� ����. ��
������ ���������� ��� ���������� � ������� �������������:

           CREATE VIEW Elitesalesforce
              AS SELECT b.odate, a.snum, a.sname,
                 FROM Salespeople a, Orders b
                 WHERE a.snum = b.snum
                   AND b.amt =
                     (SELECT MAX (amt)
                         FROM Orders c
                         WHERE c.odate = b.odate);

����, � ������ �������, ������ ����� ����������� ������ ��������, �������
���� ����� ������� ����� �� ��������� ������ ���, ��� ���������� �����
���������� �� � ������ �������������, ���������� �� ������:

            CREATE VIEW Bonus
               AS SELECT DISTINCT snum, sname
                  FROM Elitesalesforce a
                  WHERE 10 < =
                     (SELECT COUNT (*)
                         FROM Elitesalestorce b
                         WHERE a.snum = b.snum);

���������� �� ���� ������� ��������, ������� ����� �������� ������,
����������� ������� ��������:

               SELECT *
                  FROM Bonus;

������ �� ����� �������� �������� SQL. ���������� ��� �� ����������
���������� ����������� RPG ��� COBOL ����� ����� ���������� ����������. � SQL
��� — ������ ������ �� ���� ����������� ������, �����Σ���� ��� �������������
��������� � ������� ��������. ��� ��������������� ������� �� ������ ��������� ��
���� ������ ����, ������ ��� ���������� ������� ��������� ������, ����������
��������, ����� �������� ������� ��������� ���� ������.

��� �� ����� ������ �������������?

������� ������� ���������� ����� ������������� (������� ������ �� �����
�������� � ���� �����), ������� �������� ���������� ������ ��� ������. ���
��������, ��� �� ����� �����������, �� ��� �� ����� ������������ ���������
������ �����������. (�� ����� ������������� ��� ���� � �����
21.) ������� ����� ��������� ���� ��������, ������� ����������� �
������������ �������������.

��������� ������������� ������ ������������ �� ��������� �������.

���������� (UNION) � ���������� �� (UNION ALL) ��
�����������.

����������� �� (ORDER BY) ������� �� ������������ � �����������
�������������.

����� ������� ��������� ���������� �������������, �������
���������� ������� ������� � �������� — �� ����������� — ���������������.

�������� �������������

��������� �������� ������������� �� ���� ������ ������� ���������� ��������
������� ������:

DROP VIEW <��� �������������>

� ���� ��� �������������, ������ ��� ���������� ������������� �� ��������
��������� � ����������� �� ������ �������� ������������ �������. ������� �������, ��
������� ������������� ���������, �� �������������, ����� ������������� �������.
�������, �� ������ �������� ���������� �������������, ����� ����� ����������� ������� ���.

������

������, ����� �� ������ ������������ �������������, ���� �����������
����������� � ������������ ���������� �� ����������� �����������. �ӣ, ��� �� ������ ������� ��������, �� ������ ������� ���������� ���
�������������. ������� ���� ������������� ���, ����������, ������ �������.
������������� ������������� � ��� ��������, � ��� ������ ����� ������, ��� �
������ ����������� ������������� ��� �������������� � ��������� �������� ��
��������� ����������� ���������� ����� ��.

������� ���� ������� �����
������������ �������������: ��� ����������� � �����������.

��� ��������, �� ������ �������������� ������������� ��� ��, ��� � �������
�������, � ������� ���������, ����������� � �������, �� ������� ����������
�������������, �� ��� �� ������ ��������.

������ �� SQL

1. �������� �������������, ������� ���������� �� ���� ����������, �������
   ����� ������� ��������.

2. �������� �������������, ������� ���������� �� ����� �������� � ������ ������.

3. �������� �������������, ������� ���������� �� ��������� � ����� ������ ��� �������
   �������� ����� ��� �����. ��������������, ��� ��� ����� ���������.

4. �������� �������������, ������� ���������� �� ������� �������� � ����������� �����������.

(��. ������ � ���������� A.)
«SQL Последнее обновление 15 марта 2019 07:16:22 (UTC / GMT +8 часов)

script1adsense2code

script1adsense3code

Обновить вид

Команда SQL UPDATE VIEW может использоваться для изменения данных представления.

Все виды не обновляются. Таким образом, команда UPDATE применима не ко всем представлениям. Обновляемое представление — это такое, которое позволяет выполнять команду UPDATE над собой, не затрагивая никакую другую таблицу.

Содержание:

  • Когда можно обновить вид?
  • Синтаксис и параметры
  • пример
  • Обновляемые представления SQL
  • SQL обновляемые представления с использованием оператора IN
  • SQL обновляемые представления с агрегатной функцией
  • Обновление представлений SQL с арифметическим выражением
  • Представления обновления SQL с использованием подзапросов

Когда можно обновить вид?

1 Представление определяется на основе одной и только одной таблицы.

2 Представление должно включать ПЕРВИЧНЫЙ КЛЮЧ таблицы, на основе которой было создано представление.

3 В представлении не должно быть полей, созданных из агрегатных функций.

4 Представление не должно содержать ни одного предложения DISTINCT в своем определении.

5 Представление не должно содержать ни одного предложения GROUP BY или HAVING в своем определении.

6 Представление не должно иметь никаких ПОДПИСЕЙ в своих определениях.

7 Если представление, которое вы хотите обновить, основано на другом представлении, последнее должно быть обновляемым.

8 Ни одно из выбранных выходных полей (представления) не должно использовать константы, строки или выражения значений.

Синтаксис:

 ОБНОВЛЕНИЕ <view_name> SET <column1> = <value1>, <column2> = <value2>, .....
ГДЕ <условие>;

Параметры:

название Описание
view_name Имя виртуальной таблицы или представления, где данные будут изменены.
column1, column2 Наименование столбцов таблицы.
значение1, значение2 Значения для столбцов, которые будут обновлены.
состояние Состояние или критерии.

Пример:

Образец представления: просмотр агента

Чтобы обновить представление ‘agentview’ со следующими условиями —

1. «Комиссия» должна быть установлена на .13 ,

2. «working_area» должно быть «Лондон»,

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

Код SQL:

UPDATE agentview
SET commission=.13
WHERE working_area=’London’;

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM agentview;

Обновляемые представления SQL

В следующем разделе мы обсуждаем, как можно обновить представление в операторе UPDATE VIEW.

Пример:

Пример таблицы: агенты

Это утверждение ниже создает обновляемое представление ‘countryagent’:

Код SQL:

CREATE VIEW countryagent
AS SELECT *
FROM agents
WHERE  working_area='Brisban';

Чтобы обновить столбец «комиссия» значением .13 представления «странаагент», можно использовать следующий оператор SQL:

Код SQL:

UPDATE countryagent
SET commission=.13;  

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM countryagent;

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

В следующем разделе мы обсудим, как оператор SQL IN можно использовать в операторе UPDATE VIEW для обновления данных столбцов в представлении.

Пример:

Пример таблицы: заказы

Это утверждение ниже создает обновляемое представление ‘orderindate’:

Код SQL:

CREATE VIEW orderindate
AS SELECT agent_code,ord_num,cust_code,advance_amount
FROM orders
WHERE ord_date IN ('15-APR-08','15-Aug-08');

Чтобы обновить представление ‘orderindate’ со следующими условиями —

1. ‘advance_amount’ установлен на 2000,

2. ‘advance_amount’ должно быть 1500,

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

Код SQL:

UPDATE orderindate SET advance_amount=2000
WHERE advance_amount=1500;

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM orderindate;

SQL обновляемые представления с агрегатной функцией

Здесь, в следующих темах, мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если какое-либо из полей представления создано с использованием предложения AGGREGATE FUNCTION или GROUP BY.

Пример:

Пример таблицы: заказы

Это утверждение ниже создает представление ‘daywiseorder’:

Код SQL:

CREATE VIEW daywiseorder(ord_date,ord_count)
AS SELECT ord_date,COUNT(*)
FROM orders
GROUP BY ord_date;

Чтобы обновить представление ‘daywiseorder’ со следующими условиями —

1. «ord_count» установлен на 2,

2. ‘ord_count’ должно быть 1,

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

Код SQL:

UPDATE  daywiseorder SET ord_count=2
WHERE ord_count=1;

Замечания:

Это представление не является обновляемым. Агрегатная функция «COUNT» использовалась в определении представления, поэтому это представление не подлежит обновлению, т.е. «представление» доступно только для чтения.

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM daywiseorder;

Обновление представлений SQL с арифметическим выражением

В следующих разделах мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если любое из полей представления создано с использованием арифметического выражения.

Пример:

Образец таблицы: клиент

Это утверждение ниже создает представление «myclient»:

Код SQL:

CREATE VIEW myclient(client_name,client_no,outspercent)
AS SELECT    cust_name,cust_code
outstanding_amt*100/(opening_amt+receive_amt)
FROM customer
WHERE cust_country='USA'
AND  outstanding_amt*100/(opening_amt+receive_amt)>50;

Чтобы обновить представление «myclient» со следующим условием —

1. «превосходящий» установлен на 80,

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

Код SQL:

UPDATE myclient SET outspercent=80;

Замечания:

Это представление не является обновляемым. Арифметическое выражение было использовано в определении представления. Таким образом, это представление не может быть обновлено, то есть «представление» доступно только для чтения.

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM myclient;

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

На этой странице мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если любое из полей представления создано с использованием подзапроса.

Пример:

Пример таблицы: заказы

Пример таблицы: агенты

Это утверждение ниже создает представление «myagent»:

Код SQL:

CREATE VIEW myagent>
AS SELECT *
FROM agents
WHERE agent_code IN
(SELECT agent_code
FROM orders
WHERE ord_date='15-AUG-08');

Обновить представление «myagent» следующим условием —

1. «комиссия» установлена в .15,

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

Код SQL:

UPDATE myagent SET commission=.15;

Смотрите нашу базу данных моделей

Упражнения по SQL

  • Упражнения по SQL, практика, решение
  • SQL Получить данные из таблиц [33 Упражнения]
  • Булевы и реляционные операторы SQL [12 упражнений]
  • Подстановочные знаки SQL и специальные операторы [22 упражнения]
  • Агрегатные функции SQL [25 упражнений]
  • Вывод запроса форматирования SQL [10 упражнений]
  • SQL-запросы к нескольким таблицам [7 упражнений]
  • ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
  • SQL СОЕДИНЯЕТ
    • SQL СОЕДИНЯЕТСЯ [29 упражнений]
    • SQL присоединяется к базе данных HR [27 упражнений]
  • SQL ПОДПИСИ
    • ПОДПИСИ SQL [39 упражнений]
    • SQL ПОДПИСИ по базе данных HR [55 упражнений]
  • SQL Union [9 упражнений]
  • SQL View [16 упражнений]
  • Управление учетными записями пользователей SQL [16 упражнение]
  • База данных фильмов
    • ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
    • ПОДПИСКИ на фильм База данных [16 упражнений]
    • ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
  • Футбольная база
    • Вступление
    • ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
    • ПОДПИСКИ по футбольной базе данных [33 упражнения]
    • ПРИСОЕДИНЯЕТСЯ к запросам по футбольной базе данных [61 упражнений]
  • База данных больницы
    • Вступление
    • ОСНОВНЫЕ, ПОДПИСИ И СОЕДИНЕНИЯ [39 упражнений]
  • База данных сотрудников
    • ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
    • БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
  • Еще не все!

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: Создать вид с объединением
Далее: Создать индекс

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

От автора: представление — это не что иное, как оператор SQL, который хранится в базе данных с соответствующим именем. На самом деле представление является определенным структурированным набором данных таблицы в виде предопределенного SQL-запроса.

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

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

Структурировать данные таким образом, который будет наиболее естественным или интуитивным для пользователей или классов пользователей.

Ограничивать доступ к данным таким образом, чтобы пользователь мог находить и изменять (в некоторых случаях) только те данные, которые ему нужны, и не более того.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

Обобщать данные из разных таблиц, чтобы использовать их для различных отчетов.

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

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

Пользователь должен иметь соответствующие системные привилегии в зависимости от конкретной реализации.
Основной синтаксис CREATE VIEW следующий:

CREATE VIEW view_name AS

SELECT column1, column2…..

FROM table_name

WHERE [condition];

Вы можете включить в инструкцию SELECT несколько таблиц так же, как вы используете их в обычном запросе SQL SELECT.

Пример

Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:

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

Ниже приведен пример создания представления из таблицы CUSTOMERS. Это представление будет использоваться для получения имени и возраста клиенттов из таблицы CUSTOMERS.

CREATE VIEW CUSTOMERS_VIEW AS

SELECT name, age

FROM  CUSTOMERS;

Теперь вы можете выполнить запрос CUSTOMERS_VIEW так же, как вы выполняете запрос к самой таблице. Ниже приведен пример.

SELECT * FROM CUSTOMERS_VIEW;

В результате мы получим следующее.

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

Параметр WITH CHECK OPTION

WITH CHECK OPTION является параметром CREATE VIEW. Параметр WITH CHECK OPTION назначается для того чтобы гарантировать, что все запросы UPDATE и INSERT удовлетворяют условиям в определении представления. Если они не удовлетворяют условию, запрос UPDATE или INSERT возвращает ошибку.

В следующем блоке кода приведен пример создания такого же представления CUSTOMERS_VIEW с параметром WITH CHECK OPTION.

CREATE VIEW CUSTOMERS_VIEW AS

SELECT name, age

FROM  CUSTOMERS

WHERE age IS NOT NULL

WITH CHECK OPTION;

Параметр WITH CHECK OPTION в этом случае должен блокировать запись значений NULL столбец представления AGE, поскольку для представления определено, что в столбце AGE не могут содержаться данные NULL.

Обновление представления

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

Условие SELECT не должно содержать ключевое слово DISTINCT.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

Условие SELECT не должно содержать сводных функций.

Условие SELECT не должно содержать заданных функций.

Условие SELECT не должно содержать заданных операторов.

Условие SELECT не должно содержать ORDER BY.

Условие FROM не должно содержать нескольких таблиц.

Условие WHERE не должно содержать подзапросов.

Запрос не должен содержать GROUP BY или HAVING.

Обработанные столбцы не должны обновляться.

Все NOT NULL столбцы из базовой таблицы должны быть включены в представление, чтобы запрос INSERT функционировал.

Таким образом, если представление удовлетворяет всем вышеперечисленным правилам, вы можете обновить это представление. В следующем блоке кода показан пример обновления возраста для клиента Ramesh.

UPDATE CUSTOMERS_VIEW

  SET AGE = 35

  WHERE name = ‘Ramesh’;

Это полностью обновит саму таблицу CUSTOMERS, что отразится и на представлении. Теперь попробуйте выполнить запрос в самой таблице, и результат выполнения инструкции SELECT будет выглядеть следующим образом.

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

Добавление строк в представление

В представление можно вставлять строки данных. Те же правила, которые применяются для команды UPDATE, применяются также и для команды INSERT.

Здесь мы не можем вставлять строки в CUSTOMERS_VIEW, потому что мы не включили в это представление все NOT NULL столбцы, иначе в представление можно было бы вставить строки так же, как вы вставляете их в таблицу.

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

Строки данных могут быть удалены из представления. Те же правила, которые применяются для команд UPDATE и INSERT, применяются к команде DELETE. Ниже приведен пример удаления записи с AGE = 22.

DELETE FROM CUSTOMERS_VIEW

  WHERE age = 22;

В результате строка будет удалена из таблицы базы CUSTOMERS, и это также будет отображено в самом представлении. Теперь попробуйте выполнить запрос к таблице базы, результат выполнения инструкции SELECT будет выглядеть следующим образом.

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

Удаление представлений

Очевидно, что, если у вас есть представление, когда оно больше не нужно, его нужно удалить. Для этого используется следующий синтаксис:

Ниже приведен пример того, как удалить представление CUSTOMERS_VIEW из таблицы CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;

Источник: //www.tutorialspoint.com/

Редакция: Команда webformyself.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

Хотите изучить MySQL?

Посмотрите курс по базе данных MySQL!

Смотреть

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

Описание

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

Создать SQL VIE

Синтаксис

Синтаксис для оператора CREATE VIEW в SQL.

CREATE VIEW view_name AS
SELECT columns
FROM tables
[WHERE conditions];

view_name
Имя SQL VIEW, которую вы хотите создать
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для включения записей в представление.

Пример

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

CREATE VIEW sup_orders AS

  SELECT suppliers.supplier_id,

orders.quantity,

orders.price

    FROM suppliers

   INNER JOIN orders

      ON suppliers.supplier_id = orders.supplier_id

   WHERE suppliers.supplier_name = ‘IBM’;

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

SELECT *

  FROM sup_orders;

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

Синтаксис

Синтаксис для SQL оператора CREATE OR REPLACE VIEW.

CREATE OR REPLACE VIEW view_name AS
SELECT columns
FROM table
[WHERE conditions];

Пример

Вот пример того, как бы вы использовали SQL оператор CREATE OR REPLACE VIEW.

CREATE or REPLACE VIEW sup_orders AS

  SELECT suppliers.supplier_id,

         orders.quantity,

orders.price

    FROM suppliers

   INNER JOIN orders

      ON suppliers.supplier_id = orders.supplier_id

   WHERE suppliers.supplier_name = ‘Microsoft’;

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

Drop SQL VIEW

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

Синтаксис

Синтаксис для SQL оператора DROP VIEW.

DROP VIEW view_name;

view_name
Название представления, которое вы хотите удалить

Пример

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

В этом SQL примере DROP VIEW удалит VIEW с именем sup_orders.

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

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

Вопрос: Существует ли представление SQL, если таблица удалена из базы данных.
Ответ: Да, в Oracle SQL VIEW продолжает существовать даже после того, как одна из таблиц (на которых основан SQL VIEW) удалена из базы данных. Однако если вы попытаетесь выполнить запрос SQL VIEW после того, как таблица была удалена, вы получите сообщение о том, что в SQL VIEW есть ошибки.
Если вы пересоздаете таблицу (таблицу, которую вы удалили), SQL VIEW снова будет в порядке.

Понравилась статья? Поделить с друзьями:
  • Как изменить председателя гск
  • Как изменить предрасположенность к полноте
  • Как изменить предпочтительный графический процессор
  • Как изменить предоставленный лимит на мегафоне
  • Как изменить предопределенный счет