Query: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
non è uno stub
Etichette: Rimozione di avvisi di servizio Modifica visuale
correggo markup, rimuovo corsivi impropri
Riga 1:
{{nota disambigua|descrizione=l'omonima rivista|titolo=CICAP#Pubblicazioni}}
{{F|basi di dati|novembre 2013}}
In [[informatica]], il termine '''query''' indica l'interrogazione di ununa [[databasebase di dati]] da parte di un utente. Il database (o ''base di dati'') è in genere strutturato secondo il [[modello relazionale]], che permette di compiere determinate operazioni sui [[dati]] (selezione, inserimento, cancellazione, aggiornamento, ecc.). Di solito una ''query'' usa un linguaggio di interrogazione [[interprete (informatica)|interpretato]], il quale è rappresentato dallo [[standard (informatica)|standard]] SQL (''[[Structured Query Language]]'') nei suoi sottolinguaggi [[Linguaggio di interrogazione|Data Query Language]] e [[Data Manipulation Language]], che in tal modo la rende più comprensibile al [[DBMS|sistema di gestione di database]] (DBMS).
 
Il risultato di una ''query'' è oggetto di studio dell'[[algebra relazionale]].
 
==Descrizione==
Esistono svariati tipi di DBMS (per es. [[MySQL]], [[Oracle Database|Oracle]], [[Interbase]], [[Postgres]]), che hanno sviluppato una loro specifica [[sintassi (informatica)|sintassi]]; ma come [[standard (informatica)|standard]] di riferimento hanno tutti l'[[SQL]] [[ANSI]].
 
Una ''query'' di selezione inizia classicamente con il comando ''select''<samp>SELECT</samp>, che apre una stringa di interrogazione sul database; il simbolo ''<samp>*''</samp> (''all'') seleziona tutti i campi della tabella; ''from''<samp>FROM</samp> dichiara l'origine dei dati (nell'esempio sottostante, la tabella STATI).
 
Una semplice query SQL di selezione può essere la seguente:
Riga 16:
</syntaxhighlight>
 
Si possono aggiungere criteri restrittivi di selezione (''filtri'') introdotti abitualmente attraverso la clausola aggiuntiva ''<samp>WHERE''</samp>. Vediamo un esempio:
 
:<syntaxhighlight lang="sql">
Riga 22:
</syntaxhighlight>
 
In questo caso la ''query'' restituirà, tra tutti i [[record (database)|record]], solo quelli che avranno nel campo CONTINENTE il valore "Europa". Se al posto dell'operatore logico di confronto = si usa invece <> verranno selezionati tutti i record diversi dal valore immesso.
 
Si possono inoltre combinare più filtri di ricerca, uniti dall'[[operatore (informatica)|operatore]] [[logica booleana|logico]] ''<samp>[[Algebra di Boole#AND|and]]''</samp> e ''<samp>[[Algebra di Boole#OR|or]]''</samp>, ottenendo una condizione per la quale una ''query'' deve essere valida oppure combinare più ''query'' insieme tramite la clausola [[Join (SQL)|Join]].
 
Le operazioni tipiche di query che saranno possibili su una tabella, precedentemente definita e creata nella sua struttura tramite il [[Data Definition Language]] (DDL), sono quelle riassunte nell'acronimo CRUD ovvero C creazione o inserimento dei record (''insert''<samp>INSERT</samp>), R lettura (''select''<samp>SELECT</samp>), U aggiornamento (''update''<samp>UPDATE</samp>), D cancellazione (''delete''<samp>DELETE</samp>).
 
=== Tipi di query ===
Esistono diversi tipi di query:
* Query di selezione: è possibile estrarre i dati (''select'') da una o più tabelle e visualizzarli in una nuova tabella.
 
* ''Query di selezione''accodamento: èconsente possibiledi estrarre i datiaggiungere (''selectinsert'') daa unatabelle ogià piùesistenti tabelleun egruppo visualizzarlidi [[record (database)|record]] in unabase a dei nuovacriteri tabellaspecifici.
* ''Query di accodamento''aggiornamento: consente di aggiungeremodificare (''insertupdate'') ail tabellevalore giàdi esistentiuno uno gruppopiù dicampi [[recordin (database)|record]]corrispondenza indi baseun aintervallo deiselezionato criteridi specificirecords esistenti.
* ''Query di aggiornamento''eliminazione: consente di modificarecancellare (''updatedelete'') il valore di uno o più campirecord indipendentemente corrispondenzadai dicriteri uninseriti intervallonella selezionato dicreazione recordsdella esistentiquery.
* ''Query a campi incrociati'': permette di "incrociare" i campi di più tabelle in modo tale da ottenere una matrice in cui le righe corrispondono normalmente a campi di tipo descrittivo e riepilogativo, mentre le colonne corrispondono a totali o conteggi. Vengono chiamate anche ''query pivot'', poiché i dati che risultano alla fine della creazione sono simili alle tabelle pivot di un [[foglio di calcolo]].
* ''Query di eliminazione'': consente di cancellare (''delete'') uno o più record dipendentemente dai criteri inseriti nella creazione della query.
* Query di ''creazione tabella'': se lo si desidera, le righe prodotte da una query possono anche alimentare i record di una nuova tabella mediante una query di creazione tabella, facendo sempre riferimento alla scheda Struttura, gruppo Tipo di query.
* ''Query a campi incrociati'': permette di "incrociare" i campi di più tabelle in modo tale da ottenere una matrice in cui le righe corrispondono normalmente a campi di tipo descrittivo e riepilogativo, mentre le colonne corrispondono a totali o conteggi. Vengono chiamate anche ''query pivot'', poiché i dati che risultano alla fine della creazione sono simili alle tabelle pivot di un [[foglio di calcolo]].
* Query di ''creazione tabella'': se lo si desidera, le righe prodotte da una query possono anche alimentare i record di una nuova tabella mediante una query di creazione tabella, facendo sempre riferimento alla scheda Struttura, gruppo Tipo di query.
 
Esistono inoltre le [[query annidate]] dove il filtro della query è dato da un'altra query.
 
Esistono anche le '''query di raggruppamento''', dovetramite cui è possibile raggruppare righe in base ad uno o più campi. in questo caso, ogni gruppo è costituito da righe aventi dati uguali nel campo indicato (detto appunto campo raggruppato) ed occuperà una sola riga dell'elenco prodotto dalla query. Le principali funzioni native di Access da applicare ad ogni raggruppamento sono quelle di somma, conteggio, media, minimo e massimo.
 
== Altri ambiti ==
Il termine ''query'' è anche usato per indicare una conversazione privata tra due utenti di una [[chat]], come ad esempio in [[Internet Relay Chat|IRC]].
 
== Voci correlate ==