Come configurare smartphone e PC. Portale informativo
  • casa
  • notizia
  • Lo scopo del linguaggio SQL. Operatori di manipolazione dei dati

Lo scopo del linguaggio SQL. Operatori di manipolazione dei dati

Structure Query Language (SQL) è stato creato come risultato dello sviluppo del modello di dati relazionali ed è ora lo standard de facto per i sistemi di gestione di database relazionali. Il linguaggio SQL è oggi supportato da un numero enorme di diversi tipi di DBMS.

Il nome del linguaggio SQL è solitamente pronunciato dalle lettere "es-q-el". A volte viene usato il nome mnemonico "See-Quel".

Il linguaggio SQL fornisce all'utente (con il minimo sforzo da parte sua) le seguenti capacità:

Crea database e tabelle con una descrizione completa della loro struttura

Eseguire operazioni di manipolazione dei dati di base: inserire, modificare, eliminare i dati

Eseguire query semplici e complesse.

SQL è completo in modo relazionale.

La struttura e la sintassi dei suoi comandi sono abbastanza semplici e il linguaggio stesso è universale, ovvero la sintassi e la struttura dei suoi comandi non cambiano quando si passa da un DBMS all'altro.

Il linguaggio SQL ha due componenti principali:

Data Definition Language (DDL) per la definizione delle strutture del database e il controllo dell'accesso ai dati

DML (Data Manipulation Language), progettato per recuperare e aggiornare i dati.

Il linguaggio SQL non è procedurale, ovvero, quando lo si utilizza, è necessario indicare quali informazioni devono essere ottenute e non come possono essere ottenute. I comandi SQL sono normali parole inglesi (SELECT, INSERT, ecc.). Esaminiamo prima le istruzioni SQL DML:

SELECT - recupero dei dati dal database

INSERT - inserimento di dati in una tabella

AGGIORNAMENTO - aggiornamento dei dati in una tabella

DELETE - eliminazione dei dati da una tabella

Istruzione SELECT

L'istruzione SELECT esegue operazioni equivalenti alle seguenti operazioni di algebra relazionale: select, proiezione e join.

La query SQL più semplice che la utilizza è simile a questa:

SELECT col_name FROM tbl

La parola chiave select è seguita da un elenco di colonne separate da virgole che verranno restituite dalla query. La parola chiave from specifica da quale tabella (o vista) recuperare i dati.

Il risultato di una query di selezione è sempre una tabella, chiamata tabella dei risultati. Inoltre, i risultati di una query eseguita con l'istruzione select possono essere utilizzati per creare una nuova tabella. Se i risultati di due query su tabelle diverse hanno lo stesso formato, possono essere combinati in un'unica tabella. Inoltre, la tabella ottenuta a seguito della query può diventare oggetto di ulteriori query.

Per selezionare tutte le colonne e tutte le righe di una tabella, basta fare il SELECT * FROM tbl;

Considera la tabella Prodotto, che contiene informazioni sui prezzi per vari tipi di prodotti:

Il risultato della query

SELEZIONA * DA Prodotto;

sarà l'intera tabella Prodotto.

Puoi selezionare colonne specifiche di una tabella usando una query

SELECT col1, col2, ..., coln FROM tbl;

Quindi, il risultato della query

SELEZIONA Tipo, Prezzo DA Prodotto;

ci sarà un tavolo

L'elenco delle colonne nell'istruzione select viene utilizzato anche quando è necessario modificare l'ordine delle colonne nella tabella risultante:

Per selezionare solo le righe della tabella che soddisfano determinate restrizioni, viene utilizzata una parola chiave speciale where, seguita da una condizione booleana. Se un record soddisfa questa condizione, viene incluso nel risultato. In caso contrario, tale voce viene scartata.

Ad esempio, la selezione di quei beni dalla tabella Prodotto, il cui prezzo soddisfa la condizione Prezzo<3200, можно осуществить, используя запрос

SELEZIONA * DA Prodotto dove Prezzo<3200;

Il suo risultato:

La condizione può essere composta e combinata utilizzando gli operatori logici NOT, AND, OR, XOR, ad esempio: dove id_ Price> 500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1 + 1) e costanti stringa: dove nome = "bilanciamento automatico".

L'utilizzo del costrutto BETWEEN var1 AND var2 consente di verificare se i valori di qualsiasi espressione rientrano nell'intervallo da var1 a var2 (inclusi questi valori):

SELEZIONA * FROM Prodotto dove Prezzo TRA 3000 E 3500;

Per analogia con l'operatore NOT BETWEEN, esiste l'operatore NOT IN.

I nomi delle colonne specificati nella clausola SELECT possono essere rinominati. Per questo viene utilizzata la parola chiave AS, che tuttavia può essere omessa, poiché implicitamente implicita. Ad esempio, la richiesta

SELECT Tipo modello AS, Type_id AS num FROM Product dove Type_id = 3

restituirà (i nomi alias devono essere scritti senza virgolette):

L'operatore LIKE serve per confrontare una stringa con un pattern:

SELECT * FROM tbl dove col_name LIKE "abc"

Questa query restituisce solo i record che contengono il valore stringa abc nella colonna col_name.

Nel modello sono consentiti due caratteri jolly: "_" e "%". Il primo sostituisce un carattere arbitrario nel modello e il secondo sostituisce una sequenza di caratteri arbitrari. Quindi, "abc%" corrisponde a qualsiasi stringa che inizia con abc, "abc_" - una stringa di 4 caratteri che inizia con abc, "% z" - una stringa arbitraria che termina con z e, infine, "% z%" - sequenze di caratteri contenenti z.

Puoi trovare tutti i record della tabella Prodotto in cui il valore Tipo inizia con la lettera "a" come segue:

SELECT * FROM Prodotto dove Digitare LIKE "a%";

bilance automatiche

Se la stringa di ricerca contiene un carattere jolly, è necessario specificare il carattere di controllo nella clausola ESCAPE. Questo carattere di controllo dovrebbe essere utilizzato nel modello prima del carattere jolly, indicando che quest'ultimo dovrebbe essere trattato come un carattere normale. Ad esempio, se in un determinato campo devono essere trovati tutti i valori contenenti il ​​carattere "_", il modello "% _%" risulterà nella restituzione di tutti i record della tabella. In questo caso, il modello dovrebbe essere scritto come segue:

"% | _%" ESCAPE "|"

Per verificare il valore per la conformità con la stringa "20%", è possibile utilizzare il seguente operatore:

MI PIACE "20 #%" ESCAPE "#"

L'operatore IS NULL consente di verificare l'assenza (presenza) di valori NULL nei campi della tabella. L'utilizzo dei normali operatori di confronto in questi casi può portare a risultati errati, poiché il confronto con un valore NULL restituisce UNKNOWN (sconosciuto). Pertanto, la condizione di selezione dovrebbe assomigliare a questa:

dove col_name IS NULL, invece di dove col_name = NULL.

Il risultato della selezione predefinita restituisce i record nello stesso ordine in cui sono archiviati nel database. Se è necessario ordinare i record in base a una delle colonne, è necessario utilizzare la clausola ORDER BY, seguita dal nome di questa colonna:

SELECT * FROM tbl ORDER BY col_name;

Come risultato di questa query, i record verranno restituiti in ordine crescente del valore dell'attributo col_name.

I record possono essere ordinati per più colonne. Per fare ciò, i loro nomi devono essere specificati dopo ORDER BY, separati da virgole:

SELECT * FROM tbl ORDER BY col_name1, col_name2.

I record verranno ordinati in base al campo col_name1; se nella colonna col_name1 sono presenti più record con lo stesso valore, verranno ordinati in base al campo col_name2.

Se si desidera ordinare i record in ordine inverso (ad esempio, decrescente per data), è necessario specificare ORDER BY col_name DESC.

Per l'ordinamento diretto, è presente la parola chiave ASC, che è l'impostazione predefinita.

Se il risultato della selezione contiene centinaia o migliaia di record, il loro output e la loro elaborazione richiedono una notevole quantità di tempo.

Pertanto, le informazioni vengono spesso impaginate e presentate all'utente in blocchi. La navigazione della pagina viene utilizzata con la parola chiave limit seguita dal numero di record da visualizzare. La seguente query recupera i primi 10 record, eseguendo contemporaneamente un ordinamento inverso sul campo col_name1:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Per recuperare i successivi 10 record viene utilizzata la parola chiave limit con due valori: il primo indica la posizione da cui visualizzare il risultato, il secondo indica il numero di record da recuperare:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

Per recuperare i successivi 10 record, è necessario utilizzare il costrutto LIMIT 20, 10.

In questo capitolo ...

  • Cos'è SQL?
  • Idee sbagliate di SQL
  • Uno sguardo ai diversi standard SQL
  • Familiarità con i comandi SQL standard e le parole riservate
  • Rappresentazione di numeri, simboli, date, ore e altri tipi di dati
  • Valori e restrizioni non definiti
  • Utilizzo di SQL su un sistema client/server
  • SQL sul web

SQLè un linguaggio flessibile che può essere utilizzato in un'ampia varietà di modi. È lo strumento più comune utilizzato per comunicare con un database relazionale. In questo capitolo spiegherò cos'è e cosa non è SQL, in particolare, in che modo SQL si differenzia da altri tipi di linguaggi per computer. Quindi acquisirai familiarità con i comandi e i tipi di dati supportati da SQL standard. Inoltre, spiegherò concetti di base come valori non definiti e restrizioni... Infine, fornirà una panoramica di come SQL si inserisce nell'ambiente client/server, nonché su Internet e Intranet delle organizzazioni.

Che cos'è SQL e cosa non è

La prima cosa da capire su SQL è che non lo è procedurale come FORTRAN, Basic, C, COBOL, Pascal e Java. Per risolvere un problema utilizzando uno di questi linguaggi procedurali, è necessario scrivere una procedura che esegua le operazioni specificate una per una fino al completamento dell'attività. La procedura può essere una sequenza lineare o contenere rami, ma in entrambi i casi il programmatore specifica l'ordine di esecuzione.

In altre parole, SQL è non procedurale linguaggio. Per usarlo per risolvere il problema, dì a SQL, che cosa esattamente ne hai bisogno come se stessi parlando con il genio della lampada di Aladino. E non devi dire come ottenere quello che vuoi per te. Il sistema di gestione del database (DBMS) deciderà come soddisfare al meglio la tua richiesta.

Bene. Ho appena detto che SQL non è un linguaggio procedurale. In sostanza, questo è vero. Tuttavia, milioni di programmatori in giro (e potresti esserlo tu) sono abituati a risolvere i problemi in modo procedurale, quindi negli ultimi anni c'è stata molta pressione per aggiungere alcune funzionalità procedurali a SQL. Pertanto, la nuova versione della specifica SQL, SQL: 2003, ora include funzionalità del linguaggio procedurale come blocchi BEGIN, condizionali IF, funzioni e procedure. Con questi nuovi strumenti è possibile archiviare programmi su un server in modo che possano essere riutilizzati da molti utenti.

Per illustrare cosa intendevo quando ho detto "dì al sistema esattamente ciò di cui hai bisogno", supponiamo di avere una tabella EMPLOYEE con i dati dei dipendenti e di voler selezionare tutte le righe da essa che corrispondono a tutti i dipendenti "senior". Per lavoratori "anziani" si può intendere chiunque abbia più di 40 anni o guadagni più di $ 60.000 all'anno. La selezione di cui hai bisogno può essere effettuata utilizzando la seguente query:

SELEZIONARE * DA DIPENDENTE DOVE ETÀ > 40 O STIPENDIO > 60000;

Questa istruzione seleziona dalla tabella EMPLOYEE tutte le righe in cui la colonna AGE (età) è maggiore di 40 o il valore nella colonna SALARY (stipendio) è maggiore di 60.000. SQL stesso sa come selezionare le informazioni. Il motore del database controlla il database e decide da solo come eseguire la query. Tutto quello che devi fare è indicare di quali dati hai bisogno.

Ricorda:
Una query è una domanda che poni al database. Se uno qualsiasi dei suoi dati soddisfa le condizioni della tua query, SQL li trasferisce a te
.

Le moderne implementazioni SQL mancano di molti dei semplici costrutti di programmazione che sono fondamentali per la maggior parte degli altri linguaggi. Nelle applicazioni della vita quotidiana, di regola, sono richiesti almeno alcuni di questi costrutti, quindi SQL è davvero sottolingua dati. Anche con le aggiunte che sono apparse in SQL insieme allo standard SQL: 1999 e le estensioni aggiuntive aggiunte in SQL: 2003, è comunque necessario utilizzare uno dei linguaggi di programmazione insieme a SQL per creare un'applicazione completa, come C.

È possibile selezionare le informazioni dal database in uno dei seguenti modi.

  • Utilizzando una query non programmabile una tantum dalla console del computer, inserendo un comando SQL e leggendo i risultati della sua esecuzione sullo schermo. Console è un termine tradizionale per l'hardware del computer che fa il lavoro della tastiera e dello schermo che si trovano nei PC moderni. Le query della console sono utili quando è necessaria una risposta rapida a una query specifica. Per soddisfare qualsiasi esigenza attuale, potresti aver bisogno di dati dal database che non hai mai avuto bisogno prima. Potresti non averne mai più bisogno, ma ora ne hai bisogno. Inserisci la query SQL appropriata dalla tastiera e dopo un po 'il risultato apparirà sullo schermo.
  • Con l'aiuto di un programma che estrae le informazioni da un database e quindi crea un report basato su questi dati, che viene visualizzato sullo schermo o in stampa. Il linguaggio SQL può essere usato in questo modo. Puoi inserire una query SQL complessa che potrebbe tornare utile in futuro direttamente nel tuo programma. Questo ti permette di riutilizzarlo in futuro. Pertanto, la formulazione della richiesta viene eseguita una volta. Il capitolo 15 spiega come inserire codice SQL in programmi scritti in un'altra lingua.

Linguaggio di query strutturato o SQLè un linguaggio di programmazione dichiarativo per l'uso in database quasi relazionali. Molte delle funzionalità SQL originali sono state prese per il calcolo delle tuple, ma le recenti estensioni a SQL includono sempre più algebra relazionale.
SQL è stato originariamente creato da IBM, ma molti fornitori hanno sviluppato i propri dialetti. È stato adottato come standard dall'American National Standards Institute (ANSI) nel 1986 e dall'ISO nel 1987. Nello standard del linguaggio di programmazione SQL, ANSI ha affermato che la pronuncia ufficiale di SQL è "es que el". Tuttavia, molti nel database utilizzavano la pronuncia gergale di Sequel, che riflette il nome originale della lingua, Sequel, che è stato successivamente modificato a causa di un conflitto tra marchio e nome tra IBM. Programmazione per principianti.
Linguaggio di programmazione SQLè stato rivisto nel 1992 e questa versione è nota come SQL-92 in. Quindi 1999 è stato rivisto di nuovo per diventare SQL: 1999 (AKA SQL3). Programmazione per manichini. SQL 1999 supporta oggetti che non erano precedentemente supportati in altre versioni, ma solo alla fine del 2001 solo alcuni sistemi di gestione di database supportavano le implementazioni SQL: 1999.
SQL, sebbene definito come ANSI e ISO, ha molte varianti ed estensioni, la maggior parte delle quali ha le proprie caratteristiche, come l'implementazione PL / SQL di Oracle Corporation o Sybase e l'implementazione Transact-SQL di Microsoft, che possono confondere le basi della programmazione. Inoltre, non è raro che le implementazioni commerciali omettano il supporto per le caratteristiche principali dello standard, come i tipi di dati come data e ora, preferendo la propria versione. Di conseguenza, a differenza di ANSI C o ANSI Fortran, che di solito possono essere trasferiti da una piattaforma all'altra senza grandi cambiamenti strutturali, le query SQL raramente possono essere trasferite tra diversi sistemi di database senza grandi modifiche. La maggior parte delle persone nel campo dei database crede che questa mancanza di compatibilità sia intenzionale per fornire a ogni sviluppatore il proprio sistema di gestione del database e legare il cliente a un database specifico.
Come suggerisce il nome, il linguaggio di programmazione SQL è progettato per uno scopo specifico e limitato: interrogare i dati contenuti in un database relazionale. In quanto tale, è un insieme di istruzioni del linguaggio di programmazione per la creazione di campioni di dati, piuttosto che un linguaggio procedurale come C o BASIC, progettato per risolvere una gamma molto più ampia di problemi. Le estensioni del linguaggio come "PL/SQL" sono progettate per affrontare questa limitazione aggiungendo elementi procedurali per SQL pur mantenendo i vantaggi di SQL. Un altro approccio consiste nel consentire alle query SQL di incorporare comandi del linguaggio di programmazione procedurale e interagire con il database. Ad esempio, Oracle e altri supportano il linguaggio Java in un database, mentre PostgreSQL consente di scrivere funzioni in Perl, Tcl o C.
Una battuta su SQL: "SQL non è né strutturato né un linguaggio". Lo scherzo è che SQL non è un linguaggio di Turing. ...

Seleziona * da T
do1 do2
1 un
2 B
do1 do2
1 un
2 B
Seleziona C1 da T
do1
1
2
do1 do2
1 un
2 B
Selezionare * da T dove C1 = 1
do1 do2
1 un

Data una tabella T, la query Seleziona * da T visualizzerà tutti gli elementi di tutte le righe della tabella.
Dalla stessa tabella, la query Seleziona C1 da T visualizzerà gli elementi dalla colonna C1 di tutte le righe della tabella.
Dalla stessa tabella, la query Seleziona * da T dove C1 = 1 visualizzerà tutti gli elementi di tutte le righe in cui il valore della colonna C1 è "1".

Parole chiave SQL

Le parole SQL sono divise in diversi gruppi.

Il primo è Linguaggio di manipolazione dei dati o DML(linguaggio di gestione dei dati). DML è un sottoinsieme del linguaggio utilizzato per interrogare i database, aggiungere, aggiornare ed eliminare dati.

  • SELECT è uno dei comandi DML più comunemente utilizzati e consente all'utente di specificare una query come una descrizione insieme del risultato desiderato. La query non specifica come dovrebbero essere localizzati i risultati: tradurre la query in un modulo che può essere eseguito nel database è compito del sistema di database, in particolare dell'ottimizzatore di query.
  • INSERT viene utilizzato per aggiungere righe (set formale) a una tabella esistente.
  • UPDATE viene utilizzato per modificare i valori dei dati in una riga esistente in una tabella.
  • DELETE definizione delle righe esistenti da eliminare dalla tabella.

Si può dire che altre tre parole chiave rientrino nel gruppo DML:

  • BEGIN WORK (o START TRANSACTION, a seconda del dialetto SQL) può essere utilizzato per contrassegnare l'inizio di una transazione di database che viene eseguita completamente o non viene eseguita affatto.
  • COMMIT stabilisce che tutti i dati vengono modificati dopo che le operazioni sono state salvate.
  • ROLLBACK specifica che tutte le modifiche ai dati dall'ultimo commit o rollback devono essere distrutte, fino al momento in cui è stato eseguito il commit nel database come "rollback".

COMMIT e ROLLBACK vengono utilizzati in aree quali il controllo e il blocco delle transazioni. Entrambe le istruzioni terminano tutte le transazioni correnti (insiemi di operazioni sul database) e rilasciano tutti i blocchi alla modifica dei dati nelle tabelle. La presenza o l'assenza di BEGIN WORK o di un'istruzione simile dipende dall'implementazione SQL specifica.

Il secondo gruppo di parole chiave appartiene al gruppo Linguaggio di definizione dei dati o DDL (linguaggio di definizione dei dati). DDL consente all'utente di definire nuove tabelle e relativi elementi. La maggior parte dei database SQL commerciali ha le proprie estensioni DDL che consentono il controllo su elementi non standard, ma solitamente vitali di un particolare sistema.
I punti principali di DDL sono i comandi di creazione ed eliminazione.

  • CREATE definisce gli oggetti (come le tabelle) da creare nel database.
  • DROP determina quali oggetti esistenti nel database verranno eliminati, di solito in modo permanente.
  • Alcuni sistemi di database supportano anche il comando ALTER, che consente all'utente di modificare un oggetto esistente in modi diversi, ad esempio aggiungendo colonne a una tabella esistente.

Il terzo gruppo di parole chiave SQL è Linguaggio di controllo dei dati o DCL (linguaggio di controllo dei dati). DCLè responsabile dei diritti di accesso ai dati e consente all'utente di controllare chi ha accesso per visualizzare o manipolare i dati nel database. Ci sono due parole chiave principali qui:

  • CONCESSIONE - Consente all'utente di eseguire operazioni
  • REVOCA - rimuove o limita la capacità dell'utente di eseguire operazioni.

Sistemi di database che utilizzano SQL

  • InterBase
  • MySQL
  • Oracolo
  • PostgreSQL
  • server SQL

Come diventare un professionista nello sviluppo di siti web e iniziare a guadagnare? Video corsi economici con un'introduzione introduttiva.

LINGUAGGIO SQL: MANIPOLAZIONE DEI DATI

IN QUESTA LEZIONE...

· Scopo di Structure Query Language (SQL) e il suo ruolo speciale nel lavoro con i database.

· Storia della nascita e dello sviluppo del linguaggio SQL.

· Scrittura di istruzioni SQL.

· Recupero di informazioni da database utilizzando l'istruzione SELECT.

· Costruzione di istruzioni SQL, caratterizzate dalle seguenti caratteristiche:

· Utilizzo della clausola WHERE per selezionare righe che soddisfano varie condizioni;

· Ordinamento dei risultati dell'esecuzione della query utilizzando la costruzione ORDER BY;

· Utilizzo di funzioni aggregative del linguaggio SQL;

· Raggruppare i dati selezionati utilizzando la clausola GROUP BY;

· Applicazione di sottoquery;

· L'uso di join di tabella;

· Applicazione di operazioni con insiemi (UNION, INTERSECT, EXCEPT).

· Apportare modifiche al database utilizzando le istruzioni INSERT, UPDATE e DELETE.

Uno dei linguaggi emersi a seguito dello sviluppo del modello di dati relazionali è SQL, che è ormai molto diffuso ed è diventato di fatto il linguaggio standard per i database relazionali. Lo standard SQL è stato rilasciato dal National Standards Institute (ANSI) degli Stati Uniti nel 1986 e nel 1987 l'International Organization for Standardization (ISO) ha adottato questo standard come standard internazionale. SQL è attualmente supportato da centinaia di diversi tipi di sistemi di gestione di database progettati per un'ampia varietà di piattaforme informatiche, dai personal computer ai mainframe.

Questo capitolo utilizza la definizione ISO di SQL.

Introduzione al linguaggio SQL

In questa parte, esamineremo lo scopo del linguaggio SQL, esploreremo la sua storia e analizzeremo i motivi per cui ora è così importante per le applicazioni di database.

Lo scopo del linguaggio SQL

Qualsiasi linguaggio progettato per funzionare con i database dovrebbe fornire all'utente le seguenti capacità:

· Creare database e tabelle con una descrizione completa della loro struttura;



· Eseguire operazioni di manipolazione dei dati di base, come l'inserimento, la modifica e l'eliminazione di dati dalle tabelle;

· Eseguire query semplici e complesse.

Inoltre, il linguaggio per lavorare con i database dovrebbe risolvere tutti i compiti di cui sopra con il minimo sforzo da parte dell'utente e la struttura e la sintassi dei suoi comandi dovrebbero essere abbastanza semplici e accessibili per l'apprendimento.

E infine, la lingua deve essere universale, ad es. soddisfare alcuni standard riconosciuti, che ti consentiranno di utilizzare la stessa sintassi e struttura di comando quando ti sposti da un DBMS a un altro. Il moderno standard del linguaggio SQL soddisfa quasi tutti questi requisiti.

SQL è un esempio di linguaggio di trasformazione dei dati o un linguaggio progettato per funzionare con le tabelle al fine di trasformare i dati di input nel modulo di output desiderato. Il linguaggio SQL, definito dallo standard ISO, ha due componenti principali:

· Data Definition Language (DDL), progettato per definire strutture di database e controllare l'accesso ai dati;

· Data Manipulation Language (DML), progettato per recuperare e aggiornare i dati.

Prima dello standard SQL3, SQL includeva solo comandi per la definizione e la manipolazione dei dati; mancava qualsiasi comando per controllare il corso dei calcoli. In altre parole, in questo linguaggio non c'erano IF... THEN... ELSE, GO TO, DO... WHILE, o qualsiasi altra istruzione progettata per controllare il flusso del processo computazionale. Tali compiti dovevano essere risolti in modo programmatico, utilizzando linguaggi di programmazione o controllo delle attività, o in modo interattivo, a seguito di azioni eseguite dall'utente stesso. A causa di tale incompletezza, dal punto di vista dell'organizzazione del processo computazionale, il linguaggio SQL potrebbe essere utilizzato in due modi. Il primo riguardava il lavoro interattivo, in cui l'utente immetteva singole istruzioni SQL dal terminale. Il secondo consisteva nell'iniettare istruzioni SQL in programmi di linguaggio procedurale.

Vantaggi del linguaggio SQL3, la cui definizione formale è stata adottata nel 1999:

· Il linguaggio SQL è relativamente facile da imparare.

· È un linguaggio non procedurale, quindi deve indicare quali informazioni devono essere ottenute, non come possono essere ottenute. In altre parole, SQL non richiede la specifica dei metodi di accesso ai dati.

· Come la maggior parte dei linguaggi moderni, SQL supporta un formato operatore fluente. Ciò significa che quando si entra, i singoli elementi dell'operatore non sono collegati agli elementi fissi sullo schermo.

· La struttura dei comandi è impostata da un insieme di parole chiave che sono normali parole inglesi, come CREATE TABLE -Create a table, INSERT - Insert, SELECT -Select.

Ad esempio:

CREATE TABLE [Vendite] ((S), [Nome oggetto] VARCHAR (15), [Costo] DECIMAL (7,2));

INSERIRE IN VALORI [Oggetto] ("SG16", "Marrone", 8300);

SELEZIONA, [Nome oggetto], [Costo];

DA [Vendite]

DOVE [Costo]> 10000;

· Il linguaggio SQL può essere utilizzato da un'ampia gamma di utenti, inclusi amministratori di database (DBA), dirigenti aziendali, programmatori di applicazioni e molti altri utenti finali di varie categorie.

Attualmente esistono standard internazionali per il linguaggio SQL che lo definiscono formalmente come il linguaggio standard per la creazione e la manipolazione di database relazionali, come in realtà è.

Storia del linguaggio SQL

La storia del modello di dati relazionali, e indirettamente del linguaggio SQL, è iniziata nel 1970 con la pubblicazione di un documento seminale di EF Codd, che all'epoca era all'IBM San Jose Research Laboratory. Nel 1974, D. Chamberlain, che ha lavorato nello stesso laboratorio, ha pubblicato una definizione di un linguaggio chiamato "Structured English Query Language", o SEQUEL. Nel 1976 fu rilasciata una versione rivista di questo linguaggio, SEQUEL/2; in seguito il suo nome dovette essere cambiato in SQL per motivi legali - l'abbreviazione SEQUEL era già usata dai filologi. Ma fino ad oggi, molte persone pronunciano ancora l'acronimo SQL come "sequel", sebbene ufficialmente si consiglia di leggerlo come "es-kyu-el".

Nel 1976, basato sul linguaggio SEQUEL/2, IBM Corporation ha rilasciato un prototipo di DBMS chiamato "System R". Lo scopo di questa sperimentazione è stato quello di testare la fattibilità dell'implementazione del modello relazionale. Tra gli altri aspetti positivi, il più importante dei risultati di questo progetto può essere considerato lo sviluppo del linguaggio SQL stesso. Tuttavia, le radici di questo linguaggio risalgono al linguaggio SQUARE (Specifying Queries as Rational Expressions), che era il predecessore del progetto System R. Il linguaggio SQUARE è stato sviluppato come strumento di ricerca per l'implementazione dell'algebra relazionale attraverso frasi scritte in inglese.

Alla fine degli anni '70, Oracle è stato rilasciato da quella che oggi è Oracle Corporation. Forse questa è la primissima delle implementazioni commerciali di un DBMS relazionale costruito sull'uso del linguaggio SQL.

Poco dopo è apparso il DBMS INGRES, che utilizzava il linguaggio di query QUEL.

Questo linguaggio era più strutturato di SQL, ma la sua semantica era meno simile a quella dell'inglese normale. Successivamente, quando SQL è stato adottato come linguaggio standard per database relazionali, INGRES è stato completamente tradotto nel suo utilizzo. Nel 1981, IBM ha rilasciato il suo primo sistema di gestione di database relazionali commerciale chiamato SQL/DS (per DOS/VSE). Nel 1982 è stata rilasciata una versione di questo sistema per l'ambiente VM / CMS e nel 1983 per l'ambiente MVS, ma con il nome DB2.

Nel 1982, il National Standards Institute (ANSI) degli Stati Uniti iniziò a lavorare sul Relation Database Language (RDL) sulla base di documenti concettuali di IBM. Nel 1983, l'Organizzazione internazionale per la standardizzazione (ISO) ha aderito a questo lavoro. Gli sforzi congiunti di entrambe le organizzazioni sono culminati nel rilascio dello standard del linguaggio SQL. Il nome RDL è stato abbandonato nel 1984 e il linguaggio di bozza è stato riprogettato per approssimare le implementazioni SQL esistenti.

La versione originale dello standard, emessa dall'ISO nel 1987, ha ricevuto molte critiche. In particolare, Date, noto ricercatore del settore, ha evidenziato che lo standard ometteva funzioni critiche, tra cui l'integrità referenziale e alcuni operatori relazionali.

Inoltre, rileva l'eccessiva ridondanza della lingua: una stessa richiesta potrebbe essere redatta in diverse versioni. La maggior parte delle critiche si è rivelata valida e sono stati apportati i necessari adeguamenti allo standard ancor prima della sua pubblicazione. Tuttavia, è stato deciso che era più importante rilasciare lo standard il prima possibile in modo che potesse fungere da base comune su cui sia il linguaggio stesso che le sue implementazioni potessero svilupparsi oltre che aspettare fino a quando tutte le funzioni che i diversi esperti ritengono necessarie sono definiti e concordati per una lingua simile.

Nel 1989, l'ISO ha pubblicato un supplemento allo standard che definisce le funzioni di integrità dei dati. Nel 1992 è stata rilasciata la prima revisione importante dello standard ISO, a volte indicato come SQL2 o SQL-92. Sebbene alcune funzioni siano state definite per la prima volta in questo standard, molte di esse sono già state implementate in tutto o in parte in una o più implementazioni commerciali del linguaggio SQL.

E la versione successiva dello standard, comunemente chiamata SQL3, è stata rilasciata solo nel 1999. Questa versione contiene un supporto aggiuntivo per le funzioni di gestione dei dati orientate agli oggetti.

Le funzioni che vengono aggiunte allo standard del linguaggio dagli sviluppatori di implementazioni commerciali sono chiamate estensioni. Ad esempio, lo standard del linguaggio SQL definisce sei diversi tipi di dati che possono essere archiviati nei database. In molte implementazioni, questo elenco è integrato da varie estensioni. Ciascuna delle implementazioni del linguaggio è chiamata dialetto. Non esistono due dialetti completamente identici, poiché attualmente non esiste un dialetto pienamente conforme allo standard ISO.

Inoltre, quando gli sviluppatori di database introducono nuove funzionalità nei sistemi, espandono continuamente i loro dialetti SQL, con il risultato che i singoli dialetti diventano sempre più diversi l'uno dall'altro. Tuttavia, il nucleo del linguaggio SQL rimane più o meno standardizzato in tutte le implementazioni.

Sebbene i concetti originali di SQL siano stati sviluppati da IBM, la sua importanza ha presto spinto altri sviluppatori a creare le proprie implementazioni. Attualmente, sul mercato sono disponibili letteralmente centinaia di prodotti basati sull'uso del linguaggio SQL e sentiamo costantemente parlare del rilascio di sempre più nuove versioni,

Funzionalità del linguaggio SQL

La funzionalità di base del linguaggio SQL è mostrata di seguito.

Definizione dei dati. Questa funzione SQL è una descrizione della struttura dei dati supportati e dell'organizzazione delle relazioni relazionali (tabelle). Per implementarlo si intendono gli operatori per la creazione di un database, la creazione di tabelle e l'accesso ai dati.

Creazione database... L'istruzione CREATE DATABASE viene utilizzata per creare un nuovo database. Il nome del database da creare è indicato nella struttura dell'operatore.

Creazione di tabelle. La tabella di base viene creata utilizzando l'istruzione CREATE TABLE. Questo operatore specifica i nomi dei campi, i tipi di dati per loro, la lunghezza (per alcuni tipi di dati). In SQL vengono utilizzati i seguenti tipi di dati:

INTERO - intero;

CHAR - valore del carattere;

VARCHAR - valore del carattere, vengono memorizzati solo i caratteri non vuoti;

DECIMALE - numero decimale;

FLOAT - numero in virgola mobile;

DOPPIA PRECISIONE - doppia precisione in virgola mobile;

DATETIME - data e ora;

BOOL è un valore booleano.

L'istruzione create table specifica i vincoli sui valori delle colonne e su una tabella. Le possibili limitazioni sono mostrate nella tabella. 4.8

Tabella 4.8 Restrizioni sui dati definiti

Per il modello dati relazionale, è essenziale specificare una chiave esterna (FOREIGNKEY). Quando si dichiarano chiavi esterne, è necessario imporre vincoli appropriati alla colonna, ad esempio NOT NULL.

In un'istruzione SQL, CHECK denota vincoli semantici che impongono l'integrità dei dati, come il vincolo dell'insieme di valori validi per una colonna specifica.

Non è possibile utilizzare l'istruzione create table più volte per la stessa tabella. Se, dopo la sua creazione, sono state rilevate imprecisioni nella sua definizione, è possibile apportare modifiche utilizzando l'istruzione ALTER TABLE. Questo operatore ha lo scopo di modificare la struttura di una tabella esistente: puoi eliminare o aggiungere un campo a una tabella esistente.

Manipolazione di dati. SQL consente a un utente o un'applicazione di modificare il contenuto di un database inserendo nuovi dati, eliminando o modificando i dati esistenti.

Inserimento di nuovi datiè la procedura per aggiungere righe al database e viene eseguita utilizzando l'istruzione INSERT.

Modifica dei dati assume modifiche ai valori in una o più colonne di una tabella e viene eseguita utilizzando un'istruzione UPDATE. Esempio:

IMPOSTA importo = importo + 1000.00

DOVE somma> 0

Eliminazione di righe dalla tabella viene eseguita utilizzando l'istruzione DELETE. La sintassi dell'operatore è:

DA tabella

La clausola WHERE è facoltativa; tuttavia, se non la includi, tutti i record nella tabella verranno eliminati. È utile utilizzare l'istruzione SELECT con la stessa sintassi dell'istruzione DELETE per verificare in anticipo quali record verranno eliminati.

Garantire l'integrità dei dati. Il linguaggio SQL consente di definire vincoli di integrità abbastanza complessi, la cui soddisfazione sarà verificata per tutte le modifiche al database. Il controllo sui risultati delle transazioni, l'elaborazione degli errori emergenti e il coordinamento del lavoro parallelo con il database di più applicazioni o utenti è fornito dalle istruzioni COMMIT (corregge la conclusione positiva della transazione corrente e l'inizio di una nuova) e ROLLBACK ( la necessità di eseguire il rollback - ripristinare automaticamente lo stato del database all'inizio della transazione)

Recuperando i datiÈ una delle funzioni più importanti del database, a cui corrisponde l'istruzione SELECT. Un esempio di utilizzo dell'operatore è stato discusso nella sezione precedente.

In SQL è possibile creare sequenze nidificate di query (sottoquery). Esistono alcuni tipi di query che vengono implementate al meglio utilizzando le sottoquery. Queste richieste includono i cosiddetti controlli di esistenza. Supponiamo di voler ottenere dati sugli studenti che non hanno un voto di sette. Se viene restituito un set vuoto, significa solo una cosa: ogni studente ha almeno uno di questi voti.

Collegamento tabelle... Le istruzioni SQL consentono di recuperare i dati da più di una tabella. Un modo per farlo è collegare le tabelle su un singolo campo comune.

L'istruzione SELECT deve contenere un vincolo sulla coincidenza dei valori di una specifica colonna (campo). Quindi solo le righe in cui i valori della colonna specificata sono gli stessi verranno recuperate dalle tabelle collegate. Il nome della colonna è indicato solo insieme al nome della tabella; in caso contrario, l'operatore sarà ambiguo.

È possibile utilizzare altri tipi di join di tabella: L'istruzione INTER JOIN garantisce che il recordset risultante contenga valori corrispondenti nei campi correlati. I join esterni (OUTER JOIN) consentono di includere nel risultato della query tutte le righe di una tabella e le righe corrispondenti di un'altra

Controllo di accesso. SQL fornisce la sincronizzazione dell'elaborazione del database da varie applicazioni, protezione dei dati da accessi non autorizzati.

L'accesso ai dati in un ambiente multiutente è regolato dalle istruzioni GRANT e REVOKE. In ogni dichiarazione è necessario specificare l'utente, l'oggetto (tabella, vista), in relazione al quale è assegnata l'autorizzazione e l'autorità stessa. Ad esempio, l'istruzione GRANT indica all'utente X di selezionare i dati dalla tabella PRODUCT:

CONCEDERE LA SELEZIONE SUL PRODOTTO A X

L'operatore REVOKE revoca tutte le autorizzazioni precedentemente concesse.

Incorporare SQL nelle applicazioni... Le applicazioni reali sono solitamente scritte in altri linguaggi che generano codice SQL e li inviano al DBMS come testo ASCII.

Lo standard IBM per i prodotti SQL specifica l'utilizzo di SQL integrato. Quando si scrive un programma applicativo, il suo testo è una combinazione di comandi del linguaggio di programmazione principale (ad esempio C, Pascal, Cobol, Fortran, Assembler) e comandi SQL con un prefisso speciale, ad esempio. ExecSQL. La struttura delle istruzioni SQL è stata estesa per accogliere le variabili della lingua host nell'istruzione SQL.



Il processore SQL modifica la visualizzazione del programma secondo i requisiti del compilatore del linguaggio di programmazione principale. La funzione del compilatore è tradurre (tradurre) un programma da un linguaggio di programmazione sorgente in un linguaggio vicino a un linguaggio macchina. Dopo la compilazione, il programma applicativo (applicazione) è un modulo indipendente.

dialetti SQL

I moderni DBMS relazionali utilizzano i dialetti SQL per descrivere e manipolare i dati. Un sottoinsieme del linguaggio SQL che consente di creare e descrivere un database è chiamato DDL (Data Definition Language).

Inizialmente, SQL era chiamato SEQUEL (Structured English Query Language), quindi SEQUEL / 2 e quindi semplicemente SQL. Oggi SQL è lo standard de facto per i sistemi di gestione di database relazionali.

Il primo standard linguistico è apparso nel 1989 - SQL-89 ed è stato supportato da quasi tutti i DBMS relazionali commerciali. Era di carattere generale ed era aperto a un'ampia interpretazione. I vantaggi di SQL-89 includono la standardizzazione della sintassi e della semantica degli operatori per il recupero e la manipolazione dei dati, nonché la fissazione di strumenti per limitare l'integrità del database. Tuttavia, mancava una sezione così importante come la manipolazione dello schema del database. L'incompletezza dello standard SQL-89 ha portato alla comparsa nel 1992. la prossima versione del linguaggio SQL.

SQL2 (o SQL-92) copre quasi tutti i problemi necessari: manipolazione dello schema del database, gestione di transazioni e sessioni, supporto di architetture client-server o strumenti di sviluppo di applicazioni.

Un ulteriore passo nello sviluppo del linguaggio è la versione di SQL 3. Questa versione del linguaggio è integrata con un meccanismo di trigger, la definizione di un tipo di dati arbitrario e un'estensione dell'oggetto.

Attualmente, ci sono tre livelli della lingua: principiante, intermedio e completo. Molti fornitori dei loro DBMS utilizzano le proprie implementazioni SQL basate almeno al livello base dello standard ANSI corrispondente e contenenti alcune estensioni specifiche per DBMS. Tavolo 4.9 mostra esempi di dialetti SQL.

Tabella 4.9 Dialetti SQL

DBMS Lingua di interrogazione
Sistema R DBMS SQL
Db2 SQL
Accesso SQL
SYBASE SQL ovunque Watcom-SQL
SYBASE SQL Server Transact_SQL
Il mio SQL SQL
Oracolo PL / SQL

I database orientati agli oggetti utilizzano l'Object Query Language (OQL). Il linguaggio OQL si basava sul comando SQL2 SELECT e aggiungeva la possibilità di indirizzare una query a un oggetto oa una raccolta di oggetti, nonché la capacità di chiamare metodi all'interno di una singola query.

La compatibilità di molti dei dialetti SQL in uso determina la compatibilità del DBMS. Ad esempio, SYBASE SQL Anywhere è il più compatibile possibile con SYBASE SQL Server. Uno dei lati di questa compatibilità è il supporto di SYBASE SQL Anywhere per un tale dialetto del linguaggio SQL come Transact-SQL... Questo dialetto è utilizzato in SYBASE SQL Server e può essere utilizzato in SYBASE SQL Anywhere insieme al proprio dialetto SQL - Watcom-SQL.

Domande di controllo

1. Come si classifica un DBMS?

2. Quali modelli di database esistono?

3. Quali sono gli elementi principali dei modelli infologici?

4. Quali tipi di relazioni esistono tra le entità?

5. Cosa sono i diagrammi ER e a cosa servono?

6. Cosa permette di fare la procedura di normalizzazione delle tabelle?

7. Quali sono i linguaggi e gli strumenti software del DBMS?

8. Di che tipo è il DBMS di MS Access?

9. Quali sono gli oggetti principali del DBMS MS Access?

10. A cosa servono le istruzioni SQL di base?

Principali articoli correlati