Come configurare smartphone e PC. Portale informativo

Cos'è SQL. Funzionalità del linguaggio SQL

07/02/07 11,6K

Introduzione alla gestione dei database relazionali

sql è spesso chiamato il linguaggio esperanto per i sistemi di gestione di database (DBMS). In effetti, non esiste nessun altro linguaggio al mondo per lavorare con i database che sarebbe così ampiamente utilizzato nei programmi. Il primo standard sol è apparso nel 1986 e ora ha ottenuto il riconoscimento universale. Può essere utilizzato anche quando si lavora con DBMS non relazionali. A differenza di altri strumenti software, come i linguaggi C e Cobol, che sono prerogativa dei programmatori professionisti, SQL viene utilizzato da specialisti di diversi settori. Programmatori, amministratori DBMS, analisti aziendali: tutti elaborano con successo i dati utilizzando SQL. La conoscenza di questo linguaggio è utile per tutti coloro che hanno a che fare con il database.

In questo articolo esamineremo i concetti di base di SQL. Raccontiamo la sua storia passata (e sfatiamo alcuni miti lungo il percorso). Acquisirai familiarità con il modello relazionale e potrai acquisire le prime competenze nell'utilizzo di SQL, che ti aiuteranno a padroneggiare ulteriormente il linguaggio.

È difficile imparare SQL? Dipende da quanto in profondità andrai. Per diventare un professionista devi studiare molto. Il linguaggio SQL è nato nel 1974 come oggetto di un breve documento di ricerca di 23 pagine e da allora ha fatto molta strada. Il testo dell'attuale standard - il documento ufficiale "the international standard database Language sql" (comunemente chiamato sql-92) - contiene oltre seicento pagine, ma non dice nulla sulle caratteristiche specifiche delle versioni di sol implementate nei DBMS da Microsoft, Oracle, Sybase ecc. Il linguaggio è così sviluppato e diversificato che solo elencarne le capacità richiederebbe diversi articoli di giornale e se raccogli tutto ciò che è stato scritto sull'argomento sol, otterrai una libreria a più volumi.

Tuttavia, per l'utente medio non è affatto necessario conoscere completamente SQL. Proprio come un turista che si trova in un paese dove si parla una lingua incomprensibile ha solo bisogno di imparare alcune espressioni comuni e regole grammaticali, così in SQL, conoscendo un po', si possono ottenere molti risultati utili. In questo articolo esamineremo i comandi SQL di base, le regole per impostare i criteri per la selezione dei dati e mostreremo come ottenere risultati. Di conseguenza, sarai in grado di creare tabelle tu stesso e inserire informazioni al loro interno, creare query e lavorare con i report. Questa conoscenza può diventare la base per un ulteriore sviluppo indipendente di SQL.

Cos'è SQL?

sql è un linguaggio specializzato non procedurale che consente di descrivere dati, recuperare ed elaborare informazioni da DBMS relazionali. La specializzazione significa che sol è destinato solo a lavorare con il database; Non è possibile creare un sistema applicativo completo utilizzando solo questo linguaggio: ciò richiederà l'uso di altri linguaggi in cui è possibile incorporare comandi SQL. Pertanto, SQL è anche chiamato uno strumento linguistico ausiliario per l'elaborazione dei dati. Una lingua ausiliaria viene utilizzata solo insieme ad altre lingue.

Un linguaggio applicativo generico di solito dispone di funzionalità per la creazione di procedure, ma SQL no. Con il suo aiuto, non puoi specificare come dovrebbe essere eseguita una determinata attività, ma puoi solo determinare di cosa si tratta esattamente. In altre parole, quando si lavora con sql, a noi interessano i risultati, non le procedure per ottenerli.

La proprietà più significativa di SQL è la capacità di accedere ai database relazionali. Molti credono addirittura che le espressioni “database elaborato tramite SQL” e “database relazionale” siano sinonimi. Tuttavia, vedrai presto che c'è una differenza tra loro. Lo standard sql-92 non ha nemmeno il termine relazione.

Cos'è un DBMS relazionale?

Senza entrare nei dettagli, un DBMS relazionale è un sistema basato su un modello di gestione dei dati relazionale.

Il concetto di modello relazionale fu proposto per la prima volta nel lavoro del Dr. E. F. Codd, pubblicato nel 1970. Descriveva un apparato matematico per strutturare e manipolare i dati e proponeva anche un modello astratto per rappresentare qualsiasi informazione del mondo reale. In precedenza, quando si utilizzava un database, era necessario tenere conto delle caratteristiche specifiche della memorizzazione delle informazioni al suo interno. Se la struttura interna del database cambiava (ad esempio per migliorare le prestazioni), era necessario rielaborare i programmi applicativi, anche se a livello logico non si verificavano modifiche. Il modello relazionale ha permesso di separare le caratteristiche private dell'archiviazione dei dati dal livello del programma applicativo. Il modello, infatti, non descrive in alcun modo il modo in cui le informazioni vengono archiviate e accessibili. Ciò che viene preso in considerazione è il modo in cui queste informazioni vengono percepite dall'utente. Grazie all’emergere del modello relazionale, l’approccio alla gestione dei dati è cambiato qualitativamente: da arte si è trasformato in una scienza, che ha portato allo sviluppo rivoluzionario del settore.

Concetti base del modello relazionale

Secondo il modello relazionale, una relazione è una tabella con dati. Una relazione può avere uno o più attributi (caratteristiche) corrispondenti alle colonne di questa tabella, e alcuni insiemi (possibilmente vuoti) di dati, che sono insiemi di questi attributi (sono chiamati tuple n-arie, o record) e corrispondenti a le righe della tabella.

Per ogni tupla, i valori degli attributi devono appartenere ai cosiddetti domini. In effetti, un dominio è un determinato insieme di dati che definisce l'insieme di tutti i valori validi.

Diamo un'occhiata a un esempio. Lascia che ci sia un dominio Giorni della settimana contenente valori dal lunedì alla domenica. Se una relazione ha un attributo WeekDay corrispondente a questo dominio, allora qualsiasi tupla nella relazione deve avere uno dei valori elencati nella colonna WeekDay. I valori Gennaio o Gatto non possono apparire.

Nota: l'attributo deve avere uno dei valori validi. È vietato specificare più valori contemporaneamente. Pertanto, oltre al requisito che i valori degli attributi appartengano a un determinato dominio, deve essere soddisfatta la condizione della sua atomicità. Ciò significa che questi significati non possono essere scomposti, cioè non possono essere scomposti in parti più piccole senza perdere il significato sottostante. Ad esempio, se il valore dell'attributo contenesse contemporaneamente lunedì e martedì, allora si potrebbero distinguere due parti, preservando il significato originale: giorno della settimana; pertanto, questo valore di attributo non è atomico. Tuttavia, se provi a suddividere il significato di "lunedì" in parti, otterrai una serie di singole lettere, dalla "P" alla "K"; il significato originale è perduto, quindi il significato di "lunedì" è atomico.

Le relazioni hanno anche altre proprietà. La più significativa di queste è la proprietà matematica delle operazioni chiuse. Ciò significa che come risultato dell'esecuzione di qualsiasi operazione su una relazione, deve apparire una nuova relazione. Questa proprietà consente di ottenere risultati prevedibili durante l'esecuzione di operazioni matematiche sulle relazioni. Inoltre diventa possibile rappresentare le operazioni sotto forma di espressioni astratte con diversi livelli di annidamento.

Nel suo lavoro originale, il Dr. Codd definì un insieme di otto operatori chiamati algebra relazionale. Quattro operatori - unione, moltiplicazione logica, differenza e prodotto cartesiano - furono ripresi dalla tradizionale teoria degli insiemi; i restanti operatori sono stati creati appositamente per gestire le relazioni. Il lavoro successivo del Dr. Codd, Chris Date e altri ricercatori ha proposto ulteriori operatori. Più avanti in questo articolo esamineremo tre operatori relazionali: progetto, selezione o limitazione e unione.

SQL e modello relazionale

Ora che hai familiarità con il modello relazionale, dimentichiamolo. Naturalmente, non per sempre, ma solo per spiegare quanto segue: sebbene sia stato il modello relazionale proposto dal Dr. Codd ad essere utilizzato nello sviluppo di sql, non esiste una corrispondenza completa o letterale tra i due (questo è uno dei motivi perché lo standard sql-92 non contiene il termine attitudine). Ad esempio, i concetti di tabella SQL e relazione non sono equivalenti, perché le tabelle possono avere più righe identiche contemporaneamente, mentre tuple identiche non possono apparire nelle relazioni. Inoltre, SQL non prevede l'uso di domini relazionali, anche se i tipi di dati svolgono in una certa misura un ruolo (alcuni influenti sostenitori del modello relazionale stanno ora tentando di spingere per l'inclusione dei domini relazionali nel futuro standard SQL).

Purtroppo l’incoerenza tra sql e il modello relazionale ha dato origine negli anni a molti malintesi e controversie. Ma poiché l'argomento principale dell'articolo è lo studio di SQL e non del modello relazionale, questi problemi non verranno discussi qui. Ricorda solo che esistono differenze tra i termini utilizzati in SQL e il modello relazionale. Più avanti nell'articolo verranno utilizzati solo i termini accettati in SQL. Invece di relazioni, attributi e tuple, useremo i loro analoghi SQL: tabelle, colonne e righe.

SQL statico e dinamico

Potresti già avere familiarità con termini come sql statico e dinamico. Una query SQL è statica se viene compilata e ottimizzata in una fase precedente all'esecuzione del programma. Abbiamo già menzionato una forma di SQL statico quando abbiamo parlato dell'incorporamento di comandi SQL nei programmi C o Cobol (esiste un altro nome per tali espressioni: SQL incorporato). Come probabilmente intuirai, una query SQL dinamica viene compilata e ottimizzata durante l'esecuzione del programma. Di norma, gli utenti ordinari utilizzano SQL dinamico, che consente loro di creare query in base alle loro esigenze immediate. Una delle opzioni per l'utilizzo delle query SQL dinamiche è la loro chiamata interattiva o diretta (esiste anche un termine speciale: directsql), quando le query inviate per l'elaborazione vengono inserite in modo interattivo dal terminale. Esistono alcune differenze tra SQL statico e dinamico nella sintassi dei costrutti utilizzati e nelle funzionalità di esecuzione, ma questi problemi esulano dall'ambito dell'articolo. Notiamo solo che per chiarezza di comprensione, gli esempi vengono forniti sotto forma di query SQL dirette, poiché ciò consente non solo ai programmatori, ma anche alla maggior parte degli utenti finali, di imparare come utilizzare SQL.

Come imparare SQL

Ora sei pronto per scrivere le tue prime query SQL. Se hai accesso al database tramite SQL e desideri utilizzare i nostri esempi nella pratica, considera quanto segue: devi accedere come utente con diritti illimitati e avrai bisogno di strumenti software per l'elaborazione interattiva delle query SQL (se siamo parlando di un database di rete, dovresti parlare con l'amministratore del database per garantirti i diritti appropriati). Se non hai accesso al database tramite sql, non preoccuparti: tutti gli esempi sono molto semplici e puoi capirli “a secco”, senza andare alla macchina.

Per eseguire qualsiasi azione in SQL, è necessario eseguire un'espressione nel linguaggio SQL. Esistono diversi tipi di espressioni, ma tra queste si possono distinguere tre gruppi principali: comandi ddl (linguaggio di definizione dei dati), comandi dml (linguaggio di manipolazione dei dati) e strumenti di controllo dei dati. Quindi, in un certo senso, sql combina tre linguaggi diversi.

Comandi del linguaggio di descrizione dei dati

Iniziamo con uno dei principali comandi ddl: crea tabella. Esistono diversi tipi di tabelle in SQL, le principali sono di due tipi: base (base) e selettive (visualizzazioni). Le tabelle di base sono quelle relative ai dati della vita reale; selettive sono tabelle “virtuali” create sulla base delle informazioni ottenute dalle tabelle di base; ma agli utenti i moduli sembrano normali tabelle. Il comando crea tabella è progettato per creare tabelle di base.

Nel comando crea tabella, è necessario specificare il nome della tabella, specificare l'elenco delle colonne e i tipi di dati in esse contenuti. Possono essere presenti come parametri anche altri elementi opzionali, ma prima esaminiamo solo i parametri base. Mostriamo la forma sintattica più semplice per questo comando:

crea tableTableName(ColumnDataType) ;

create e table sono parole chiave SQL; TableName, Column e DataType sono parametri formali, invece dei quali l'utente inserisce ogni volta valori effettivi. I parametri Column e DataType sono racchiusi tra parentesi. In SQL, le parentesi vengono comunemente utilizzate per raggruppare singoli elementi. In questo caso, consentono di combinare le definizioni per una colonna. Il punto e virgola finale è un separatore di comandi. Deve terminare qualsiasi espressione nel linguaggio SQL.

Diamo un'occhiata a un esempio. Supponiamo che sia necessario creare una tabella per archiviare i dati su tutti gli appuntamenti. Per fare ciò, inserisci il comando in sql:

creare appuntamenti da tavolo (appuntamento_data data) ;

Dopo aver eseguito questo comando, verrà creata una tabella denominata appuntamenti, dove è presente una colonna, appuntamento_data, in cui è possibile scrivere dati di tipo data. Poiché non sono stati ancora inseriti dati, il numero di righe nella tabella è zero (il comando crea tabella definisce solo la tabella; i valori effettivi vengono immessi con il comando insert, di cui parleremo più avanti).

I parametri appuntamenti e appuntamento_data sono chiamati identificatori perché specificano nomi per oggetti di database specifici, in questo caso nomi rispettivamente per una tabella e una colonna. Esistono due tipi di identificatori in SQL: regolari e delimitati. Gli identificatori evidenziati sono racchiusi tra virgolette doppie e fanno distinzione tra maiuscole e minuscole. Gli identificatori regolari non sono distinti da caratteri limitati e la loro scrittura non fa distinzione tra maiuscole e minuscole. Questo articolo utilizza solo identificatori regolari.

I caratteri utilizzati per costruire gli identificatori devono soddisfare determinate regole. Gli identificatori regolari possono utilizzare solo lettere (non necessariamente latine, ma anche altri alfabeti), numeri e il carattere di sottolineatura. L'identificatore non deve contenere segni di punteggiatura, spazi o caratteri speciali (#, @, % o!); inoltre non può iniziare con un numero o un carattere di sottolineatura. È possibile utilizzare parole chiave SQL separate per gli identificatori, ma ciò non è consigliato. Un identificatore ha lo scopo di designare un oggetto, quindi deve avere un nome univoco (all'interno di un determinato contesto): non è possibile creare una tabella con un nome che è già presente nel database; Non è possibile avere colonne con gli stessi nomi nella stessa tabella. A proposito, tieni presente che appuntamenti e appuntamenti sono gli stessi nomi per sql. Cambiare solo il caso delle lettere non può creare un nuovo identificatore.

Sebbene una tabella possa avere solo una colonna, in pratica sono solitamente necessarie tabelle con più colonne. Il comando per creare una tabella di questo tipo in generale è simile al seguente:

crea tableTableName(ColumnDataType[ ( , ColumnDataType )]) ;

Le parentesi quadre vengono utilizzate per denotare elementi opzionali, le parentesi graffe contengono elementi che possono rappresentare un elenco di costrutti a percorso singolo (quando si immette un vero comando SQL, né l'una né le altre parentesi vengono inserite). Questa sintassi consente di specificare un numero qualsiasi di colonne. Si noti che il secondo elemento è preceduto da una virgola. Se nell'elenco sono presenti più parametri, questi vengono separati tra loro da virgole.

creare la tabella appuntamenti2 (appuntamento_data data, appuntamento_ora ora, descrizione varchar (256));

Questo comando crea la tabella appuntamenti2 (la nuova tabella dovrà avere un nome diverso, poiché la tabella appuntamenti è già presente nel database). Come la prima tabella, ha una colonna appuntamento_data per registrare le date degli appuntamenti; Inoltre, è apparsa una colonna appuntamento_ora per registrare l'orario di questi incontri. Il parametro descrizione è una stringa di testo che può contenere fino a 256 caratteri. Questo parametro è specificato come varchar (abbreviazione di carattere variabile) perché non si sa in anticipo quanto spazio sarà richiesto per l'immissione, ma è chiaro che la descrizione non occuperà più di 256 caratteri. Quando si descrive un parametro del tipo stringa di caratteri (e alcuni altri tipi), viene indicata la lunghezza del parametro. Il suo valore è specificato tra parentesi a destra del nome del tipo.

Potresti aver notato che nei due esempi discussi, la voce del comando è formattata in modo diverso. Se nel primo caso il comando viene posizionato completamente su una riga, nel secondo dopo la prima parentesi aperta l'immissione continua su una nuova riga e la definizione di ogni colonna successiva inizia su una nuova riga. Non ci sono requisiti speciali per la formattazione dei record in SQL. Suddividere un record in righe ne facilita la lettura. Quando si scrivono comandi, il linguaggio SQL consente non solo di suddividere il comando in righe, ma anche di inserire rientri all'inizio delle righe e spazi tra gli elementi del record.

Ora che conosci le regole di base, diamo un'occhiata a un esempio più complesso di creazione di una tabella con più colonne. All'inizio dell'articolo è stata mostrata la tabella dei dipendenti. Contiene le seguenti colonne: cognome, nome, data di assunzione, dipartimento, categoria e stipendio dell'anno. Il seguente comando sql viene utilizzato per definire questa tabella:

creare tabella dipendenti (carattere cognome (13) non nullo, carattere nome (10) non nullo, data data_assunzione, carattere filiale_ufficio (15), livello_grado smallint, salario decimale (9, 2));

La squadra incontra diversi nuovi elementi. Innanzitutto c'è l'espressione non nulla alla fine della definizione delle colonne last_name e first_name. Con l'aiuto di tali strutture vengono stabiliti i requisiti che devono essere rispettati. In questo caso si indica che i campi cognome e nome devono essere compilati al momento dell'inserimento; Non puoi lasciare queste colonne vuote (questo è abbastanza logico: come puoi identificare un dipendente senza conoscere il suo nome?).

Inoltre, l'esempio contiene tre nuovi tipi di dati: carattere, piccoloint e decimale. Finora non abbiamo parlato molto dei tipi. Sebbene SQL non disponga di domini relazionali, dispone di un insieme di tipi di dati di base. Queste informazioni vengono utilizzate durante l'allocazione della memoria e il confronto dei valori; in una certa misura restringe l'elenco dei possibili valori di input, ma il controllo del tipo in SQL è meno rigido rispetto ad altri linguaggi.

Tutti i tipi di dati disponibili in SQL possono essere suddivisi in sei gruppi: stringhe di caratteri, valori numerici esatti, valori numerici approssimativi, stringhe di bit, data e ora e intervalli. Abbiamo elencato tutte le varietà, ma questo articolo ne discuterà in dettaglio solo alcune (le stringhe di bit, ad esempio, non sono di particolare interesse per gli utenti ordinari).

A proposito, se pensavi che la data e l'ora fossero un errore di battitura, ti sbagliavi. Questo gruppo (datetime) include la maggior parte dei tipi di dati relativi al tempo utilizzati in SQL (parametri come gli intervalli di tempo sono separati in un gruppo separato). Nell'esempio precedente abbiamo già incontrato due tipi di dati del gruppo data-ora: data e ora.

Il prossimo tipo di dati con cui hai già familiarità è la variazione dei caratteri (o semplicemente varchar); appartiene al gruppo delle stringhe di caratteri. Se varchar viene utilizzato per memorizzare stringhe di lunghezza variabile, il tipo char riscontrato nel terzo esempio è destinato a memorizzare stringhe con un numero fisso di caratteri. Ad esempio, la colonna last_name conterrà stringhe di 13 caratteri, indipendentemente dai cognomi effettivamente inseriti, siano essi poe o penworth-chickering (nel caso di poe, i restanti 10 caratteri verranno riempiti con spazi).

Dal punto di vista dell'utente, varchar e char hanno lo stesso significato. Perché è stato necessario introdurre due tipologie? Il fatto è che in pratica di solito devi cercare un compromesso tra prestazioni e risparmio di spazio su disco. Di norma, l'utilizzo di stringhe con lunghezza fissa offre alcuni vantaggi in termini di velocità di accesso, ma se la lunghezza della stringa è troppo lunga, lo spazio su disco viene sprecato. Se in appuntamenti2 riservate 256 caratteri per ogni riga di commento, ciò potrebbe rivelarsi irrazionale; molto spesso le linee saranno significativamente più brevi. D'altra parte, anche i cognomi variano in lunghezza, ma generalmente richiedono circa 13 caratteri; in questo caso le perdite saranno minime. Una buona regola pratica è: se sai che la lunghezza della stringa varia poco o è relativamente piccola, allora usa char; in altri casi - varchar.

I successivi due nuovi tipi di dati, smallint e decimal, appartengono al gruppo dei valori numerici esatti. smallint è l'abbreviazione di piccolo intero. SQL fornisce anche un tipo di dati intero. La presenza di due tipologie simili in questo caso è spiegata da considerazioni di risparmio di spazio. Nel nostro esempio i valori del parametro grade_level possono essere rappresentati utilizzando un numero a due cifre, quindi viene utilizzato il tipo smallint; nella pratica però non sempre si sa quali valori massimi possano avere i parametri. Se non sono presenti tali informazioni, utilizzare il numero intero. La quantità effettiva di spazio allocato per la memorizzazione dei parametri smallint e integer e il corrispondente intervallo di valori per questi parametri sono specifici per ciascuna piattaforma.

Il tipo di dati decimale, comunemente utilizzato per la contabilità finanziaria, consente di specificare un modello con il numero desiderato di cifre decimali. Poiché questo tipo viene utilizzato per una notazione numerica precisa, garantisce precisione durante l'esecuzione di operazioni matematiche su dati decimali. Se si utilizzano tipi di dati dal gruppo di notazione numerica approssimativa per valori decimali, ad esempio float (numero in virgola mobile), ciò comporterà errori di arrotondamento, quindi questa opzione non è adatta per i calcoli finanziari. Per definire i parametri di tipo decimale viene utilizzata la seguente notazione:

dove p è il numero di cifre decimali, d è il numero di cifre decimali. Invece di p, scrivi il numero totale di cifre significative nei valori utilizzati e invece di d, scrivi il numero di cifre decimali.

La barra laterale "Creazione di una tabella" mostra un riepilogo completo del comando crea tabella. Contiene nuovi elementi e mostra il formato per tutti i tipi di dati considerati (in linea di principio esistono altri tipi di dati, ma non li consideriamo ancora).

Inizialmente potrebbe sembrare che la sintassi dei comandi SQL sia troppo complicata. Ma puoi capirlo facilmente se studi attentamente gli esempi sopra. Sul diagramma è apparso un ulteriore elemento: una linea verticale; serve a distinguere tra design alternativi. In altre parole, quando si definisce ciascuna colonna, è necessario selezionare il tipo di dati appropriato (come ricorderete, i parametri opzionali sono racchiusi tra parentesi quadre e i costrutti che possono essere ripetuti più volte sono racchiusi tra parentesi graffe; questi caratteri speciali non vengono scritti nei comandi SQL reali). La prima parte del diagramma mostra i nomi completi dei tipi di dati, la seconda contiene i nomi abbreviati; in pratica, è possibile utilizzarne uno qualsiasi.

La prima parte dell'articolo è completata. La seconda sarà dedicata allo studio dei comandi DML inserisci, seleziona, aggiorna e cancella. Verranno inoltre trattate le condizioni di campionamento dei dati, gli operatori di confronto e gli operatori logici, l'uso di valori nulli e la logica ternaria.

Creazione di una tabella. La sintassi del comando crea tabella è la seguente: i parametri opzionali sono indicati tra parentesi quadre e le strutture ripetute sono indicate tra parentesi graffe.

crea tabella tabella (colonna carattere (lunghezza) [ vincolo ] | carattere variabile (lunghezza) [ vincolo ] | data [ vincolo ] | ora [ vincolo ] | intero [ vincolo ] | smallint [ vincolo ] | decimale (precisione, cifre decimali) [ vincolo ] | float (precisione) [ vincolo ] [( , colonna char (lunghezza) [ vincolo ] | varchar (lunghezza) [ vincolo ] | data [ vincolo ] | time [ vincolo ] | int [ vincolo ] | smallint [ vincolo ] | dec (precisione, cifre decimali) [vincolo] | float (precisione) [vincolo] )]) ​​​​​;

Il segreto del nome SQL

All'inizio degli anni '70. IBM ha iniziato ad implementare il modello di database relazionale proposto dal Dr. Codd. Donald Chamberlin e un gruppo di altri dell'Advanced Research Unit hanno creato un linguaggio prototipo chiamato linguaggio di query inglese strutturato, o semplicemente seguito. Successivamente venne ampliato e perfezionato. La nuova versione proposta da IBM si chiamava sequel/2. È stato utilizzato come interfaccia di programmazione (api) per la progettazione del primo sistema di database relazionale di IBM, system/r. Per ragioni legate a sfumature legali, IBM ha deciso di cambiare nome: al posto di sequel/2, utilizzare sql (structured query Language). Questa abbreviazione è spesso pronunciata "see-ku-el".

Esistono differenze significative tra i primi prototipi sequel e lo standard SQL ora riconosciuto in varie organizzazioni. Jim Melton, che ha preparato lo standard sql-92, ha addirittura affermato che molte persone si sbagliano nel pensare che la parola "strutturato" rifletta correttamente le specificità di questo linguaggio (jim melton e alan r. simon "capire il nuovo sql: una guida completa .” San Francisco: Morgan Kaufmann, 1993. isbn: 1-55860-245-3). Pertanto, in realtà, sql è solo un nome, una sequenza di lettere s-q-l e niente di più.

Buono cattivo

In questo capitolo...

  • Cos'è SQL
  • Idee sbagliate SQL
  • Uno sguardo ai diversi standard SQL
  • Introduzione ai comandi SQL standard e alle parole riservate
  • Rappresentazione di numeri, simboli, date, ore e altri tipi di dati
  • Valori e restrizioni indefiniti
  • Utilizzo di SQL in un sistema client/server
  • SQL sul web

SQLè un linguaggio flessibile che può essere utilizzato in vari 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 differisce da altri tipi di linguaggi informatici. Successivamente acquisirai familiarità con i comandi e i tipi di dati supportati da SQL standard. Inoltre, spiegherò concetti di base come valori indefiniti E restrizioni. Infine, verrà fornita una panoramica del modo in cui SQL si inserisce nell'ambiente client/server, nonché in Internet e nelle intranet delle organizzazioni.

Cos'è SQL e cosa non è

La prima cosa da capire su SQL è che non è un file 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 dopo l'altra fino al completamento dell'attività. La procedura può essere una sequenza lineare o contenere ramificazioni, ma in entrambi i casi il programmatore specifica l'ordine di esecuzione.

In altre parole, SQL lo è non procedurale lingua. Per usarlo per risolvere un problema, dì a SQL, Che cosa esattamente ne hai bisogno come se stessi parlando con il genio della lampada di Aladino. E allo stesso tempo non c'è bisogno di dire: Come procurarti quello che vuoi. 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, con milioni di programmatori in giro (e potresti essere uno di loro) abituati a risolvere i problemi in modo procedurale, negli ultimi anni c'è stata molta pressione per aggiungere alcune funzionalità procedurali a SQL. Ecco perché la nuova versione della specifica SQL, SQL:2003, ora include funzionalità del linguaggio procedurale come blocchi BEGIN, istruzioni IF condizionali, funzioni e procedure. Con questi nuovi strumenti i programmi possono essere archiviati su un server in modo che possano essere riutilizzati da molti utenti.

Per illustrare cosa intendevo quando ho detto "dia al sistema esattamente ciò di cui hai bisogno", supponiamo che tu abbia una tabella EMPLOYEE con i dati dei dipendenti e desideri selezionare da essa tutte le righe che corrispondono a tutti i dipendenti "senior". Si può definire lavoratore "anziano" chiunque abbia più di 40 anni o chi guadagni più di 60.000 dollari all'anno. La selezione necessaria 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 il valore della colonna AGE (età) è maggiore di 40 o il valore della colonna SALARY (stipendio) è maggiore di 60000. SQL stesso sa come selezionare le informazioni. Il motore del database controlla il database e decide autonomamente come eseguire la query. Tutto quello che devi fare è indicare quali dati ti servono.

Ricordare:
Una query è una domanda posta al database. Se uno qualsiasi dei suoi dati corrisponde alle condizioni della tua richiesta, SQL te lo passa
.

Le moderne implementazioni SQL mancano di molti dei semplici costrutti di programmazione fondamentali per la maggior parte degli altri linguaggi. Le applicazioni quotidiane in genere richiedono almeno alcuni di questi costrutti, quindi in realtà SQL lo è sottolinguaggio dati. Anche con le aggiunte apportate a SQL con lo standard SQL:1999 e le estensioni aggiuntive aggiunte in SQL:2003, è comunque necessario utilizzare uno dei linguaggi di programmazione, come C, con SQL per creare un'applicazione completa.

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

  • Utilizzando una query una tantum non programmabile 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 svolge il lavoro della tastiera e dello schermo presenti nei PC moderni. Le query della console sono utili quando è necessaria una risposta rapida a una richiesta specifica. Per soddisfare alcune esigenze attuali, potresti aver bisogno di dati dal database che non sono mai stati richiesti prima. Potresti non averne mai più bisogno, ma ne hai bisogno adesso. Inserisci la query SQL appropriata dalla tastiera e dopo un po' il risultato apparirà sullo schermo.
  • Utilizzando un programma che recupera informazioni da un database e quindi crea un report basato su questi dati, visualizzato sullo schermo o stampato. SQL può essere utilizzato anche in questo modo. Una query SQL complessa che potrebbe essere utile in futuro può essere inserita direttamente nel programma. Ciò ti consentirà di riutilizzarlo in futuro. Pertanto, la formulazione della query viene eseguita una volta. Il capitolo 15 spiega come inserire codice SQL in programmi scritti in un altro linguaggio.
banche dati che potrebbero funzionare su numerosi sistemi informatici di vario tipo. Infatti, con il suo aiuto, gli utenti possono manipolare i dati indipendentemente dal fatto che stiano lavorando su un personal computer, su una workstation di rete o su un mainframe.

Uno dei linguaggi emersi in seguito allo sviluppo del modello dati relazionale è il linguaggio SQL (Structured Query Language), che oggi è diventato molto diffuso ed è diventato addirittura lingua standard database relazionali. Standard SQL è stato rilasciato dall'American National Standards Institute (ANSI) nel 1986 ed è stato adottato a livello internazionale dall'International Standards Organization (ISO) nel 1987. L'attuale standard SQL è noto come SQL/92.

L'uso di qualsiasi standard è associato non solo a numerosi e abbastanza ovvi vantaggi, ma anche ad alcuni svantaggi. Innanzitutto le norme indirizzano lo sviluppo del settore interessato in una certa direzione; Nel caso del linguaggio SQL, avere forti principi di base porta in definitiva all'interoperabilità tra le sue varie implementazioni e contribuisce sia ad una maggiore portabilità del software e dei database in generale, sia alla versatilità degli amministratori di database. D'altro canto, gli standard limitano la flessibilità e la funzionalità di una particolare implementazione. Sotto implementazione del linguaggio SQL si riferisce al prodotto software SQL del rispettivo produttore. Per espandere la funzionalità, molti sviluppatori che aderiscono agli standard accettati aggiungono lingua standard SQL varie estensioni. Va notato che gli standard richiedono che siano completati implementazioni del linguaggio SQL ha determinate caratteristiche e riflette ampiamente le principali tendenze che non solo portano alla compatibilità tra tutte le implementazioni concorrenti, ma aiutano anche ad aumentare il valore dei programmatori e degli utenti SQL database relazionali nel moderno mercato del software.

Tutto specifico implementazioni del linguaggio sono un po' diversi tra loro. È nell'interesse dei produttori garantire che le loro implementazioni soddisfino gli attuali standard ANSI per la portabilità e l'esperienza dell'utente. Tuttavia, ciascuna implementazione di SQL contiene miglioramenti per soddisfare i requisiti di un particolare server di database. Questi miglioramenti o estensioni al linguaggio SQL sono comandi e opzioni aggiuntivi che costituiscono aggiunte al pacchetto standard e sono disponibili in quella particolare implementazione.

Attualmente, il linguaggio SQL è supportato da molte decine di DBMS di vario tipo, sviluppati per un'ampia varietà di piattaforme informatiche, dai personal computer ai mainframe.

Tutti i linguaggi di manipolazione dei dati creati per molti DBMS prima dell'avvento di database relazionali, erano focalizzati su operazioni con dati presentati sotto forma di record di file logici. Naturalmente, ciò richiedeva che l'utente avesse una conoscenza dettagliata dell'organizzazione di archiviazione dei dati e un serio sforzo per specificare quali dati fossero necessari, dove si trovassero e come ottenerli.

Il linguaggio SQL in esame si concentra su operazioni con dati presentati sotto forma di insiemi di tabelle relazionali logicamente interconnesse. La caratteristica più importante delle sue strutture è l'attenzione al risultato finale dell'elaborazione dei dati e non alla procedura di tale elaborazione. Il linguaggio SQL stesso determina dove si trovano i dati, gli indici e anche quale sequenza di operazioni più efficiente dovrebbe essere utilizzata per ottenere il risultato, quindi non è necessario specificare questi dettagli nella query del database.

Introduzione alla tecnologia client-server

In connessione con l'espansione del mercato dei servizi di informazione, i produttori di software hanno iniziato a produrre sistemi software sempre più intelligenti, e quindi voluminosi. Molte organizzazioni e singoli utenti spesso non riescono a posizionare i prodotti acquistati sui propri computer. Per lo scambio di informazioni e la sua distribuzione, furono create reti di computer e iniziarono ad essere installati programmi e dati generalizzati su file server speciali.

Grazie ai DBMS che lavorano con file server, molti utenti hanno accesso agli stessi database. Lo sviluppo di vari sistemi automatizzati per la gestione delle organizzazioni è semplificato. Tuttavia, con questo approccio, tutta l'elaborazione delle richieste dai programmi o dai terminali dei computer degli utenti viene eseguita su di essi, pertanto, per implementare anche una semplice richiesta, è necessario leggere o scrivere interi file dal file server, e questo porta a conflitti situazioni e sovraccarico della rete. Per eliminare queste carenze, è stato proposto tecnologia client-server, ma allo stesso tempo era necessario un linguaggio comune per comunicare con il server: la scelta è caduta su SQL.

Tecnologia client-server indica un modo di interazione dei componenti software in cui formano un unico sistema. Come suggerisce il nome stesso, esiste un determinato processo client che richiede determinate risorse processo del server, che fornisce queste risorse. Non è necessario che si trovino sullo stesso computer. Di solito è consuetudine posizionare il server su un nodo della rete locale e i client su altri nodi.

In un contesto di database, il client controlla l'interfaccia utente e la logica dell'applicazione, agendo come una workstation che esegue le applicazioni di database. Il client accetta una richiesta dell'utente, controlla la sintassi e genera una query di database in SQL o in un altro linguaggio di database appropriato alla logica dell'applicazione. Quindi invia un messaggio al server, attende una risposta e formatta i dati ricevuti per presentarli all'utente. Il server riceve ed elabora le richieste al database, quindi invia i risultati al client. Questo trattamento include la verifica delle credenziali del cliente, la garanzia dei requisiti di integrità, l'adempimento della richiesta e l'aggiornamento dei dati. Inoltre, sono supportati il ​​controllo e il ripristino della concorrenza.

L'architettura client-server presenta numerosi vantaggi.

Ogni comando SQL inizia con una parola chiave, un verbo che descrive l'azione eseguita dal comando, come CREATE. Una squadra può avere una o più frasi. La frase descrive i dati con cui sta lavorando il comando o contiene informazioni chiarificatrici sull'azione che il comando sta eseguendo. Ogni clausola inizia con una parola chiave, ad esempio WHERE. Alcune clausole nel comando sono obbligatorie, altre no. Alcune frasi possono contenere parole chiave ed espressioni aggiuntive. Molte frasi includono nomi di tabelle o campi. I nomi devono contenere da 1 a 18 caratteri, iniziare con una lettera e non contenere spazi o caratteri di punteggiatura speciali. Le parole chiave non possono essere utilizzate come nomi.

52. SQL (Structured Query Language) - Linguaggio di query strutturatoè un linguaggio di query standard per lavorare con database relazionali.

SQL non contiene istruzioni tradizionali che controllano l'esecuzione dei programmi, contiene solo una serie di istruzioni standard per l'accesso ai dati archiviati in un database.

SQL può essere utilizzato per accedere a un database in due modalità: lavoro interattivo e dentro programmi applicativi.

Con l'aiuto di SQL, l'utente può ottenere in modo interattivo e rapido risposte a qualsiasi query, anche piuttosto complessa, mentre per implementare queste query in un'altra lingua sarebbe necessario sviluppare un programma corrispondente. I programmi applicativi scritti in determinati linguaggi di programmazione utilizzano SQL come integrato lingua per accedere al database.

Caratterizzando il linguaggio SQL nel suo insieme, possiamo evidenziare le seguenti caratteristiche:

struttura di alto livello che ricorda la lingua inglese;

· indipendenza da specifici DBMS;

· disponibilità di standard in via di sviluppo;

· la capacità di eseguire query interattive per recuperare dati e modificarne la struttura;

· fornitura di accesso software a banche dati;

· supporto architettura client/server;

· estensibilità e supporto per tecnologie orientate agli oggetti;



· capacità di accedere ai dati su Internet.

Principali funzioni del linguaggio SQL:

SQL – linguaggio di interrogazione interattivo. Gli utenti inseriscono i comandi SQL in modo interattivo per recuperare i dati e visualizzarli sullo schermo e per apportare modifiche al database;

SQL – linguaggio di programmazione di database. Per accedere al database vengono inseriti comandi SQL nei programmi applicativi;

SQL – linguaggio di amministrazione del database. Un amministratore di database può utilizzare SQL per definire la struttura del database e controllare l'accesso ai dati;

SQL – linguaggio dell'applicazione client/server. Nei programmi applicativi, SQL viene utilizzato come mezzo per organizzare la comunicazione su una rete locale con un server di database, che memorizza dati condivisi, ecc.

55. Capacità linguistiche Il linguaggio SQL, che è conforme agli standard più recenti SQL:2003, SQL:1999, è un linguaggio molto ricco e complesso, le cui funzionalità sono difficili da comprendere immediatamente, tanto meno da comprendere. Pertanto, dobbiamo suddividere il linguaggio in livelli. In una delle classificazioni previste dallo standard SQL, questo linguaggio è suddiviso in livelli “base” (entry), “intermediate” (intermedio) e “full”. Il livello base contiene una quarantina di comandi, raggruppabili in categorie in base alla loro funzionalità.

CREATE TABLE Dettagli (NOMZ INT, NOME COMPLETO CHAR(15), ANNO INT, SESSO CHAR(3))

TAVOLO DROP Dettagli

Dettagli ALTER TABLE (SAMPLE CHAR(10))

CREATE VIEW Progresso accademico M1 AS SELECT *FROM Rendimento accademico WHERE GRUPPO= "M-1"

INSERIRE IN INFORMAZIONI VALORI (980101, "IVANOV I. I.", 1980, "MARITO")

ELIMINA DA Dettagli DOVE NOMZ=980201

AGGIORNAMENTO Informazioni SET Nome completo = "KRAVTSOVA I. I." DOVE NOMZ=980201

SELEZIONA * DA Informazioni WHERE NOME COMPLETO="SIDOROV S. S." O NOME COMPLETO="PETROV P. P."

54. Tipi di dati ed espressioni Per accedere a una tabella relazionale in SQL, è necessario scrivere (specificare) un comando. SELEZIONA (seleziona)parola chiave indica al DBMS quale azione eseguirà questo comando. I comandi di query iniziano con una parola chiave. Oltre a SELECT, queste possono essere parole CREARE- creare, INSERIRE-inserire, ELIMINARE- eliminare, COMMETTERE– completo, ecc.

DA - una parola chiave come SELECT che appare in ogni comando. È seguito da uno spazio e poi dal nome delle tabelle utilizzate come fonti di informazione. I nomi delle tabelle e dei campi devono contenere da 1 a 18 caratteri, iniziare con una lettera e non contenere spazi o caratteri speciali.

DOVE una parola chiave seguita da un predicato: una condizione imposta su una voce della tabella che deve soddisfare per essere inclusa nella selezione.

ORDINATO DA - ordinamento dei record visualizzati (Asc – ascendente, Desc – discendente. Se il tipo di ordinamento non è specificato, l'ordinamento avviene in ordine crescente).

CHAR(lunghezza) CARATTERE(lunghezza)Stringhe di caratteri a lunghezza costante

INTERO INTNumeri interi

PICCOLOINTIntero piccolo

NUMERIC(precisione, grado) DECIMAL(precisione, grado DEC(precisione, grado)Numero di punto fisso

GALLEGGIANTE (precisione)Numero in virgola mobile

Doppia precisionenumeri con blocco mobile, alta precisione

Espressioni in SQL vengono utilizzati per specificare criteri per la selezione di dati o l'esecuzione di operazioni su valori letti da un database. Le espressioni sono una sequenza specifica di campi del database, costanti, funzioni collegate da operatori.

Costanti sono usati per indicare valori di dati specifici. Costanti di punto fisso, ad esempio: 21 -375.18 62.3

Costanti in virgola mobile, ad esempio: 1.5E7 -3.14E9 2.5E-6 0.783E24

Costanti di stringa deve essere racchiuso tra virgolette singole. Esempi di tali costanti: “Minsk” “New York” “Ivanov I. I.”

Valore mancante(NULLO). SQL supporta la gestione dei dati mancanti utilizzando il concetto di valore mancante.

La maggior parte dei DBMS orientati a SQL supportano i cosiddetti funzioni aggregate (totali).. Le funzioni aggregate comunemente utilizzate includono quanto segue:

· CONTARE– numero di valori nella colonna della tabella;

· SOMMA– la somma dei valori presenti nella colonna;

· AVG– media aritmetica dei valori in colonna;

· MASSIMO– valore massimo nella colonna;

· MINIMO– valore minimo nella colonna.

Si possono utilizzare le seguenti espressioni: tipologie di operatori:

· aritmetica: + (aggiunta), - (sottrazione), * (moltiplicazione), / (divisione);

· relazione: = (uguale), > (maggiore),< (меньше), >= (maggiore o uguale a),<= (меньше или равно), <>(non uguale);

· rompicapo: E(logico "AND"), O("OR" logico), NON(negazione logica);

56. Comandi di controllo delle transazioni consentono di garantire l'integrità del database.

Transazione SQL sono diversi comandi SQL sequenziali che devono essere eseguiti come una singola unità.

Nel linguaggio SQL, l'elaborazione delle transazioni viene implementata utilizzando due comandi: COMMETTERE E ROLLBACK. Gestiscono le modifiche apportate da un gruppo di team. Squadra COMMETTERE segnala il buon esito della transazione. Informa il DBMS che la transazione è stata completata, che tutti i suoi comandi sono stati completati con successo e che non si sono verificate incoerenze nel database. Squadra ROLLBACK segnala il mancato completamento della transazione. Informa il DBMS che l'utente non desidera completare la transazione e il DBMS dovrebbe eliminare qualsiasi modifica apportata al database come risultato della transazione. In questo caso, il DBMS riporta il database allo stato in cui si trovava prima dell'esecuzione della transazione.

Squadre COMMETTERE E ROLLBACK vengono utilizzati principalmente in modalità programma, sebbene possano essere utilizzati anche in modo interattivo.

57. Per accedere ai comandi di controllo Si tratta di comandi per eseguire funzioni amministrative che assegnano o revocano il diritto (privilegio) di utilizzare le tabelle del database in un determinato modo. Ogni utente del database dispone di determinati diritti in relazione agli oggetti del database.

Diritti– queste sono le azioni con un oggetto che l'utente può eseguire. I diritti possono cambiare nel tempo: quelli vecchi possono essere cancellati, se ne possono aggiungere di nuovi. Sono previsti i seguenti diritti:

· INSERT – il diritto di aggiungere dati alla tabella;

· AGGIORNAMENTO – diritto di modificare i dati della tabella;

· DELETE – diritto di cancellare i dati dalla tabella;

· RIFERIMENTI – il diritto di definire la chiave primaria.

58 Incorporare la lingua nei programmi applicativi..Da incasso Si tratta di comandi progettati per implementare l'accesso a un database da programmi applicativi scritti in uno specifico linguaggio di programmazione.

Linguaggio di query strutturato o SQLè un linguaggio di programmazione dichiarativo da utilizzare in database quasi relazionali. Molte delle funzionalità originali di SQL sono state prese dal calcolo delle tuple, ma le recenti estensioni di 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, l'ANSI afferma che la pronuncia ufficiale di SQL è "es q el". Tuttavia, molti specialisti di database hanno utilizzato la pronuncia "slang" "Sequel", che riflette il nome originale della lingua, Sequel, che è stato successivamente modificato a causa di un conflitto di marchio e nome con IBM. Programmazione per principianti.
Linguaggio di programmazione SQLè stato rivisto nel 1992 e questa versione è conosciuta come SQL-92. 1999 è stato poi rivisto nuovamente per diventare SQL:1999 (AKA SQL3). Programmazione per manichini. SQL 1999 supporta oggetti che in precedenza non erano supportati in altre versioni, ma alla fine del 2001 solo pochi sistemi di gestione di database supportavano le implementazioni SQL: SQL 1999.
SQL, sebbene definito come ANSI e ISO, ha molte varianti ed estensioni, la maggior parte delle quali hanno caratteristiche proprie, come l'implementazione "PL/SQL" di Oracle Corporation o l'implementazione di Sybase e Microsoft chiamata "Transact-SQL", che può creare confusione. coloro che hanno familiarità con le basi della programmazione. Inoltre, non è raro che le implementazioni commerciali omettano il supporto per le caratteristiche principali dello standard, tipi di dati come data e ora, preferendo alcune delle proprie varianti. Di conseguenza, a differenza di ANSI C o ANSI Fortran che di solito possono essere trasferiti da una piattaforma all'altra senza grandi modifiche strutturali, le query del linguaggio di programmazione SQL raramente possono essere trasferite tra diversi sistemi di database senza modifiche significative. La maggior parte delle persone nel settore dei database ritiene che questa mancanza di compatibilità sia intenzionale, al fine di fornire a ogni sviluppatore il proprio sistema di gestione del database e legare l'acquirente a un database specifico.
Come suggerisce il nome, il linguaggio di programmazione SQL è progettato per scopi specifici e limitati: interrogare i dati contenuti in un database relazionale. In quanto tale, si tratta di un insieme di istruzioni del linguaggio di programmazione per la creazione di campioni di dati, piuttosto che di un linguaggio procedurale come C o BASIC, progettati per risolvere una gamma molto più ampia di problemi. Le estensioni del linguaggio come "PL/SQL" sono progettate per risolvere questa limitazione aggiungendo elementi procedurali a SQL mantenendo i vantaggi di SQL. Un altro approccio consiste nell'incorporare comandi del linguaggio di programmazione procedurale nelle query SQL e interagire con il database. Ad esempio, Oracle e altri supportano Java nel database, mentre PostgreSQL consente di scrivere funzioni in Perl, Tcl o C.
Una battuta su SQL: "SQL non è né strutturato né un linguaggio". Il punto della battuta è che SQL non è un linguaggio di Turing. .

Selezionare * da T
C1 C2
1 UN
2 B
C1 C2
1 UN
2 B
Selezionare C1 da T
C1
1
2
C1 C2
1 UN
2 B
Selezionare * da T dove C1=1
C1 C2
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 della 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 e aggiungere, aggiornare ed eliminare dati.

  • SELECT è uno dei comandi DML più comunemente utilizzati e consente all'utente di specificare una query come descrizione impostata del risultato desiderato. La query non specifica come dovrebbero essere organizzati i risultati: tradurre la query in una forma che può essere eseguita nel database è compito del sistema di database, più specificamente del query optimization.
  • INSERT viene utilizzato per aggiungere righe (insieme formale) a una tabella esistente.
  • UPDATE viene utilizzato per modificare i valori dei dati in una riga di tabella esistente.
  • DELETE specifica le righe esistenti che verranno eliminate dalla tabella.

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

  • BEGIN WORK (o START TRANSACTION, a seconda del dialetto SQL) può essere utilizzato per contrassegnare l'inizio di una transazione del database che verrà completata tutta o non verrà eseguita affatto.
  • COMMIT afferma che tutte le modifiche ai dati apportate dopo l'esecuzione delle operazioni vengono salvate.
  • ROLLBACK specifica che tutte le modifiche ai dati dopo l'ultimo commit o rollback devono essere distrutte, fino al punto in cui è stato registrato nel database come “rollback”.

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

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 i relativi elementi associati. La maggior parte dei database SQL commerciali dispone delle proprie estensioni DDL che consentono il controllo su elementi non standard, ma solitamente vitali, di un particolare sistema.
I punti principali del DDL sono i comandi di creazione ed eliminazione.

  • CREATE specifica gli oggetti (come le tabelle) che verranno creati nel database.
  • DROP specifica quali oggetti esistenti nel database verranno eliminati, solitamente in modo permanente.
  • Alcuni sistemi di database supportano anche il comando ALTER, che consente all'utente di modificare un oggetto esistente in vari modi, 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
  • REVOKE: 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 dello sviluppo di siti web e iniziare a guadagnare? Videocorsi economici con un'introduzione introduttiva.

I migliori articoli sull'argomento