Что такое представления в MySQL?

Что такое представления в MySQL? Какой смысл представлений и как часто они используются в реальном мире.

Я после объяснения неспециалиста с примером, если это возможно, для помощи моему пониманию!

Заранее спасибо ;-)

12
задан Michael Ekstrand 27 July 2010 в 11:44
поделиться

9 ответов

Обычные представления - это не что иное, как запросы с возможностью запроса.

Пример:

У вас есть две таблицы, заказы и клиенты, в заказах есть поля 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

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

11
ответ дан 2 December 2019 в 19:29
поделиться

Все просто: представления - это виртуальные таблицы.

Представления основаны на 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

В более широком масштабе вы можете создать представление, которое вычисляет среднюю зарплату сотрудников и перечисляет, у кого зарплата меньше средней. В реальной жизни такие запросы намного сложнее.

2
ответ дан 2 December 2019 в 19:29
поделиться

В mysql представление - это сохраненный оператор выбора

Посмотрите на этот ответ: Представления MySQL - когда использовать, а когда нет

1
ответ дан 2 December 2019 в 19:29
поделиться

Эта небольшая статья достаточно хорошо объясняет представления в MySQL: Views and More in MySQL 5.0

0
ответ дан 2 December 2019 в 19:29
поделиться

Простыми словами

В SQL представление - это виртуальная таблица на основе набора результатов SQL утверждение.

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

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

Источник

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

0
ответ дан 2 December 2019 в 19:29
поделиться

Это сокращение от обычных фильтров.

Допустим, у вас есть таблица записей с удаленным столбцом. Обычно вас не интересуют удаленные записи, и поэтому вы можете создать представление под названием «Записи», которое отфильтровывает удаленные записи из таблицы AllRecords.

Это приведет к очистке вашего кода, поскольку вам не нужно добавлять / добавлять deleted! = 1 к каждому оператору.

SELECT * FROM Records

вернет все неотудаленные записи.

0
ответ дан 2 December 2019 в 19:29
поделиться

Представление - это способ предварительного определения определенных запросов. К нему можно обращаться так же, как и к таблице, но он определяется запросом, а не набором данных на диске. Запрос к нему позволяет запрашивать результаты таблицы.

В большинстве случаев запрос к представлению можно рассматривать как эквивалент использования определяющего запроса представления в качестве подзапроса в основном запросе. Представления позволяют делать запросы более короткими и модульными (поскольку общие части определяются отдельно в представлении). Они также предоставляют возможность для оптимизации (хотя не все базы данных делают это; я не уверен, предоставляет ли MySQL какие-либо оптимизации, чтобы сделать представления быстрее или нет).

Если вы обновляете базовые таблицы, запросы к представлению автоматически отражают эти изменения.

0
ответ дан 2 December 2019 в 19:29
поделиться

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

Чтобы создать представление, используйте:

CREATE VIEW first_names AS SELECT first_name FROM people WHERE surname='Smith'

Затем вы можете использовать это представление как обычную таблицу. Уловка заключается в том, что когда вы обновляете таблицу people, также будет обновлено представление first_names, потому что это всего лишь результат оператора SELECT.

Этот запрос:

SELECT * FROM first_names

вернет все имена людей по имени Смит из таблицы people. Если вы обновите таблицу людей и повторно запустите запрос, вы увидите обновленные результаты.

В принципе, вы можете заменить представления вложенными операторами SELECT. Однако у представлений есть некоторые преимущества:

  • Более короткие запросы - вложенные операторы SELECT делают запрос длиннее
  • Улучшенная читаемость - если у представления есть разумное имя, запрос намного легче понять
  • Повышенная скорость - SELECT представления Оператор хранится в ядре базы данных и предварительно анализируется, поэтому его не нужно передавать от клиента и анализировать снова и снова
  • Кэширование и оптимизация - ядро ​​базы данных может кэшировать представление и выполнять другие оптимизации
1
ответ дан 2 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: