Query: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Stemby (discussione | contributi)
mNessun oggetto della modifica
prosa
 
(121 versioni intermedie di 73 utenti non mostrate)
Riga 1:
{{nota disambigua|descrizione=l'omonima pubblicazione periodica del [[CICAP]]|titolo=Query (rivista)}}
{{F|informatica|giugno 2009}}
{{F|basi di dati|novembre 2013}}
Il termine ''query'', in [[informatica]] viene utilizzato per indicare l'interrogazione di un [[database]] in modo da ottenere dei dati contenuti in uno o più database. Solitamente una query viene ''passata'' al [[DBMS]] in linguaggio [[SQL]] (Structured Query Language). L'analisi del risultato della query è oggetto di studio dell'[[Algebra relazionale]].
In [[informatica]], una '''''query''''', o '''interrogazione''', è un comando scritto dall'utente per estrarre informazioni dal contenuto di una [[base di dati]]. Quest'ultima è in genere [[Struttura dati|strutturata]] secondo il [[modello relazionale]], che permette di compiere determinate operazioni sui [[dati]] (come selezione, inserimento, cancellazione o aggiornamento).
 
Di solito, le interrogazioni vengono scritte in un [[linguaggio di interrogazione]] [[interprete (informatica)|interpretato]], come [[Structured Query Language|SQL]], e si interfacciano al [[Database management system|sistema di gestione della base dati]].
Sul mercato esistono svariate tipologie di database ([[MySQL]], [[Oracle]], [[Interbase]], [[Postgres]]) che hanno sviluppato una loro specifica sintassi. Come standard di riferimento hanno però tutti l'[[SQL]] ANSI, anche se esistono lievi differenze tra la sintassi dei diversi SQL. Una semplice ed esemplificativa Query SQL può essere la seguente:
 
Il risultato di una ''query'' è oggetto di studio dell'[[algebra relazionale]].
<source lang="sql">
select * from TABELLA1
</source>
 
==Descrizione==
Una Query inizia classicamente con il comando ''select'', che apre una stringa di interrogazione sul DB; ''*'' sta per all, ovvero tutti (i campi della tabella); ''from'' dichiara l'origine dei dati, ovvero, nell'esempio, la TABELLA1.
Esistono svariati tipi di sistemi di gestione, detti [[Database management system|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 Queryquery di selezione inizia classicamente con il comando ''select''<samp>[[Select (SQL)|SELECT]]</samp>, che apre una [[Stringa (linguaggi formali)|stringa di interrogazione]] sul DBdatabase; il simbolo <samp>*</samp> (''*all'') staè perun all,[[metacarattere]] ovveroche seleziona tutti (i campi della tabella); ''from''<samp>FROM</samp> dichiara l'origine dei dati, ovvero, (nell'esempio sottostante, la TABELLA1[[tabella]] STATI).
Una query può contenere parametri per restringere la ricerca, introdotti abitualmente dal comando ''WHERE''. Vediamo un esempio:
 
Una semplice [[query SQL]] di selezione può essere la seguente:
<source lang="sql">
select * from TABELLA1 where CAMPO1 = 1000;
</source>
 
:<sourcesyntaxhighlight lang="sql">
In questo caso la query restituirà tra tutti i record, solo quelli che avranno nel CAMPO1 il valore 1000.
select * from TABELLA1STATI
</syntaxhighlight>
 
Si possono aggiungere criteri restrittivi di selezione (filtri), introdotti abitualmente attraverso la clausola aggiuntiva <samp>WHERE</samp>. Vediamo un esempio:
Si possono inoltre combinare più filtri di ricerca, uniti dalle condizioni ''and'' e ''or'', oppure combinare più query insieme (tramite la funzione Join).
 
:<sourcesyntaxhighlight lang="sql">
Un altro uso termine query è per indicare una conversazione privata tra due utenti di una chat, come ad esempio in [[Internet Relay Chat|IRC]].
select * from TABELLA1STATI where CAMPO1CONTINENTE = 1000"Europa";
</syntaxhighlight>
 
In questo caso, la query restituirà, tra tutti i [[record (database)|record]], solo quelli che avranno nel campo <samp>CONTINENTE</samp> il valore "<samp>Europa</samp>". Se al posto dell'operatore logico di confronto <samp>=</samp> si usa invece <samp><></samp> 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, già 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 (<samp>INSERT</samp>); R, lettura (<samp>SELECT</samp>); U, aggiornamento (<samp>UPDATE</samp>); D cancellazione (<samp>DELETE</samp>).
 
=== Tipi di query ===
Esistono diversi tipi di query:
* Query di selezione: è possibile estrarre i dati (<samp>SELECT</samp>) da una o più tabelle e visualizzarli in una nuova tabella.
* Query di accodamento: consente di aggiungere (<samp>INSERT</samp>) a tabelle già esistenti un gruppo di [[record (database)|record]] in base a dei criteri specifici.
* Query di aggiornamento: consente di modificare (<samp>UPDATE</samp>) il valore di uno o più campi in corrispondenza di un intervallo selezionato di records esistenti.
* Query di eliminazione: consente di cancellare (<samp>DELETE</samp>) uno o più record dipendentemente dai criteri inseriti nella creazione della query. <ref>{{cita web|url=https://support.microsoft.com/it-it/office/introduzione-alle-query-a9739a09-d3ff-4f36-8ac3-5760249fb65c|titolo=Introduzione alle query}}</ref>
* 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. <ref>{{cita web|url=https://syrusindustry.com/wiki/query|titolo=TIPOLOGIE DI QUERY}}</ref>
 
Esistono inoltre le [[query annidate]], in cui il filtro della query è dato da un'altra query.
 
Esistono anche le query di raggruppamento, tramite 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) e 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 ==
Un altro usoIl termine query è anche usato per indicare una conversazione privata tra due utenti di una [[chat]], come ad esempio in [[Internet Relay Chat|IRC]].
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Base di dati]]
* [[SQL]]
* [[QueryLinguaggio languagedi interrogazione]]
* [[Linguaggio di manipolazione dei dati]]
* [[SQL injection]]
* [[Query annidate]]
* [[Information retrieval]]
 
== Collegamenti esterni ==
{{portale|telematica}}
* {{Collegamenti esterni}}
* {{FOLDOC||query}}
 
{{Fportale|informatica|giugno 2009}}
[[Categoria:Database]]
 
[[Categoria:Teoria delle basi di dati]]
[[de:Datenbanksprache]]
[[ja:データベース言語]]
[[nl:Query]]
[[pl:Zapytanie (bazy danych)]]
[[sr:Упит]]