Differenza tra vista e tabella in sql


136

Possibile duplicato:
differenza tra viste e tabelle nelle prestazioni

Qual è la differenza principale tra view e table in SQL. C'è qualche vantaggio nell'usare le viste invece delle tabelle.



6
Non sembra un duplicato. Il post collegato chiede in modo specifico prestazioni / efficienza. Questo post chiede di più su come differiscono come tipi di dati, come rappresenta la risposta selezionata.
Ð ..

Risposte:


197

Una tabella contiene dati, una vista è solo SELECTun'istruzione che è stata salvata nel database (più o meno, a seconda del database).

Il vantaggio di una vista è che può unire i dati di più tabelle creando così una nuova vista. Supponi di avere un database con stipendi e devi fare alcune complesse query statistiche su di esso.

Invece di inviare la query complessa al database in qualsiasi momento, è possibile salvare la query come vista e quindi SELECT * FROM view


11
Quindi la vista è effettiva una tabella creata da un'istruzione select. La vista è memorizzata e vi si può accedere, quindi quale sarebbe la differenza tra la creazione di una nuova tabella con tali informazioni anziché una vista.
Doug Hauf,

23
Puoi pensare a una vista come a una "istruzione selezionata salvata" che puoi ripetere. Non è proprio un tavolo; anche se alcuni database consentono di creare viste con una vera tabella sottostante, in realtà è solo SELECTun'istruzione che restituisce risultati.
Aaron Digulla,

1
qualcosa da notare: alcune visualizzazioni dell'elenco dei sistemi di database insieme a tabelle su "show tables;" comando.
Dexter,

1
@ShwetabhShekhar Dipende dal database e dal tipo di vista. Nella forma più semplice, il database eseguirà l'SQL come se avessi appena inviato il tutto. In questo caso, è sufficiente salvare l'invio di molti byte ancora e ancora. Alcuni database possono eseguire la query e archiviare il risultato in una tabella (reale). Quindi devi risolvere i problemi in qualche modo che hai citato. Controllare la documentazione del DB come farlo.
Aaron Digulla,

1
@FoxDeploy Sì, poiché quella vista non aiuta in alcun modo. Scenari utili sarebbero una vista con autorizzazioni limitate o una vista che seleziona una tabella da un altro schema nello stesso database o in un altro database (tabella remota).
Aaron Digulla,

34

Tabella: la tabella è una memoria preliminare per l'archiviazione di dati e informazioni in RDBMS. Una tabella è una raccolta di voci di dati correlate ed è composta da colonne e righe.

Vista: una vista è una tabella virtuale i cui contenuti sono definiti da una query. Se non indicizzato, una vista non esiste come un set memorizzato di valori di dati in un database. I vantaggi rispetto al tavolo sono

  • Possiamo combinare colonne / righe da più tabelle o un'altra vista e avere una vista consolidata.
  • Le viste possono essere utilizzate come meccanismi di sicurezza consentendo agli utenti di accedere ai dati attraverso la vista, senza concedere agli utenti le autorizzazioni per accedere direttamente alle tabelle di base sottostanti della vista
  • Funziona come un livello astratto per i sistemi a valle, quindi qualsiasi cambiamento nello schema non viene esposto e quindi i sistemi a valle non ne vengono influenzati.

16

Una vista è una tabella virtuale. Una vista è composta da righe e colonne proprio come una tabella. La differenza tra una vista e una tabella è che le viste sono definizioni costruite sopra altre tabelle (o viste) e non contengono dati. Se i dati cambiano nella tabella sottostante, la stessa modifica si riflette nella vista. Una vista può essere costruita sopra una singola tabella o più tabelle. Può anche essere costruito sopra un'altra vista. Nella pagina SQL View View, vedremo come è possibile creare una vista.

Le viste offrono i seguenti vantaggi:

  1. Facilità d'uso: una vista nasconde la complessità delle tabelle del database agli utenti finali. In sostanza possiamo pensare alle viste come a un livello di astrazione in cima alle tabelle del database.

  2. Risparmio di spazio: le viste occupano pochissimo spazio per l'archiviazione, poiché non memorizzano i dati effettivi.

  3. Ulteriore sicurezza dei dati: le viste possono includere solo determinate colonne nella tabella in modo che solo le colonne non sensibili siano incluse ed esposte all'utente finale. Inoltre, alcuni database consentono alle viste di avere impostazioni di sicurezza diverse, nascondendo così i dati sensibili da occhi indiscreti.

Risposta da: http://www.1keydata.com/sql/sql-view.html


4

In vista non esiste alcuna relazione diretta o fisica con il database. E la modifica tramite una vista (ad es. Inserimento, aggiornamento, eliminazione) non è consentita: è solo un insieme logico di tabelle


1
In SQL Server, è possibile modificare la tabella sottostante tramite una vista, se fa riferimento solo a una tabella di base. vedi qui
Kristen Hammack,

3

Una vista ci aiuta a sbarazzarci dell'utilizzo continuo dello spazio del database. Se si crea una tabella, questa viene archiviata nel database e contiene spazio per tutta la sua esistenza. La vista viene invece utilizzata quando viene eseguita una query, risparmiando così lo spazio db. E non possiamo creare tavoli grandi per tutto il tempo unendo tavoli diversi, ma dipende da quanto è grande il tavolo per risparmiare spazio. Quindi visualizza solo temporaneamente creare una tabella con l'unione di tabella diversa in fase di esecuzione. Esperti, per favore correggetemi se sbaglio.


2

Tavolo:

La tabella memorizza i dati nel database e contiene i dati.

Visualizza:

Vista è una tabella immaginaria, contiene solo i campi (colonne) e non contiene dati (riga) che verranno inquadrati in fase di esecuzione Viste create da una o più tabelle da join, con colonne selezionate. Le viste vengono create per nascondere alcune colonne all'utente per motivi di sicurezza e per nascondere informazioni presenti nella colonna. Le viste riducono lo sforzo per la scrittura di query per accedere a colonne specifiche ogni volta Invece di colpire ogni volta la query complessa nel database, possiamo usare view


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.