SQL | |
Data della prima versione | 1974 |
---|---|
Paradigma | dichiarativo , procedurale , orientato agli oggetti |
Autore | Donald D. Chamberlin e Raymond F. Boyce |
Sviluppatore | IBM |
Ultima versione | SQL: 2016 (2016) |
Digitando | statico e forte |
dialetti | SQL-86, SQL-89, SQL-92, SQL: 1999, SQL: 2003, SQL: 2008, SQL: 2011, SQL: 2016 |
influenzato | CQL , LINQ , Windows PowerShellShe |
implementazioni | molti |
Sistema operativo | Multipiattaforma |
Estensione del file | sql |
Estensione | .sql |
---|---|
Tipo MIME | application/x-sql, application/sql |
Sviluppato da | ISO / IEC |
Tipo di formato | Banca dati |
Standard | ISO/IEC 9075 |
SQL (acronimo di Structured Query Language , in francese linguaggio di query strutturato ) è un linguaggio informatico standardizzato utilizzato per sfruttare i database relazionali . La parte del linguaggio di manipolazione dei dati di SQL consente di trovare, aggiungere, modificare o eliminare i dati nei database relazionali.
Oltre al linguaggio di manipolazione dei dati:
Creato nel 1974, standardizzato dal 1986, il linguaggio è riconosciuto dalla stragrande maggioranza dei sistemi di gestione di database relazionali (abbreviato RDBMS) presenti sul mercato.
SQL fa parte della stessa famiglia dei linguaggi ALPHA (di cui è il discendente), SQUARE, QUEL (integrato in Ingres ) o QBE (Zloof). Si chiamava SEQUEL quando è nato, ma questo nome è stato cambiato in SQL a causa del fatto che SEQUEL era un marchio registrato del produttore di aerei Hawker-Siddeley .
Nel giugno 1970 , Edgar Frank Codd pubblicò l'articolo A Relational Model of Data for Large Shared Data Banks sulla rivista Communications of the ACM ( Association for Computing Machinery ). Questo repository relazionale basato sulla logica dei predicati del primo ordine è stato rapidamente riconosciuto come un interessante modello teorico per interrogare i database , e ha ispirato lo sviluppo del QUEry Language ( SEQUEL ). conflitto di marchio .
Sviluppato presso IBM nel 1970 da Donald Chamberlin e Raymond Boyce, questa prima versione è stata progettata per manipolare e modificare i dati memorizzati nel database relazionale utilizzando lo System R gestione di database del sistema . Il nome SEQUEL, che era stato registrato commercialmente dal produttore di aeroplani Hawker Siddeley per un sistema di acquisizione dati, fu abbandonato e appaltato a SQL nel 1975. Ci si aspettava che SQL diventasse un componente chiave del futuro progetto FS .
Nel 1979 , Relational Software, Inc. (ora Oracle Corporation ) ha introdotto la prima versione di SQL disponibile in commercio, rapidamente emulata da altri fornitori.
SQL è stato adottato come raccomandazione dall'American Standards Institute (ANSI) nel 1986 , poi come standard internazionale dall'ISO nel 1987 come ISO/IEC 9075 - Information technology - Database Languages - SQL .
Lo standard SQL internazionale ha subito una serie di revisioni:
Anno | Nome | denominazione | Commenti |
---|---|---|---|
1986 | ISO/IEC 9075: 1986 | SQL-86 o SQL-87 | Pubblicato dall'ANSI poi adottato dall'ISO nel 1987 . |
1989 | ISO/IEC 9075: 1989 | SQL-89 o SQL-1 | Revisione minore. |
1992 | ISO/IEC 9075: 1992 | SQL-92 (en) alias SQL2 | Revisione importante. |
1999 | ISO/IEC 9075: 1999 | SQL-99 (en) alias SQL3 | Espressioni regolari, query ricorsive, trigger, tipi non scalari e alcune funzioni orientate agli oggetti (gli ultimi due punti sono alquanto controversi e non ancora ampiamente implementati). |
2003 | ISO/IEC 9075: 2003 | SQL: 2003 (it) | Introduzione di funzioni per la manipolazione XML, "funzioni finestra", ordini standardizzati e colonne con valori autoprodotti (incluse colonne identità). |
2008 | ISO/IEC 9075: 2008 | SQL: 2008 (en) | Aggiunte alcune funzioni di windowing (ntile, lead, lag, first value, last value, n-th value), limitazione del numero di righe (OFFSET/FETCH), piccolo miglioramento su tipi distinti, cursori e meccanismi di autoincremento. |
2011 | ISO/IEC 9075: 2011 | SQL: 2011 (en) | Aggiunto supporto per tabelle temporali (storizzazione automatica). |
Come qualsiasi standard internazionale pubblicato da ISO, ISO/IEC 9075 è disponibile per l'acquisto dal sito Web di questa organizzazione. L'ultima bozza dello standard è disponibile su wiscorp.com.
Il linguaggio SQL viene utilizzato principalmente in tre modi:
Le istruzioni SQL sono scritte in un modo che ricorda le normali frasi inglesi. Questa somiglianza intenzionale ha lo scopo di facilitare l'apprendimento e la lettura.
È un linguaggio dichiarativo, cioè permette di descrivere il risultato atteso, senza descrivere come ottenerlo. I DBMS sono dotati di ottimizzatori di query , meccanismi che determinano automaticamente il modo ottimale per eseguire operazioni, anche stimando la complessità algoritmica . Questo si basa su statistiche raccolte dai dati contenuti nel database (numero di record, numero di valori distinti in una colonna, ecc.).
Le istruzioni SQL coprono 4 aree:
Le istruzioni per la manipolazione dei contenuti del database iniziano con le parole chiave SELECT , UPDATE , INSERT o DELETE che corrispondono rispettivamente alle operazioni di ricerca del contenuto, modifica, aggiunta e cancellazione.
Diverse altre parole chiave come FROM , JOIN e GROUP BY vengono utilizzate per indicare le operazioni di algebra relazionale da eseguire per ottenere il contenuto da manipolare.
linguaggio di definizione dei datiIstruzioni per la manipolazione dei metadati - descrizione della struttura, organizzazione e caratteristiche del database - iniziano con le parole chiave CREATE , ALTER , DROP , RENAME , COMMENT o TRUNCATE che corrispondono alle operazioni di aggiungere, modificare, eliminare, rinominare, commentare o svuotare un metadati. Queste parole chiave sono immediatamente seguite dal tipo di metadati da utilizzare - TABLE , VIEW , INDEX ...
linguaggio di controllo dei dati e linguaggio di controllo delle transazioniLe parole chiave GRANT e REVOKE vengono utilizzate per autorizzare operazioni a determinate persone, per aggiungere o rimuovere autorizzazioni. Mentre le parole chiave COMMIT e ROLLBACK vengono utilizzate per confermare o annullare l'esecuzione delle transazioni .
Sintassi SQL è oggetto della norma ISO 9075 standard di . Questo standard lascia la possibilità ai produttori di DBMS di aggiungere istruzioni specifiche e non standardizzate. Lo standard è evoluta nel corso degli anni per stare al passo con le richieste, e venditori di DBMS hanno capacità spesso aggiunto ai loro prodotti prima che diventino oggetto di norme, causando variazioni nel capire e comprendere. L'interpretazione che è fatta di un codice sorgente in SQL dal vari software DBMS. Queste differenze significano che un codice sorgente scritto senza precauzioni per un dato DBMS non funzionerà necessariamente con un altro DBMS.
SQL può gestire, e generalmente gestisce, più database. Devi indicare all'inizio con quale vuoi lavorare con un'istruzione USE
USE mabase;Il linguaggio di manipolazione dei dati DML o Data Manipulation Language, DML, in inglese, è un sottoinsieme di SQL utilizzato per aggiungere, modificare ed eliminare dati:
La parola chiave NULL è stata introdotta in SQL per esprimere le informazioni mancanti nel modello relazionale. L'introduzione di NULL, con TRUE e FALSE è il fondamento della logica ternaria . NULL non ha alcun valore in SQL (e non è un membro di alcun tipo di dati), è una parola chiave riservata, che indica che le informazioni sono mancanti. Pertanto, il confronto con NULL, anche con NULL stesso, non può essere TRUE o FALSE, deve essere sconosciuto e non ha valore booleano. Infatti, NULL non può essere considerato uguale a NULL, poiché le due informazioni mancanti, che questi due distinti NULL rappresentano, possono risultare differenti. Generalmente diciamo che NULL è un "marker".
Altri linguaggi di query includono gli antenati di SQL come QUEL (QUEry English Language) o il linguaggio QBE (Query By Example). Tuttavia, il linguaggio QBE , molto diverso da SQL, è ancora in vigore nel tipo “file” RDBMS come Paradox (Ansa Software/Borland/Corel) o Microsoft Access (database) di Microsoft .
Va notato che la tecnica WITH è stata in parte ripresa nello standard SQL:1999 per creare " Common Table Expression " (CTE o Table d'Expression Partagée in francese), vale a dire viste non istanziate che possono essere utilizzate. dalla query in cui compaiono, per fattorizzare espressioni o per consentire la scrittura di query ricorsive in modo da risolvere elegantemente attraversamenti di alberi o grafi.
Altri candidati includono:
|
Tutti questi sistemi hanno alcune peculiarità, alcune delle quali non si riscontrano in altre. È inoltre sempre interessante fare riferimento al manuale di riferimento RDBMS, durante richieste specifiche o complesse, nonché per la loro ottimizzazione.