Что такое представления в MySQL? Какой смысл представлений и как часто они используются в реальном мире.
Я после объяснения неспециалиста с примером, если это возможно, для помощи моему пониманию!
Заранее спасибо ;-)
Обычные представления - это не что иное, как запросы с возможностью запроса.
Пример:
У вас есть две таблицы, заказы и клиенты, в заказах есть поля id, customer_id, performance_date, а у клиентов - id, first_name, last_name.
Теперь предположим, что вы хотите показать вместе идентификатор заказа, дату выполнения и имя клиента вместо того, чтобы выдавать этот запрос:
SELECT o.id as order_id, c.first_name + ' ' + c.last_name as customer_name,
o.performance_date
FROM orders o inner join customers c
вы можете создать этот запрос как представление и назвать его orders_with_customers, в своем приложении теперь вы можете выполнить query
SELECT *
FROM orders_with_customer
Одним из преимуществ является абстракция: вы можете изменить способ хранения имен клиентов, например, включить отчество, и просто изменить запрос представлений. Все приложения, которые использовали представление, продолжают использовать его, но теперь включают отчество.
Все просто: представления - это виртуальные таблицы.
Представления основаны на SELECT-запросах к "реальным" таблицам, но разница в том, что представления не хранят информацию, в отличие от реальных таблиц. Представление только ссылается на таблицы и объединяет их так, как велит SELECT. Это значительно упрощает часто используемые запросы.
Вот вам простой пример. Предположим, у вас есть таблица сотрудников и таблица отделов, и вы хотите посмотреть их зарплаты. Сначала вы можете создать представление для зарплат.
CREATE VIEW SALARIES
AS
SELECT e.name,
e.salary,
d.name
FROM employees AS e, deparments as d
WHERE e.depid = d.depid
ORDER BY e.salary DESC
Этот запрос выводит имя сотрудника, его/ее зарплату и отдел и упорядочивает их по зарплате в порядке убывания. После этого вы можете использовать такие запросы, как:
SELECT * from SALARIES
В более широком масштабе вы можете создать представление, которое вычисляет среднюю зарплату сотрудников и перечисляет, у кого зарплата меньше средней. В реальной жизни такие запросы намного сложнее.
В mysql представление - это сохраненный оператор выбора
Посмотрите на этот ответ: Представления MySQL - когда использовать, а когда нет
Эта небольшая статья достаточно хорошо объясняет представления в MySQL: Views and More in MySQL 5.0
Простыми словами
В SQL представление - это виртуальная таблица на основе набора результатов SQL утверждение.
Представление содержит строки и столбцы, просто как настоящий стол. Поля в view - это поля из одного или нескольких реальных таблицы в базе данных.
Вы можете добавлять функции SQL, WHERE и Операторы JOIN для просмотра и представления данные, как если бы данные приходили из одной единственной таблицы.
В дополнение к этому, вы можете вставлять строки в базовую таблицу
из представления
при условии, что только одна таблица ссылается на представление и столбцы, которые не упомянутые в представлении допускают нули.
Это сокращение от обычных фильтров.
Допустим, у вас есть таблица записей с удаленным столбцом. Обычно вас не интересуют удаленные записи, и поэтому вы можете создать представление под названием «Записи», которое отфильтровывает удаленные записи из таблицы AllRecords.
Это приведет к очистке вашего кода, поскольку вам не нужно добавлять / добавлять deleted! = 1
к каждому оператору.
SELECT * FROM Records
вернет все неотудаленные записи.
Представление - это способ предварительного определения определенных запросов. К нему можно обращаться так же, как и к таблице, но он определяется запросом, а не набором данных на диске. Запрос к нему позволяет запрашивать результаты таблицы.
В большинстве случаев запрос к представлению можно рассматривать как эквивалент использования определяющего запроса представления в качестве подзапроса в основном запросе. Представления позволяют делать запросы более короткими и модульными (поскольку общие части определяются отдельно в представлении). Они также предоставляют возможность для оптимизации (хотя не все базы данных делают это; я не уверен, предоставляет ли MySQL какие-либо оптимизации, чтобы сделать представления быстрее или нет).
Если вы обновляете базовые таблицы, запросы к представлению автоматически отражают эти изменения.
Представление можно рассматривать как таблицу, сгенерированную на лету. В ваших запросах он ведет себя как обычная таблица, но вместо того, чтобы храниться на диске, он создается на лету, когда это необходимо, из оператора SQL, определенного при создании представления.
Чтобы создать представление, используйте:
CREATE VIEW first_names AS SELECT first_name FROM people WHERE surname='Smith'
Затем вы можете использовать это представление как обычную таблицу. Уловка заключается в том, что когда вы обновляете таблицу people, также будет обновлено представление first_names, потому что это всего лишь результат оператора SELECT.
Этот запрос:
SELECT * FROM first_names
вернет все имена людей по имени Смит из таблицы people. Если вы обновите таблицу людей и повторно запустите запрос, вы увидите обновленные результаты.
В принципе, вы можете заменить представления вложенными операторами SELECT. Однако у представлений есть некоторые преимущества: