Oracle создание виртуальной таблицы
СУБД предоставляет вам возможность создавать представления или так называемые виртуальные таблицы . Виртуальная таблица , или представление, является таблицей, которой физически нет в базе данных, но которая существует в представлении пользователя о логической структуре данных. Виртуальная таблица не содержит фактических данных, а реализуется как запрос к существующим таблицам базы данных. Определение представления хранится в словаре базы данных. Виртуальную таблицу можно рассматривать как поименованный запрос, который порождает таблицу для использования другими запросами. Таким образом, представление, или виртуальная таблица , - это поименованный запрос на выборку данных из одной или нескольких базовых таблиц , определение которого сохраняется в словаре базы данных.
Примечание. Далее в тексте термины "представление" и " виртуальная таблица " будут употребляться на равных правах.
Виртуальные таблицы используются в основном для реализации внешних схем данных (точек зрения пользователя). Они упрощают доступ к данным за счет замены сложных запросов более простыми запросами, обеспечивают независимость и защиту данных. Виртуальная таблица является объектом реляционной базы данных.
Для создания виртуальных таблиц в SQL предназначена команда CREATE VIEW . Пусть вам требуется регулярно просматривать списки служащих по отделам. Тогда вы можете использовать виртуальную таблицу
Как видите, виртуальная таблица является средством именования часто используемых команд SELECT . Как известно, результат выполнения команды SELECT является таблицей. Виртуальная таблица , при создании которой используется предложение GROUP BY , иногда называется групповым представлением (grouped view)
Как только промежуточная таблица получает имя, к ней можно делать запрос. Например, выполнить команду
которая дает список сотрудников 10-го подразделения.
Виртуальные таблицы можно определять с помощью других виртуальных таблиц.
Однако во многих реализациях SQL представления имеют сильные ограничения на выполнение операций обновления данных над ними. Некоторые СУБД не разрешают в определении представления использовать предложение ORDER BY . В некоторых диалектах SQL недопустимо выполнение обновлений на виртуальных таблицах, определенных на нескольких базовых таблицах , а также содержащих предложения GROUP BY, HAVING , опцию DISTINCT и функции агрегирования. Такие представления используются только для чтения. Например, в СУБД SQLBase представление используется только для чтения (read-only view), если в определяющей команде SELECT :
- предложение FROM задействует имена более одной таблицы или представления;
- применяется:
- опция DISTINCT ;
- предложение GROUP BY ;
- предложение HAVING ;
- функция агрегирования.
Иногда запрещается использовать и подзапросы .
В противном случае представление считается обновляемым представлением (updatable view). Для обновляемых представлений предусмотрена опция WITH CHECK OPTION . Когда она указана, любая вставка и обновление через данное представление будет выполняться только, если представление отвечает своему определению (данные в таблице могут быть изменены непосредственно). В противном случае такой проверки не делается. Если представление предназначено только для чтения или применяет подзапрос , то данная опция не должна использоваться.
Команда ALTER TABLE с такими же ограничениями также выполнима на виртуальных таблицах.
Виртуальные таблицы с соединениями
Если вам необходимо работать с несколькими таблицами как с одной, вы можете создать виртуальную таблицу , объединяющую информацию из нескольких таблиц. Пусть вам нужна информация о служащих и выполняемых проектах, тогда можно создать следующую виртуальную таблицу :
вы получите необходимую вам информацию. При этом вам не нужно помнить, что данные хранятся в двух таблицах. Даже если будет изменена структура базы данных, не затрагивающая колонки из виртуальной таблицы, вы этого не заметите.
Можно выполнять и более сложные запросы на виртуальных таблицах. Допустим, что вам нужен список руководителей по проектам, тогда вы можете выполнить
С виртуальными таблицами используется предложение WITH CHECK OPTION . При этом каждая вставка или обновление будет проверяться на соответствие определению виртуальной таблицы и будет отвергаться, если такого соответствия не будет. В противном случае такой проверки не делается.
Пусть вам нужно иметь информацию о текущих проектах. Тогда можно определить виртуальную таблицу (предварительно определив поле START_DATE в таблице PROJECT и установив его значения) как
Колонка START_DATE при обновлении будет проверяться на соответствие текущей дате. Это предложение справедливо только для обновления данных в колонках базовых таблиц , для которых создана такая виртуальная таблица . Если виртуальная таблица только для чтения или при его создании используется подзапрос , то WITH CHECK OPTION не должно указываться.
В этом учебном материале вы узнаете, как создавать, обновлять и удалять 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.
Этот SQL пример CREATE VIEW создаст виртуальную таблицу на основе результирующего набора оператора select. Теперь вы можете запросить SQL VIEW следующим образом.
Обновить SQL VIEW
Вы можете изменить определение 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.
В этом SQL примере CREATE OR REPLACE VIEW обновляет определение SQL VIEW, называемое sup_orders , не удаляя его. Если SQL VIEW еще не существует, SQL VIEW будет просто создан впервые.
Drop SQL VIEW
После создания SQL VIEW его можно удалить с помощью SQL оператора DROP VIEW.
Синтаксис
Синтаксис для SQL оператора DROP VIEW.
view_name Название представления, которое вы хотите удалитьПример
Вот пример использования SQL DROP VIEW.
В этом SQL примере DROP VIEW удалит VIEW с именем sup_orders .
Часто задаваемые вопросы
Вопрос: Можно ли обновить данные в SQL VIEW.
Ответ: VIEW в SQL создается путем объединения одной или нескольких таблиц. Когда вы обновляете записи в представлении, обновляются записи в базовых таблицах, составляющих представление SQL.
Так что, да, вы можете обновить данные в SQL VIEW, если у вас есть соответствующие привилегии для базовых таблиц SQL.В Oracle VIEW в сущности, представляет собой виртуальную таблицу, которая физически не существует. Скорее всего, она создается с помощью запроса соединяющего одну или несколько таблиц.
CREATE VIEW
Синтаксис
Синтаксис CREATE VIEW в Oracle:
CREATE VIEW view_name AS
SELECT columns
FROM tables
[WHERE conditions];Параметры или аргументы
view_name
Наименование Oracle VIEW, которое вы хотите создать.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей, которые будут включены в VIEW.Пример
SELECT suppliers.supplier_id, orders.quantity, orders.priceЭтот пример Oracle CREATE VIEW создаст виртуальную таблицу на основе результирующего набора SELECT. Теперь вы можете запросить VIEW Oracle следующим образом:
Update VIEW
С помощью Oracle CREATE OR REPLACE VIEW вы можете изменить определенное в Oracle VIEW не удаляя его.
Синтаксис
CREATE OR REPLACE VIEW view_name AS
SELECT columns
FROM table
WHERE conditions;view_name
Наименование представления Oracle, которое вы хотите создать или изменить.Пример
SELECT suppliers.supplier_id, orders.quantity, orders.priceЭтот пример Oracle CREATE OR REPLACE VIEW обновит определенное в Oracle представление sup_orders без его удаления. Если Oracle VIEW еще не существовало, то представление будет создано впервые.
Drop VIEW
После того, как VIEW было создано, вы можете удалить его с помощью DROP VIEW.
Синтаксис
view_name
Наименование представления Oracle, который вы хотите создать или заменить.Пример
Ниже приведен пример того, как использовать Oracle DROP VIEW:
Этот пример Oracle DROP VIEW удалит представление с названием sup_orders .
Часто задаваемые вопросы
Вопрос: Можно ли обновить данные в VIEW?
Ответ: Представление в Oracle создается путем объединения одной или нескольких таблиц. При обновлении записи (ей) в VIEW, обновляются записи в базовых таблицах, которые составляют VIEW.
Так что, да, вы можете обновить данные в Oracle VIEW при наличии у вас соответствующих привилегий в таблицах базы Oracle.Оператор Oracle/PLSQL CREATE TABLE позволяет создавать и определять таблицу.
Синтаксис
Синтаксис CREATE TABLE в Oracle/PLSQL:
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
.
column_n datatype [ NULL | NOT NULL ]
);Параметры или аргументы
table_name
Имя таблицы, которую вы хотите создать.
column1 , column2 , . column_n
Столбцы, которые вы создаете в таблице. Каждый столбец должен иметь тип данных. Столбец должен быть определен либо как "NULL" либо "NOT NULL", если это значение не указывается, то по умолчанию устанавливается "NULL".Пример
Рассмотрим на примере как использовать в Oracle/PLSQL CREATE TABLE.
В этом примере CREATE TABLE создает таблицу customers, которая имеет 3 столбца.
- Первый столбец customer_id , который создается с числовым типом данных (максимум 10 цифр в длину) и не может принимать значение NULL.
- Второй столбец customer_name с типом данных varchar2 (максимум 50 символов), также не может принимать значение NULL.
- Третий столбец city , у которого тип данных varchar2, он может принимать значение NULL.
Теперь единственная проблема в Oracle/PLSQL CREATE TABLE, что не определен primary key (первичный ключ) для таблицы customers . Мы изменим содержание предложения CREATE TABLE и определим customer_id в качестве первичного ключа следующим образом:
Практическое упражнение №1
Создайте таблицу Oracle/PLSQL под названием suppliers (поставщики), которая хранит информацию о customer_id (идентификатор поставщика), customer_name (наименование поставщика) и city (адрес).
Решение для практического упражнения № 1:
Практическое упражнение №2
Создайте таблицу Oracle/PLSQL с названием customers , которая хранит информацию о supplier_id (идентификатор клиента), name (наименование) и address (адрес).
Но на этот раз, customer_id должен быть первичным ключом для таблицы.Решение для практического упражнения № 2:
Практическое упражнение №3
На основании таблицы departments (отделы) ниже, создать таблицу в Oracle/PLSQL с именем employees (сотрудники), которая хранит информацию о employee_number (номер сотрудника), employee_name (имя сотрудника), department (отдел), и salary (зарплату). Primary key (первичный ключ) для таблицы служащих должен быть employee_number . Создание foreign key (внешнего ключа) в таблице employees , который ссылается на таблицу departments , на основании поля department_id .
Читайте также: