2010-07-27 17 views
11

Cosa sono le viste in MySQL? Qual è il punto di vista e la frequenza con cui vengono utilizzati nel mondo reale.Cosa sono le viste in MySQL?

Sto cercando una spiegazione per la gente, prego con un esempio, se possibile, per aiutare la mia comprensione!

Grazie in anticipo ;-)

risposta

10

Normale Vista non sono altro quindi interrogabile query.

Esempio:

Hai due tavoli, ordini e clienti, gli ordini ha la campi id, customer_id, performance_date e clienti ha id, first_name, last_name.

Ora diciamo che si desidera mostrare l'ordine id, data di prestazioni e nome del cliente insieme invece di rilascio del presente interrogazione:

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 

si potrebbe creare quella query come vista e denominarlo orders_with_customers, nell'applicazione ora è possibile emettere la query

SELECT * 
FROM  orders_with_customer 

uno dei vantaggi è l'astrazione, si potrebbe modificare il modo di memorizzare il nome dei clienti, come comprensiva un secondo nome, e basta cambiare la query di vista. Tutte le applicazioni che hanno utilizzato la vista continuano a farlo, ma ora includono il secondo nome.

0

Sono una scorciatoia per i filtri comuni.

Supponiamo di avere una tabella di record con una colonna eliminata. Normalmente non ti interessano i record cancellati e quindi puoi creare una vista chiamata Records che filtra i record cancellati dalla tabella di AllRecords.

Ciò renderà il vostro codice pulito in quanto non è necessario aggiungere/anteporre deleted != 1 ad ogni istruzione.

SELECT * FROM Records 

restituire tutti i record non cancellati.

0

In parole semplici

In SQL, una vista è una tabella virtuale sulla base del risultato-set di un SQL.

Una vista contiene righe e colonne, solo come una tabella reale. I campi in una vista sono campi da una o più tabelle reali nel database.

È possibile aggiungere funzioni SQL, dove e unirsi dichiarazioni a una visione e presentare i dati come se i dati venissero da una singola tabella.

Source

In addtion a questo, è possibile inserire le righe in un sottostante table da un view purché la sola tabella è riferita dalla vista e colonne che non si fa riferimento nella visualizzazione consentono nulli.

0

Una vista è un modo di pre-definire alcune query. Può essere interrogato come una tabella, è definito da una query piuttosto che da una serie di dati su disco. Querying ti permette di interrogare i risultati della tabella.

Nella maggior parte dei casi, l'interrogazione di una vista può essere vista come equivalente all'utilizzo della query di definizione della vista come subquery nella query principale. Le viste consentono alle query di essere più brevi e più modulari (poiché le parti comuni sono definite separatamente nella vista). Offrono anche opportunità di ottimizzazione (sebbene non tutti i database lo facciano, non sono sicuro che MySQL offra ottimizzazioni per rendere le viste più veloci o meno).

Se si aggiornano le tabelle sottostanti, le query sulla vista rifletteranno automaticamente tali modifiche.

2

È semplice: le viste sono tabelle virtuali.

Le viste si basano su query SELECT su tabelle "reali", ma la differenza è che le viste non memorizzano le informazioni diversamente dalle tabelle reali. Una vista si riferisce solo alle tabelle e le combina nel modo in cui SELECT le dice. Ciò rende le query spesso utilizzate molto più semplificate.

Ecco un semplice esempio per te. Supponiamo che tu abbia un tavolo di impiegati e un tavolo di reparti, e vorresti vedere i loro stipendi. Per prima cosa puoi creare una vista per i salari.

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 

Questa interrogazione elenca il nome del dipendente, la sua/il suo stipendio e il reparto e li ordini dai loro stipendi in ordine decrescente. Quando hai fatto questo è possibile utilizzare le query come ad esempio:

SELECT * from SALARIES 

Su una scala più ampia si potrebbe fare una vista che calcola lo stipendio medio dei dipendenti e liste di chi ha uno stipendio che è meno del salario medio. Nella vita reale tali domande sono molto più complesse.

1

Si può pensare alla vista come una tabella generata al volo. Nelle tue query si comporta come una normale tabella ma, invece di essere archiviata sul disco, viene creata al volo quando è necessaria da un'istruzione SQL definita durante la creazione di una vista.

Per creare una vista, utilizzare:

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

è possibile utilizzare questo punto di vista solo come un normale tavolo. Il trucco è quando si aggiorna la gente delle persone, anche la vista first_names verrà aggiornata perché è solo un risultato dell'istruzione SELECT.

seguente interrogazione:

SELECT * FROM first_names 

torneranno tutti i primi nomi di persone di nome Smith nel popolo della tabella. Se aggiorni la tabella persone e riesegui la query, vedrai i risultati aggiornati.

In pratica, è possibile sostituire le viste con istruzioni SELECT nidificate. Tuttavia, viste hanno alcuni vantaggi:

  • Shorter query - istruzioni SELECT nidificate rendere la query più
  • migliore leggibilità - se la vista ha un nome sensibile, la query è molto più facile da capire
  • migliore velocità - l'istruzione SELECT della vista è memorizzata nel motore del database ed è pre-analizzata, quindi non deve essere trasferita dal client e analizzata più e più volte
  • Caching e ottimizzazioni: il motore del database può memorizzare nella cache la vista ed eseguire altre ottimizzazioni