|
@@ -1,15 +1,11 @@
|
|
|
-<table style="width: 100%;"><tr><td style="width: 40%;">
|
|
|
|
|
-<a href="../articles/sql_for_beginner.md">Основы SQL
|
|
|
|
|
-</a></td><td style="width: 20%;">
|
|
|
|
|
-<a href="../readme.md">Содержание
|
|
|
|
|
-</a></td><td style="width: 40%;">
|
|
|
|
|
-<a href="../articles/sql_import.md">Создание базы данных. Импорт данных.
|
|
|
|
|
-</a></td><tr>
|
|
|
|
|
-</table>
|
|
|
|
|
|
|
+Предыдущая лекция | | Следующая лекция
|
|
|
|
|
+:----------------:|:----------:|:----------------:
|
|
|
|
|
+[Создание базы данных. Импорт данных.](./sql_import.md) | [Содержание](../readme.md#проектирование-баз-данных) | [Хранимые процедуры. Триггеры.](./sql_trigger.md)
|
|
|
|
|
+
|
|
|
|
|
|
|
|
# Представления (View)
|
|
# Представления (View)
|
|
|
|
|
|
|
|
-В предыдущей лекции инструкции DML рассматривались применительно к базовым таблицам. Данные базовой таблицы хранятся на диске. В отличие от базовых таблиц, **представления** по умолчанию не существуют физически, т.е. их содержимое не сохраняется на диске (*Это не относится к так называемым индексированным представлениям, которые мы в рамках нашего курса рассматривать не будем*)
|
|
|
|
|
|
|
+В предыдущей лекции инструкции **DML** рассматривались применительно к базовым таблицам. Данные базовой таблицы хранятся на диске. В отличие от базовых таблиц, **представления** по умолчанию не существуют физически, т.е. их содержимое не сохраняется на диске (*Это не относится к так называемым индексированным представлениям, которые мы в рамках нашего курса рассматривать не будем*)
|
|
|
|
|
|
|
|
**Представление (VIEW)** — объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора **SELECT**, *в момент обращения к представлению*.
|
|
**Представление (VIEW)** — объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора **SELECT**, *в момент обращения к представлению*.
|
|
|
|
|
|
|
@@ -28,7 +24,7 @@
|
|
|
|
|
|
|
|
<!-- https://habr.com/ru/post/47031/ -->
|
|
<!-- https://habr.com/ru/post/47031/ -->
|
|
|
|
|
|
|
|
-Для создания представления используется оператор CREATE VIEW, имеющий следующий синтаксис:
|
|
|
|
|
|
|
+Для создания представления используется оператор `CREATE VIEW`, имеющий следующий синтаксис:
|
|
|
|
|
|
|
|
```sql
|
|
```sql
|
|
|
CREATE [OR REPLACE]
|
|
CREATE [OR REPLACE]
|
|
@@ -61,7 +57,7 @@ AS select_statement
|
|
|
CREATE VIEW v (a_id, b_id) AS SELECT a.id, b.id FROM a,b;
|
|
CREATE VIEW v (a_id, b_id) AS SELECT a.id, b.id FROM a,b;
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
- Того же результата можно добиться, используя синонимы (алиасы) для названий колонок:
|
|
|
|
|
|
|
+ Того же результата можно добиться, используя алиасы для названий колонок:
|
|
|
|
|
|
|
|
```sql
|
|
```sql
|
|
|
CREATE VIEW v AS SELECT a.id a_id, b.id b_id FROM a,b;
|
|
CREATE VIEW v AS SELECT a.id a_id, b.id b_id FROM a,b;
|
|
@@ -115,7 +111,7 @@ CREATE VIEW view_Consultant
|
|
|
|
|
|
|
|
Запрос в этом примере выбирает из таблицы Works_on строки, удовлетворяющие условию Job='Консультант'. Представление view_Consultant определяется строками и столбцами, возвращаемыми этим запросом.
|
|
Запрос в этом примере выбирает из таблицы Works_on строки, удовлетворяющие условию Job='Консультант'. Представление view_Consultant определяется строками и столбцами, возвращаемыми этим запросом.
|
|
|
|
|
|
|
|
-Как уже упоминалось ранее, в общем формате инструкции CREATE VIEW не обязательно указывать имена столбцов представления. Однако, с другой стороны, в приведенных далее двух случаях обязательно требуется явно указывать имена столбцов:
|
|
|
|
|
|
|
+Как уже упоминалось ранее, в общем формате инструкции `CREATE VIEW` не обязательно указывать имена столбцов представления. Однако, с другой стороны, в приведенных далее двух случаях обязательно требуется явно указывать имена столбцов:
|
|
|
|
|
|
|
|
* если столбец представления создается из выражения или агрегатной функции;
|
|
* если столбец представления создается из выражения или агрегатной функции;
|
|
|
* если два или больше столбцов представления имеют одинаковое имя в базовой таблице.
|
|
* если два или больше столбцов представления имеют одинаковое имя в базовой таблице.
|
|
@@ -149,27 +145,8 @@ CREATE VIEW view_project_p2
|
|
|
WHERE ProjectNumber ='p2';
|
|
WHERE ProjectNumber ='p2';
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-Представление view_project_p2 в примере выше создается из представления view_Consultant. Все запросы, использующие представление view_project_p2, преобразовываются в эквивалентные запросы к базовой таблице Works_on.
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+Представление _view_project_p2_ в примере выше создается из представления _view_Consultant_. Все запросы, использующие представление _view_project_p2_, преобразовываются в эквивалентные запросы к базовой таблице **Works_on**.
|
|
|
|
|
|
|
|
-<table style="width: 100%;"><tr><td style="width: 40%;">
|
|
|
|
|
-<a href="../articles/sql_for_beginner.md">Основы SQL
|
|
|
|
|
-</a></td><td style="width: 20%;">
|
|
|
|
|
-<a href="../readme.md">Содержание
|
|
|
|
|
-</a></td><td style="width: 40%;">
|
|
|
|
|
-<a href="../articles/sql_import.md">Создание базы данных. Импорт данных.
|
|
|
|
|
-</a></td><tr></table>
|
|
|
|
|
|
|
+Предыдущая лекция | | Следующая лекция
|
|
|
|
|
+:----------------:|:----------:|:----------------:
|
|
|
|
|
+[Создание базы данных. Импорт данных.](./sql_import.md) | [Содержание](../readme.md#проектирование-баз-данных) | [Хранимые процедуры. Триггеры.](./sql_trigger.md)
|