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 убедитесь, что вы действительно хотите удалить представление, потому что после удаления определение представления невозможно восстановить.
Другие расширения