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


Представления — это визуальные таблицы.

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


Инструкция SQL CREATE VIEW

В SQL представление — это виртуальная таблица, основанная на результирующем наборе SQL-запроса.

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

Вы можете добавлять в представление SQL-функции, операторы WHERE и JOIN, а также представлять данные так, как будто они получены из одной таблицы.

Синтаксис SQL CREATE VIEW

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Описание параметра:

  • CREATE VIEW:Объявляет, что вы хотите создать представление.
  • view_name:Указывает имя представления.
  • AS:Указывает ключевое слово, обозначающее начало определения представления.
  • SELECT column1, column2, ...:Указывает столбцы, содержащиеся в представлении; это могут быть столбцы из таблиц или вычисляемые столбцы.
  • FROM table_name:Указывает таблицу, из которой представление получает данные.
  • WHERE condition:Необязательная часть, используемая для указания условий фильтрации, ограничивающих строки в представлении.

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


Пример SQL CREATE VIEW

Предположим, у вас есть таблица с именем employees, содержащая информацию о сотрудниках, включая следующие столбцы: employee_id, first_name, last_name, salary и department_id. Теперь мы создадим представление, которое показывает информацию о сотрудниках, чья зарплата выше определённого порога.

Пример приведён ниже:

-- 创建包含高工资员工信息的视图
CREATE VIEW high_salary_employees AS
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > 50000;

В этом примере мы создали представление с именем high_salary_employees, которое содержит информацию о сотрудниках, чья зарплата выше 50000.

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

-- 查询高工资员工视图
SELECT *
FROM high_salary_employees;

Это вернёт подробную информацию обо всех сотрудниках с зарплатой выше 50000, без необходимости каждый раз писать одно и то же условие фильтрации.

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

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

В SQL нельзя напрямую использовать оператор UPDATE для обновления представления, потому что представление — это виртуальная таблица, созданная на основе результатов запроса, а не таблица, которая фактически хранит данные.

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

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Здесь table_name — это имя базовой таблицы, column1, column2, ... — столбцы, которые нужно обновить, value1, value2, ... — новые значения, а condition — условие обновления.

Теперь мы хотим добавить столбец "Category" к представлению "Current Product List". Мы обновим представление с помощью следующего SQL:

Например, если у вас есть представление с именем high_salary_employees, которое отображает информацию о сотрудниках с зарплатой выше 50000, и это представление основано на результатах запроса к таблице employees, вы можете обновить данные, выполнив следующие шаги:

-- 步骤 1: 更新 employees 表中的数据
UPDATE employees
SET salary = 60000
WHERE employee_id = 1001;

-- 步骤 2: 查询更新后的高工资员工视图
SELECT *
FROM high_salary_employees;

Таким образом, вы обновили данные в таблице employees, и представление high_salary_employees отразит эти изменения.



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

В SQL удаление (или сброс) представления выполняется с помощью оператора DROP VIEW.

Оператор DROP VIEW используется для удаления существующего представления из базы данных. Синтаксис выглядит следующим образом:

DROP VIEW [IF EXISTS] view_name;

Описание параметра:

  • DROP VIEW:Указывает, что вы хотите удалить представление.

  • IF EXISTS:Необязательная часть, используется для проверки существования представления. Если оно существует, выполняется операция удаления; если оно не существует, ошибка не возникнет. В некоторых системах управления базами данных это необязательно.

  • view_name:Указывает имя представления, которое нужно удалить.

После выполнения следующего оператора представление high_salary_employees будет удалено из базы данных.

-- 删除名为 high_salary_employees 的视图
DROP VIEW IF EXISTS high_salary_employees;

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

Если нужно удалить данные в таблице, следует использовать оператор DROP TABLE.

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

Другие расширения