Come configurare smartphone e PC. Portale informativo

linguaggio SQL. Scopo del linguaggio SQL

Programmi client

Protocollo TFTP

TFTP- anche il protocollo FTP, ma sopra il protocollo UDP (ovvero un protocollo senza consegna garantita). Può essere utilizzato su una rete locale dove la velocità di trasmissione è più importante. In pratica viene utilizzato raramente.

FTP- il programma viene avviato dalla riga di comando.

Comandante di Windows- può funzionare come client FTP. Ti consente di lavorare con le directory remote allo stesso modo di quelle locali.

NetVampire- Un client FTP specializzato che ti consente di scaricare file di grandi dimensioni e di scaricarli attraverso canali dannosi.

SQL (Structured Query Language) è un linguaggio di query strutturato per database relazionali. In questo linguaggio è possibile formulare espressioni (query) che recuperano i dati richiesti, li modificano, creano tabelle e ne modificano la struttura, determinano i diritti di accesso ai dati e molto altro ancora.

Le query vengono eseguite da un sistema di gestione del database (DBMS). Se non sei uno specialista nello sviluppo e nell'amministrazione di database, potresti essere un utente di database che visualizza e/o modifica i dati nelle tabelle esistenti. In molti casi, queste e altre operazioni sul database vengono eseguite utilizzando applicazioni speciali che forniscono all'utente un'interfaccia conveniente. In genere, le applicazioni sono scritte in linguaggi di programmazione speciali (C, Pascal, Visual Basic, ecc.) e vengono spesso create utilizzando ambienti di sviluppo integrati, ad esempio Delphi, C++ Builder, ecc. Tuttavia, l'accesso al database può essere ottenuto senza di loro, utilizzando solo SQL. Va inoltre notato che le applicazioni specializzate utilizzano solitamente frammenti di codice SQL quando accedono al database.

Pertanto, SQL è un linguaggio standard ampiamente utilizzato per lavorare con database relazionali. La sintassi di questo linguaggio è abbastanza semplice da poter essere utilizzata dagli utenti ordinari, non solo dai programmatori. Al giorno d'oggi, l'utente medio di computer dovrebbe essere almeno esperto in un elaboratore di testi (come Microsoft Word) e in un programma di fogli di calcolo (come Microsoft Excel). Va bene se sa anche come usare i database. Esistono molti DBMS diversi, ma esiste un solo strumento universale per lavorare con i database: SQL. La conoscenza di SQL, almeno le sue basi, e la capacità di usarlo per cercare e analizzare dati è una parte fondamentale dell'alfabetizzazione informatica, anche per gli utenti comuni.

I primi sviluppi di sistemi di gestione di database relazionali (DBMS relazionali) furono realizzati presso IBM all'inizio degli anni '70. Allo stesso tempo, è stato creato un linguaggio dei dati per funzionare in questi sistemi. La versione sperimentale di questo linguaggio si chiamava SEQUEL - dall'inglese. Structured English QUEry Language (linguaggio di query inglese strutturato). Tuttavia, la versione ufficiale era chiamata più breve: SQL (Structured Query Language). Più precisamente, SQL è un sottolinguaggio dei dati, poiché il DBMS contiene altri strumenti linguistici.

Nel 1981, IBM ha rilasciato il DBMS relazionale SQL/DS. A questo punto, Relation Software Inc. (oggi è Oracle Corporation) ha già rilasciato il suo DBMS relazionale. Questi prodotti sono diventati immediatamente lo standard per i sistemi di gestione dei database. Questi prodotti includevano anche SQL, che divenne lo standard de facto per i sottolinguaggi dei dati. I produttori di altri DBMS hanno rilasciato le proprie versioni di SQL. Includevano molto più delle semplici funzionalità principali dei prodotti IBM. Per ottenere qualche vantaggio per i “loro” DBMS, i produttori hanno introdotto alcune estensioni SQL. Allo stesso tempo, sono iniziati i lavori per creare uno standard SQL generalmente riconosciuto.

Nel 1986, l'American National Standards Institute (ANSI) pubblicò lo standard ufficiale SQL-86, che fu aggiornato nel 1989 e ribattezzato SQL-89. Nel 1992, questo standard fu denominato SQL-92 (ISO/IEC 9075:1992). L'ultima versione dello standard SQL è SQL:2003 (ISO/IEC 9075X:2003).

Qualsiasi implementazione di SQL in un DBMS specifico è leggermente diversa dallo standard a cui il produttore dichiara di essere conforme. Pertanto, molti DBMS (ad esempio Microsoft Access 2003, PostgreSQL 7.3) non supportano completamente SQL-92, ma solo con un certo livello di conformità. Inoltre, supportano anche elementi non inclusi nello standard. Tuttavia, gli sviluppatori di DBMS si impegnano a garantire che le nuove versioni dei loro prodotti siano il più fedelmente possibile conformi allo standard SQL.

Attenzione. Questo tutorial descrive gli elementi SQL2003, non tutti supportati dai DBMS esistenti. Prima di metterli in pratica, dovresti assicurarti che funzionino nel tuo DBMS. Puoi scoprirlo dalla documentazione tecnica. La maggior parte degli elementi descritti corrispondono alle versioni precedenti di SQL, in particolare all'SQL-92 ampiamente utilizzato.

SQL è stato concepito come un semplice linguaggio di interrogazione per un database relazionale, vicino al linguaggio naturale (più precisamente all'inglese). Si sperava che la vicinanza della forma al linguaggio naturale avrebbe reso SQL uno strumento che potesse essere ampiamente utilizzato dagli utenti comuni di database, non solo dai programmatori. Inizialmente, SQL non conteneva nessuna delle strutture di controllo presenti nei linguaggi di programmazione convenzionali. Le richieste, la cui sintassi è abbastanza semplice, venivano inserite direttamente dalla console in sequenza una dopo l'altra ed eseguite nella stessa sequenza. Tuttavia, SQL non è mai diventato uno strumento per impiegati di banca, venditori di biglietti aerei e ferroviari, economisti e altri dipendenti di varie aziende che utilizzano informazioni archiviate nei database. Per loro, il semplice SQL si è rivelato troppo complesso e scomodo, nonostante la sua vicinanza al linguaggio naturale delle domande.

In pratica, un database viene solitamente gestito tramite applicazioni scritte da programmatori in linguaggi procedurali, ad esempio C, Visual Basic, Pascal, Java, ecc. Le applicazioni vengono spesso create in speciali ambienti di sviluppo visuale, come Delphi, Microsoft Access, Visual dBase, ecc. ecc. Allo stesso tempo, lo sviluppatore dell'applicazione praticamente non deve scrivere codici di programma, poiché il sistema di sviluppo lo fa per lui. In ogni caso, il lavoro con il codice del programma risulta essere minimo. Queste applicazioni hanno un'interfaccia grafica user-friendly che non obbliga l'utente a inserire direttamente query in SQL. L'applicazione invece fa questo. Tuttavia, l'applicazione può utilizzare o meno SQL per accedere al database. SQL non è l'unico, sebbene sia un mezzo molto efficace per recuperare, aggiungere e modificare i dati e, se è possibile utilizzarlo in un'applicazione, allora dovrebbe essere fatto.

I database relazionali possono ed esistono indipendentemente dalle applicazioni che forniscono l'interfaccia utente. Se per qualche motivo non esiste tale interfaccia, è possibile accedere al database tramite SQL, utilizzando la console o qualche applicazione con la quale è possibile connettersi al database, inserire e inviare una query SQL (ad esempio Borland SQL Explorer ).

Il linguaggio SQL è considerato un linguaggio dichiarativo (descrittivo), a differenza dei linguaggi in cui vengono scritti i programmi. Ciò significa che le espressioni SQL descrivono cosa deve essere fatto, non come.

Ad esempio, per selezionare informazioni sui nomi e sulle posizioni dei dipendenti del dipartimento 102 dalla tabella dei dipendenti, è sufficiente eseguire la seguente query:

SELECT Cognome, Posizione FROM Dipendenti WHERE Dipartimento=102;

In russo questa espressione suona così:

SCEGLIERE Cognome, posizione DA Dipendenti PURCHÉ Dipartimento = 102;

Per modificare il valore " Ivanov " SU " Petrov "colonna Cognome , basta eseguire la seguente query:

UPDATE Dipendenti SET Cognome = "Petrov" WHERE Cognome = "Ivanov";

In russo questa espressione assomiglia a questa:

AGGIORNAMENTO Dipendenti INSTALLATO Cognome UGUALI" Petrov " DOVE Cognome = "Ivanov" ;

Non è necessario descrivere nel dettaglio le azioni che il DBMS deve eseguire per selezionare dalla tabella i dati specificati nella query. Descrivi semplicemente ciò che desideri ricevere. Come risultato dell'esecuzione della query, il DBMS restituisce una tabella contenente i dati richiesti. Se nel database non sono presenti dati che corrispondono alla query, verrà restituita una tabella vuota.

Tuttavia, le versioni recenti di SQL supportano istruzioni di controllo computazionale native dei linguaggi di controllo procedurale (istruzioni di ramo e ciclo condizionali). Pertanto, SQL ora non è un linguaggio puramente dichiarativo.

Oltre a recuperare, aggiungere, modificare ed eliminare dati dalle tabelle, SQL consente di eseguire tutte le azioni necessarie per creare, modificare e proteggere i database. Tutte queste funzionalità sono distribuite tra tre componenti SQL:

· DML (Linguaggio di manipolazione dei dati - linguaggio di manipolazione dei dati ) è destinato a supportare il database: selezione ( SELEZIONARE ), aggiunte ( INSERIRE ), i cambiamenti ( AGGIORNAMENTO ) e la cancellazione ( ELIMINARE ) dati dalle tabelle. Questi operatori (comandi) possono contenere espressioni, comprese quelle calcolate, nonché sottoquery, ovvero query contenute all'interno di un'altra query. In generale, un'espressione di query può essere così complessa da non poter dire immediatamente cosa fa. Tuttavia, una query complessa può essere suddivisa mentalmente in parti più facili da analizzare. Allo stesso modo, le query complesse vengono create da espressioni relativamente facili da comprendere (sottoquery).

· DDL (Linguaggio di definizione dei dati - linguaggio di definizione dei dati ) è progettato per creare, modificare ed eliminare tabelle e l'intero database. Esempi di dichiarazioni incluse nel DDL sono CREA TABELLA (crea tabella)," CREA VISTA (crea vista), CREA SHEMA (creare un diagramma), ALTERARE LA TABELLA (cambia tabella), GOCCIOLARE (cancellare), ecc.

· DCL (Linguaggio di controllo dei dati - linguaggio di gestione dei dati ) è progettato per proteggere il database da vari tipi di danni. Il DBMS fornisce automaticamente una certa protezione dei dati. Tuttavia, in alcuni casi dovrebbero essere prese in considerazione le misure aggiuntive previste dalla DCL.

Traduzione: Alexandr Pyramidin

Questo articolo presenta la struttura del linguaggio SQL, nonché alcuni concetti generali come i tipi di campi dati che possono contenere e alcune ambiguità esistenti in SQL. Non è necessario ricordare ogni dettaglio menzionato in questo articolo. Questa è solo una breve panoramica; vengono forniti molti dettagli in modo che tu possa farvi riferimento in seguito quando imparerai la lingua.

Come funziona SQL?

SQL è un linguaggio progettato specificamente per i database relazionali (RDB). Fa gran parte del lavoro che dovresti fare se utilizzassi un linguaggio di programmazione generico come C. Per formare un RDB in C, dovresti iniziare da zero. Dovresti definire un oggetto chiamato tabella che potrebbe crescere fino ad avere un numero qualsiasi di righe, quindi creare procedure incrementali per inserire e recuperare valori.

Se desideri trovare alcune stringhe specifiche, dovresti seguire una procedura passo passo come la seguente:

  • Considera una riga di tabella.
  • Controlla se questa stringa è una delle stringhe che ti servono.
  • In tal caso, salvalo da qualche parte finché non viene controllata l'intera tabella.
  • Controlla se ci sono altre righe nella tabella.
  • Se presenti, tornare al passaggio 1.
  • Se non ci sono più righe, stampa tutti i valori memorizzati nel passo 3.

(Naturalmente, questo non è l'effettivo insieme di comandi C, ma solo la logica dei passaggi che verrebbero inclusi in un programma reale.) SQL farà tutto questo per te. I comandi in SQL possono operare su tutti i gruppi di tabelle come una singola entità e possono elaborare qualsiasi quantità di informazioni estratte o derivate da esse come una singola unità.

Cosa fa l'ANSI?

Come abbiamo detto nell'Introduzione, lo standard SQL è definito utilizzando il codice ANSI (American National Standards Institute). SQL non è stato inventato dall'ANSI. Questa è essenzialmente un'invenzione IBM. Ma altre aziende si sono lanciate subito su SQL. Almeno un'azienda (Oracle) ha ottenuto il diritto di commercializzare i prodotti SQL di IBM.

Dopo la comparsa sul mercato di numerosi programmi SQL concorrenti, l'ANSI ha definito lo standard al quale dovevano essere conformi. (La definizione di tali standard è la funzione dell’ANSI.) Tuttavia, dopo ciò sono comparsi alcuni problemi. Sono nati come risultato della standardizzazione ANSI, sotto forma di alcune restrizioni. Poiché ANSI non sempre definisce ciò che è più utile, i programmi cercano di conformarsi allo standard ANSI senza permettergli di limitarli troppo. Ciò, a sua volta, porta a incoerenze casuali. I programmi di database in genere aggiungono funzionalità aggiuntive a ANSI SQL e spesso allentano molte delle restrizioni. Pertanto verranno prese in considerazione anche le varianti ANSI comuni. Anche se ovviamente non possiamo coprire ogni eccezione o variazione, le buone idee tendono ad essere adottate e utilizzate in una varietà di programmi, anche quando non sono definite dallo standard ANSI. ANSI è un tipo di standard minimo e puoi fare più di quanto consentito, anche se devi seguire le sue linee guida quando esegui le attività specificate.

SQL interattivo e annidato

Esistono due SQL: interattivo e nidificato. Nella maggior parte dei casi, entrambe le forme funzionano allo stesso modo, ma vengono utilizzate in modo diverso. L'SQL interattivo viene utilizzato per essere eseguito direttamente nel database per produrre output utilizzabile dal cliente. In questo SQL: quando inserisci un comando, verrà eseguito immediatamente e potrai vedere immediatamente l'output (se presente).

L'SQL annidato è costituito da comandi SQL inseriti all'interno di programmi che solitamente sono scritti in un altro linguaggio (come COBOL o PASCAL). Ciò rende tali programmi più potenti ed efficaci.

Tuttavia, l'utilizzo di questi linguaggi comporta una struttura SQL e uno stile di gestione dei dati che richiedono alcune estensioni SQL interattive. Il passaggio dei comandi SQL nell'SQL annidato viene "spacciato" per variabili o parametri utilizzati dal programma in cui sono stati annidati.

In questo libro presenteremo SQL in modo interattivo. Questo ci darà la possibilità di discutere i comandi e le loro azioni senza preoccuparci di come sono interfacciati con altri linguaggi. L'SQL interattivo è il formato più utile ai non programmatori. Tutto ciò che impari sull'SQL interattivo generalmente si applica a un modulo nidificato. Le modifiche richieste per utilizzare un modulo nidificato verranno trattate nell'ultimo capitolo di questo libro.

Sottosezioni SQL

Sia la forma interattiva che quella annidata di SQL hanno numerose parti o sottosezioni. Poiché probabilmente incontrerai questa terminologia leggendo SQL, forniremo alcuni chiarimenti. Sfortunatamente, questi termini non sono utilizzati universalmente in tutte le implementazioni. Sono specificati dall'ANSI e sono utili a livello concettuale, ma la maggior parte dei programmi SQL fa poco per gestirli separatamente, quindi diventano essenzialmente categorie funzionali di comandi SQL.

  • DDL (Data Definition Language), chiamato Schema Description Language in ANSI, è costituito da comandi che creano oggetti (tabelle, indici, visualizzazioni e così via) in un database.
  • DML (Data Manipulation Language) è un insieme di comandi che determinano quali valori sono rappresentati nelle tabelle in un dato momento.
  • DCD (Data Control Language) è costituito da strumenti che determinano se consentire o meno a un utente di eseguire determinate azioni. Fanno parte dell'ANSI DDL.

Non dimenticare questi nomi. Non si tratta di linguaggi diversi, ma di sezioni di comandi SQL raggruppate in base alle loro funzioni.

Vari tipi di dati

Non tutti i tipi di valori che si possono trovare nei campi della tabella sono logicamente uguali. La differenza più evidente è tra numeri e testo. Non è possibile mettere i numeri in ordine alfabetico o sottrarre un nome da un altro.

Poiché i sistemi DDB si basano su relazioni tra informazioni, i diversi tipi di dati devono essere differenziati gli uni dagli altri in modo che possano essere effettuati processi e confronti appropriati tra di essi. In SQL, ciò avviene assegnando a ciascun campo un tipo di dati che indica il tipo di valore che il campo può contenere. Tutti i valori in questo campo devono essere dello stesso tipo. Nella tabella Clienti, ad esempio, cname e city contengono righe di testo da valutare e snum e cnum sono numeri. Per questo motivo, non è possibile immettere un valore Massimo o Nessuno nel campo valutazione, che è un tipo di dati numerico. Questo vincolo è utile perché impone una certa struttura ai dati. Confronterai spesso alcuni o tutti i valori in un determinato campo, quindi potresti voler eseguire un'azione solo su determinate righe anziché su tutte. Non potresti farlo se i valori dei campi fossero di un tipo di dati misto.

Sfortunatamente, la definizione di questi tipi di dati è un'area importante in cui la maggior parte dei programmi di database commerciali e lo standard SQL ufficiale non sempre concordano. Lo standard ANSI SQL riconosce solo testo e numeri, mentre la maggior parte dei programmi commerciali utilizza altri tipi speciali. Come DATA e TIME sono, infatti, tipi quasi standard (anche se il loro formato esatto varia). Alcuni pacchetti supportano anche tipi come MONEY e BINARY. (IL DENARO è uno speciale sistema di "valuta" utilizzato dai computer.)

Tutte le informazioni in un computer vengono trasmesse in numeri binari e quindi convertite in altri sistemi in modo che possiamo usarle e comprenderle facilmente.

ANSI definisce diversi tipi numerici, le differenze tra i quali sono piuttosto sottili e talvolta confuse. I tipi di dati ANSI consentiti sono elencati nell'Appendice B. La complessità dei tipi numerici ANSI può essere attribuita, almeno in parte, allo sforzo di rendere SQL annidato compatibile con un certo numero di altri linguaggi. I due tipi di numeri ANSI, INTEGER e DECIMAL (che possono essere abbreviati rispettivamente in INT e DEC), saranno adeguati per i nostri scopi, nonché per la maggior parte delle applicazioni aziendali pratiche. Naturalmente il tipo INTEGER può essere rappresentato come un NUMERO DECIMALE, che non contiene alcuna cifra a destra della virgola decimale.

Il tipo di testo è CHAR (o CHAR), che si riferisce a una stringa di testo. Un campo CHAR ha una lunghezza determinata dal numero massimo di caratteri che possono essere immessi nel campo. La maggior parte delle implementazioni hanno anche un tipo non standard chiamato VARCHAR, che è una stringa di testo e può avere qualsiasi lunghezza fino a un massimo definito dall'implementazione (solitamente 254 caratteri). I valori CHARACTER e VARCHAR sono inclusi tra virgolette singole come "testo". La differenza tra CHAR e VARCHAR è che CHAR deve riservare memoria sufficiente per la lunghezza massima della stringa, mentre VARCHAR alloca memoria secondo necessità.

I tipi di carattere sono costituiti da tutti i caratteri stampabili, inclusi i numeri. Tuttavia, il numero 1 non è la stessa cosa del simbolo "1". Il carattere "1" è solo una parte di testo stampata, non definita dal sistema come valore numerico 1. Ad esempio, 1 + 1 = 2, ma "1" + "1" non è uguale a "2". I valori dei caratteri vengono memorizzati nel computer come valori binari, ma vengono visualizzati all'utente come testo stampato.

La conversione viene eseguita in un formato determinato dal sistema che stai utilizzando. Questo formato di conversione sarà uno dei due tipi standard (possibilmente con estensioni) utilizzati nei sistemi informatici: codice ASCII (utilizzato in tutti i computer personali e di piccole dimensioni) e codice EBCDIC (Extended Binary Decimal Information Interchange Code) (utilizzato nei computer di grandi dimensioni). Alcune operazioni, come l'ordine in ordine alfabetico dei valori dei campi, cambieranno con il formato.

Dobbiamo seguire il mercato, non ANSI, nell'uso del tipo DATE. (Su un sistema che non riconosce il tipo DATE, puoi ovviamente dichiarare la data come un carattere o un campo numerico, ma ciò renderà la maggior parte delle operazioni più laboriose.)

Dovresti rivedere la documentazione del pacchetto software che utilizzerai per scoprire esattamente quali tipi di dati supporta.

SQL. Incoerenze.

Dalla discussione precedente puoi capire che esistono discrepanze separate tra i prodotti del mondo SQL. SQL è emerso dal mondo dei database commerciali come strumento ed è stato successivamente sviluppato in uno standard ANSI. Sfortunatamente, ANSI non determina sempre cosa è più utile, quindi i programmi cercano di conformarsi allo standard ANSI senza lasciarsi limitare troppo. L'ANSI è una sorta di standard minimo: puoi fare più di quanto consentito, ma devi essere in grado di ottenere gli stessi risultati quando svolgi la stessa attività.

CHE COS'È UN "UTENTE"?

SQL in genere risiede su sistemi di computer che hanno più di un utente e quindi deve distinguerli tra loro (la tua famiglia di PC può avere un numero qualsiasi di utenti, ma di solito non ha un modo per differenziare un utente da un altro).

Tipicamente, in un sistema di questo tipo, ogni utente ha una sorta di codice di verifica dei diritti che lo identifica (la terminologia varia). All'inizio di una sessione con un computer, l'utente effettua il login (si registra), comunicando al computer chi è l'utente identificandosi tramite uno specifico ID. Qualsiasi numero di persone che utilizzano un ID di accesso sono utenti individuali; e analogamente, una persona può rappresentare un gran numero di utenti (in momenti diversi) utilizzando ID di accesso SQL diversi. Nella maggior parte degli ambienti SQL le azioni vengono mappate su un identificatore di accesso specifico che corrisponde esattamente a un utente specifico. Una tabella o un altro oggetto è di proprietà di un utente che ne ha il pieno controllo. L'utente può avere o meno il privilegio di eseguire un'azione sull'oggetto. Per i nostri scopi, concorderemo che ogni utente abbia i privilegi necessari per eseguire qualsiasi azione finché non torneremo specificamente alla discussione dei privilegi nel Capitolo 22. Il valore speciale USER può essere utilizzato come argomento in un comando. Indica l'ID disponibile dell'utente che ha emesso il comando.

Convenzioni e terminologia

Le parole chiave sono parole che hanno un significato speciale in SQL. Possono essere comandi, ma non testo o nomi di oggetti. Evidenzieremo le parole chiave digitandole IN LETTERE MAIUSCOLE. Devi stare attento a non confondere le parole chiave con i termini.

SQL ha alcuni termini speciali che vengono utilizzati per descriverlo. Tra questi ci sono parole come "query", "clausola" e "predicato", che sono le più importanti nella descrizione e nella comprensione del linguaggio, ma non significano nulla di indipendente per SQL.

I comandi o le istruzioni sono istruzioni tramite le quali si accede a un database SQL.

I comandi sono costituiti da una o più parti logiche separate chiamate clausole.

Le frasi iniziano con una parola chiave e sono costituite da parole chiave e argomenti. Ad esempio, le clausole che potresti incontrare sono "FROM Salespeope" e "WHERE city = "London"". Gli argomenti completano o modificano il significato di una frase. Negli esempi precedenti, Venditori è l'argomento e FROM è la parola chiave della clausola FROM. Allo stesso modo, "città = "Londra"" è un argomento della clausola WHERE.

Gli oggetti sono strutture di database a cui vengono assegnati nomi e archiviati in memoria. Ciò include tabelle di base, viste e indici.

Per mostrarti come si formano le squadre, lo faremo con degli esempi. Esiste, tuttavia, un metodo più formale per descrivere i comandi che utilizza convenzioni standardizzate. Lo useremo nei capitoli successivi per comodità per comprendere queste convenzioni nel caso le incontraste in altri documenti SQL.

Le parentesi quadre () indicheranno le parti che non possono essere utilizzate, mentre i puntini di sospensione (...) indicano che tutto ciò che le precede può essere ripetuto un numero qualsiasi di volte. Le parole tra parentesi angolari () sono termini speciali che spiegano cosa sono. Abbiamo notevolmente semplificato la terminologia SQL standard senza renderla difficile da comprendere.

Riepilogo

Abbiamo trattato brevemente le nozioni di base in questo capitolo. Ma la nostra intenzione era quella di coprire rapidamente le basi di SQL in modo da poter coprire l'intero ambito delle informazioni.

Ora conosci alcune cose su SQL: qual è la sua struttura, come viene utilizzato, come rappresenta i dati e come viene definito (e alcune incoerenze che ne derivano), alcune convenzioni e termini usati per descriverli. Tutto questo è troppe informazioni per un capitolo; Non ci aspettiamo che tu ricordi tutti questi dettagli, ma puoi farvi riferimento in seguito, se necessario.

LINGUAGGIO SQL: MANIPOLAZIONE DEI DATI

IN QUESTA LEZIONE...

· Lo scopo dello Structure Query Language (SQL) e il suo ruolo speciale quando si lavora con i database.

· Storia della nascita e dello sviluppo del linguaggio SQL.

· Scrivere istruzioni SQL.

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

· costruzione di istruzioni SQL caratterizzate dalle seguenti caratteristiche:

· utilizzare il costrutto WHERE per selezionare righe che soddisfano diverse condizioni;

· ordinamento dei risultati delle query utilizzando il costrutto ORDER BY;

· utilizzo di funzioni di aggregazione SQL;

· raggruppare i dati selezionati utilizzando il costrutto GROUP BY;

· utilizzo di subquery;

· utilizzando le unioni di tabelle;

· applicazione di operazioni con insiemi (UNIONE, INTERSETTO, TRANNE).

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

Uno dei linguaggi emersi in seguito allo sviluppo del modello dati relazionale è SQL, che oggi è diventato molto diffuso ed è diventato addirittura il linguaggio standard per i database relazionali. Lo standard del linguaggio SQL è stato rilasciato dal National Standards Institute (ANSI) degli Stati Uniti nel 1986 e nel 1987 l'Organizzazione internazionale per la standardizzazione (ISO) ha adottato questo standard come standard internazionale. Attualmente, il linguaggio SQL è supportato da centinaia di tipi diversi di DBMS, sviluppati per un'ampia varietà di piattaforme informatiche, dai personal computer ai mainframe.

Questa lezione utilizza la definizione ISO di SQL.

Introduzione all'SQL

In questa parte esamineremo lo scopo del linguaggio SQL, conosceremo la sua storia e analizzeremo le ragioni per cui è diventato così importante per le applicazioni di database.

Scopo del linguaggio SQL

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

· creare database e tabelle con la 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 del database deve risolvere tutti i problemi di cui sopra con il minimo sforzo da parte dell'utente e la struttura e la sintassi dei suoi comandi devono essere abbastanza semplici e facili da apprendere.

E infine, il linguaggio deve essere universale, cioè soddisfare alcuni standard riconosciuti, che consentiranno l'uso della stessa sintassi e struttura di comandi quando si passa 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 tabelle per trasformare i dati di input nel formato di output desiderato. Il linguaggio SQL, definito dallo standard ISO, ha due componenti principali:

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

· Data Manipulation Language (DML), progettato per il recupero e l'aggiornamento dei dati.

Prima dell'avvento dello standard SQL3, SQL includeva solo comandi per definire e manipolare i dati; mancava qualsiasi comando per controllare l'avanzamento dei calcoli. In altre parole, questo linguaggio non aveva IF... THEN...ELSE, GO TO, DO...WHILE e qualsiasi altro comando progettato per controllare l'avanzamento del processo computazionale. Tali compiti dovevano essere risolti in modo programmatico, utilizzando linguaggi di programmazione o di controllo delle attività, o in modo interattivo, come risultato di azioni eseguite dall'utente stesso. A causa di questa incompletezza, dal punto di vista dell'organizzazione del processo informatico, il linguaggio SQL potrebbe essere utilizzato in due modi. Il primo prevedeva un lavoro interattivo, consistente nell'inserimento da parte dell'utente di singole istruzioni SQL dal terminale. Il secondo era incorporare le istruzioni SQL nei programmi in 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 specificare quali informazioni dovrebbero essere ottenute, non come possono essere ottenute. In altre parole, il linguaggio SQL non richiede la specifica dei metodi di accesso ai dati.

· Come la maggior parte dei linguaggi moderni, SQL supporta un formato libero per la scrittura delle istruzioni. Ciò significa che i singoli elementi dell'operatore non sono associati a posizioni fisse sullo schermo durante la digitazione.

· La struttura del comando è specificata da una serie di parole chiave, che sono normali parole inglesi, come CREATE TABLE - Crea una tabella, INSERT - Inserisci, SELECT - Seleziona.

Per esempio:

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

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

SELECT , [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), personale dirigente aziendale, 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, cosa che in realtà è.

Storia del linguaggio SQL

La storia del modello relazionale dei dati, e indirettamente del linguaggio SQL, iniziò nel 1970 con la pubblicazione di un articolo fondamentale di E. F. Codd, che a quel tempo lavorava presso il laboratorio di ricerca IBM a San Jose. Nel 1974, D. Chamberlain, che lavorava nello stesso laboratorio, pubblicò una definizione di un linguaggio chiamato “Structured English Query Language”, o SEQUEL. Una versione rivista di questo linguaggio, SEQUEL/2, fu rilasciata nel 1976; successivamente per motivi legali il suo nome dovette essere cambiato in SQL: l'abbreviazione SEQUEL era già utilizzata dai filologi. Ma ancora oggi molte persone pronunciano l'acronimo SQL come "sequel", anche se ufficialmente si consiglia di leggerlo come "es-qu-el".

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

Alla fine degli anni '70, la società che ora è diventata Oracle Corporation ha rilasciato Oracle DBMS. Forse questa è la prima implementazione commerciale di un DBMS relazionale costruito utilizzando il linguaggio SQL.

Poco dopo è apparso il DBMS INGRES, che utilizza il linguaggio di interrogazione QUEL.

Questo linguaggio era più strutturato dell'SQL, ma la sua semantica era meno vicina all'inglese ordinario. Successivamente, quando SQL fu adottato come linguaggio standard per i database relazionali, il DBMS INGRES fu completamente convertito per utilizzarlo. Nel 1981, IBM pubblicò il suo primo DBMS relazionale commerciale, chiamato SQL/DS (per l'ambiente DOS/VSE). Nel 1982 fu rilasciata una versione di questo sistema per l'ambiente VM/CMS e nel 1983 per l'ambiente MVS, ma già con il nome DB2.

Nel 1982, il National Standards Institute (ANSI) degli Stati Uniti iniziò a lavorare sul Relation Database Language (RDL), guidato dai documenti concettuali ricevuti dalla IBM Corporation. Nel 1983 l’Organizzazione Internazionale per la Standardizzazione (ISO) venne coinvolta in questo lavoro. Gli sforzi congiunti di entrambe le organizzazioni sono culminati nel rilascio dello standard del linguaggio SQL. Il nome RDL fu abbandonato nel 1984 e la bozza del linguaggio fu riprogettata per essere più vicina alle implementazioni esistenti del linguaggio SQL.

La versione originale dello standard, pubblicata dall'ISO nel 1987, suscitò un'ondata di critiche. In particolare, Date, noto ricercatore in questo ambito, ha sottolineato che lo standard ometteva funzioni critiche, inclusi i controlli di integrità referenziale, e alcuni operatori relazionali.

Inoltre, ha notato l'eccessiva ridondanza del linguaggio: la stessa richiesta potrebbe essere scritta in più versioni diverse. La maggior parte delle critiche sono state riconosciute giuste e gli adeguamenti necessari sono stati apportati allo standard prima della sua pubblicazione. Tuttavia, si è deciso che fosse più importante rilasciare lo standard il più rapidamente possibile in modo che potesse servire come base comune su cui sia il linguaggio stesso che le sue implementazioni potessero essere ulteriormente sviluppati, piuttosto che aspettare fino a quando tutte le funzionalità che differivano sono stati definiti e concordati esperti considerati obbligatori per un linguaggio simile.

Nel 1989, l'ISO ha pubblicato un emendamento allo standard che definiva le funzioni di integrità dei dati. Nel 1992 è stata rilasciata la prima versione sostanzialmente rivista dello standard ISO, a volte chiamata SQL2 o SQL-92. Sebbene alcune funzioni siano state definite per la prima volta in questo standard, molte di esse sono già state implementate del 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 fornisce supporto aggiuntivo per le funzionalità di gestione dei dati orientate agli oggetti.

Le funzioni aggiunte allo standard linguistico 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. Ogni implementazione di una lingua è chiamata dialetto. Non esistono due dialetti completamente identici e attualmente non esiste alcun dialetto che sia pienamente conforme allo standard ISO.

Inoltre, man mano che gli sviluppatori di database aggiungono nuove funzionalità ai loro sistemi, espandono continuamente i loro dialetti SQL, facendo sì che i singoli dialetti diventino sempre più diversi l'uno dall'altro. Tuttavia, il nucleo di base del linguaggio SQL rimane più o meno standardizzato in tutte le implementazioni.

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

Funzionalità del linguaggio SQL

Di seguito sono riportate le principali funzionalità del linguaggio SQL.

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

Creazione della banca dati. Per creare un nuovo database, utilizzare l'istruzione CREATE DATABASE. La struttura dell'istruzione specifica il nome del database da creare.

Creazione di tabelle. La tabella di base viene creata utilizzando l'istruzione CREATE TABLE. Questa istruzione specifica i nomi dei campi, i relativi tipi di dati e la lunghezza (per alcuni tipi di dati). SQL utilizza i seguenti tipi di dati:

INTERO – numero 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 – virgola mobile a doppia precisione;

DATETIME – data e ora;

BOOL – Valore booleano.

L'istruzione di creazione della tabella specifica le restrizioni sui valori delle colonne e sulla tabella. Le possibili restrizioni sono mostrate nella tabella. 4.8

Tabella 4.8 Limitazioni sui dati definiti

Per un modello di dati relazionale, è essenziale specificare una chiave esterna (FOREIGNKEY). Quando si dichiarano chiavi esterne, è necessario imporre restrizioni appropriate sulla colonna, ad esempio NOT NULL.

In un'istruzione SQL, CHECK denota vincoli semantici che garantiscono l'integrità dei dati, come limitare l'insieme di valori validi per una particolare colonna.

Non è possibile utilizzare l'istruzione create table più di una volta sulla stessa tabella. Se, dopo la sua creazione, vengono rilevate imprecisioni nella sua definizione, è possibile apportare modifiche utilizzando l'istruzione ALTER TABLE. Questa istruzione è progettata per modificare la struttura di una tabella esistente: puoi rimuovere o aggiungere un campo a una tabella esistente.

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

Inserimento nuovi datiè una procedura per aggiungere righe a un database e viene eseguita utilizzando l'istruzione INSERT.

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

SET importo=importo+1000,00

DOVE importo>0

Rimozione di righe da una tabella utilizzando l'istruzione DELETE. La sintassi dell'operatore è:

DAL tavolo

La clausola WHERE è facoltativa, ma se non viene inclusa, tutte le voci nella tabella verranno eliminate. È utile utilizzare l'istruzione SELECT con la stessa sintassi dell'istruzione DELETE per verificare quali record verranno eliminati.

Garantire l'integrità dei dati. Il linguaggio SQL consente di definire vincoli di integrità abbastanza complessi, il cui rispetto verrà verificato per tutte le modifiche al database. Il monitoraggio dei risultati delle transazioni, l'elaborazione degli errori che si verificano e il coordinamento del lavoro parallelo con il database di diverse applicazioni o utenti sono forniti da COMMIT (registra il completamento con successo della transazione corrente e l'inizio di una nuova) e ROLLBACK (la necessità per un rollback - ripristino automatico dello stato del database all'inizio della transazione) operatori.

Campionamento dei datiè una delle funzioni del database più importanti che corrisponde all'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 è meglio implementare utilizzando le sottoquery. Queste query includono i cosiddetti controlli di esistenza. Supponiamo che tu voglia ottenere dati sugli studenti che non hanno un voto di sette punti. Se viene restituito un set vuoto, ciò significa solo una cosa: ogni studente ha almeno un voto di questo tipo.

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

L'istruzione SELECT deve contenere un vincolo sulla corrispondenza dei valori di una colonna (campo) specifica. Quindi solo le righe in cui corrispondono i valori della colonna specificata verranno recuperate dalle tabelle correlate. Il nome della colonna è indicato solo insieme al nome della tabella; altrimenti l'affermazione risulterà ambigua.

È possibile utilizzare altri tipi di collegamento delle tabelle: l'operatore INTER JOIN (inner join) garantisce che l'insieme di record risultante contenga valori corrispondenti nei campi correlati. Gli outer join (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 garantisce la sincronizzazione dell'elaborazione del database da parte di vari programmi applicativi, proteggendo i dati da accessi non autorizzati.

L'accesso ai dati in un ambiente multiutente viene controllato utilizzando le istruzioni GRANT e REVOKE. In ogni affermazione è necessario specificare l'utente, l'oggetto (tabella, vista) in relazione al quale sono impostati i permessi, ed i permessi stessi. Ad esempio, l'istruzione GRANT offre all'utente X la possibilità di recuperare dati dalla tabella PRODUCT:

CONCEDI LA SELEZIONE DEL PRODOTTO A X

L'istruzione REVOKE revoca tutte le autorizzazioni precedentemente concesse.

Incorporamento di SQL nei programmi applicativi. Le applicazioni reali sono solitamente scritte in altri linguaggi che generano codice SQL e lo passano al DBMS come testo ASCII.

Lo standard IBM per i prodotti SQL regola l'uso del linguaggio SQL integrato. Quando si scrive un programma applicativo, il suo testo è una miscela di comandi del principale linguaggio di programmazione (ad esempio C, Pascal, Cobol, Fortran, Assembler) e comandi SQL con un prefisso speciale, ad esempio. ExecSQL. La struttura delle istruzioni SQL è stata ampliata per accogliere le variabili del linguaggio host in un costrutto SQL.



Il processore SQL modifica il tipo di programma in base ai requisiti del compilatore del linguaggio di programmazione principale. La funzione del compilatore è tradurre (tradurre) un programma dal linguaggio di programmazione sorgente in un linguaggio vicino al linguaggio macchina. Dopo la compilazione, il programma applicativo (applicazione) è un modulo indipendente.

Dialetti SQL

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

Inizialmente, il linguaggio SQL si chiamava SEQUEL (Structured English Query Language), poi SEQUEL/2 e infine semplicemente SQL. Oggi SQL è lo standard de facto per i DBMS relazionali.

Il primo standard linguistico apparve nel 1989: SQL-89 ed era supportato da quasi tutti i DBMS relazionali commerciali. Era di natura generale e soggetto a un'interpretazione estensiva. I vantaggi di SQL-89 possono essere considerati la standardizzazione della sintassi e della semantica degli operatori per il campionamento e la manipolazione dei dati, nonché la fissazione di mezzi 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 portò alla sua comparsa nel 1992. la prossima versione del linguaggio SQL.

SQL2 (o SQL-92) copre quasi tutte le questioni necessarie: manipolazione dello schema del database, gestione delle transazioni e delle sessioni, supporto per architetture client-server o strumenti di sviluppo di applicazioni.

Il passo successivo nello sviluppo del linguaggio è la versione SQL 3. Questa versione del linguaggio è completata da un meccanismo di trigger, dalla definizione di un tipo di dati arbitrario e da un'estensione dell'oggetto.

Attualmente ci sono tre livelli di lingua: principiante, intermedio e completo. Molti produttori dei propri DBMS utilizzano le proprie implementazioni SQL, basate almeno sul livello iniziale del corrispondente standard ANSI e contenenti alcune estensioni specifiche per un particolare DBMS. Nella tabella 4.9 fornisce esempi di dialetti SQL.

Tabella 4.9 Dialetti SQL

DBMS Linguaggio delle interrogazioni
DBMS del sistema R SQL
DB2 SQL
Accesso SQL
SYBASE SQL ovunque Watcom-SQL
SYBASESQL Server Transact_SQL
Il mio SQL SQL
Oracolo PL/SQL

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

La compatibilità di molti dialetti SQL utilizzati determina la compatibilità del DBMS. Pertanto, il DBMS SYBASE SQL Anywhere è il più compatibile possibile per un DBMS di questa classe con il DBMS SYBASE SQL Server. Uno degli aspetti di questa compatibilità è il supporto in SYBASE SQL Anywhere di un dialetto del linguaggio SQL come Transact-SQL. Questo dialetto viene utilizzato in SYBASE SQL Server e può essere utilizzato in SYBASE SQL Anywhere insieme al dialetto SQL nativo: Watcom-SQL.

Domande di controllo

1. Come può essere classificato un DBMS?

2. Quali modelli di database esistono?

3. Quali sono gli elementi principali dei modelli informativi?

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

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

6. Cosa ti permette di fare la procedura di normalizzazione della tabella?

7. Quali sono gli strumenti linguistici e software del DBMS?

8. Che tipo di DBMS MS Access è?

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

10. A cosa servono i principali operatori SQL?

Structure Query Language (SQL) è stato creato come risultato dello sviluppo del modello di dati relazionali ed è attualmente il linguaggio standard de facto per i DBMS relazionali. Il linguaggio SQL oggi è supportato da un numero enorme di DBMS di vario tipo.

Il nome del linguaggio SQL è solitamente pronunciato "es-qu-el". A volte viene utilizzato il nome mnemonico "See-Quel".

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

Crea database e tabelle con una descrizione completa della loro struttura

Eseguire operazioni di manipolazione dei dati di base: inserimento, modifica, eliminazione di dati

Esegui query semplici e complesse.

Il linguaggio SQL è relazionalmente completo.

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 cambia quando si passa da un DBMS all'altro.

Il linguaggio SQL ha due componenti principali:

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

Linguaggio DML (Data Manipulation Language) progettato per il recupero e l'aggiornamento dei dati.

SQL è un linguaggio non procedurale, il che significa che quando lo si utilizza è necessario specificare quali informazioni devono essere ottenute, non come possono essere ottenute. I comandi SQL sono normali parole inglesi (SELECT, INSERT, ecc.). Diamo prima un'occhiata alle istruzioni SQL DML:

SELEZIONA: selezione 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 SELEZIONATA

L'operatore SELECT esegue azioni equivalenti alle seguenti operazioni di algebra relazionale: selezione, proiezione e unione.

La query SQL più semplice che la utilizza è simile alla seguente:

SELEZIONA nome_col DA tbl

La parola chiave select è seguita da un elenco di colonne separate da virgole i cui dati verranno restituiti dalla query. La parola chiave from specifica da quale tabella (o vista) vengono recuperati i dati.

Il risultato di una query di selezione è sempre una tabella denominata tabella dei risultati. Inoltre, i risultati di una query eseguita utilizzando l'istruzione select possono essere utilizzati per creare una nuova tabella. Se i risultati di due query su tabelle diverse hanno lo stesso formato, puoi combinarli in un'unica tabella. Inoltre, la tabella ottenuta come risultato di una query può essere oggetto di ulteriori query.

Per selezionare tutte le colonne e tutte le righe di una tabella, è sufficiente eseguire un SELECT * FROM tbl;

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

Richiedi risultato

SELEZIONA * DA Prodotto;

sarà l'intera tabella Product.

È possibile selezionare colonne di tabella specifiche utilizzando una query

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

Quindi, il risultato della richiesta

SELEZIONA Tipologia, Prezzo DA Prodotto;

ci sarà un tavolo

L'elenco delle colonne nell'istruzione select viene utilizzato anche se è 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 dove, seguita da una condizione logica. Se un record soddisfa questa condizione, viene incluso nel risultato. In caso contrario, la voce viene scartata.

Ad esempio, selezionando dalla tabella Prodotto i prodotti 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_ Prezzo>500 AND Prezzo<3500. Допускается также использование выражений в условии: where Price>(1+1) e costanti stringa: dove nome= "autoweights".

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

SELEZIONA * DA Prodotto dove Prezzo TRA 3000 E 3500;

Simile all'operatore NOT BETWEEN, esiste l'operatore NOT IN.

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

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

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

L'operatore LIKE è progettato per confrontare una stringa con un modello:

SELEZIONA * FROM tbl dove nome_col LIKE "abc"

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

L'esempio può utilizzare due caratteri jolly: "_" e "%". Il primo sostituisce un carattere arbitrario nel modello e il secondo sostituisce una sequenza di caratteri arbitrari. Pertanto, "abc%" corrisponde a qualsiasi stringa che inizia con abc, "abc_" corrisponde a una stringa di 4 caratteri che inizia con abc, "%z" corrisponde a qualsiasi stringa 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" in questo modo:

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

bilance per camion

Se la stringa di ricerca contiene un carattere jolly, è necessario specificare il carattere di escape nella clausola ESCAPE. Questo carattere di controllo deve essere utilizzato nel modello prima del carattere jolly, indicando che il carattere jolly deve essere trattato come un carattere normale. Ad esempio, se dovessi cercare tutti i valori in un campo che contiene il carattere "_", il modello "%_%" restituirebbe tutti i record della tabella. In questo caso, il modello dovrebbe essere scritto come segue:

"%|_%" ESCAPE "|"

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

MI PIACE "20#%" ESCAPE "#"

L'operatore IS NULL permette di verificare l'assenza (presenza) di un valore NULL nei campi di una tabella. L'utilizzo degli operatori di confronto regolari in questi casi potrebbe produrre risultati errati perché il confronto con NULL restituisce UNKNOWN. Pertanto, la condizione di selezione dovrebbe assomigliare a questa:

dove col_name È 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 desideri ordinare i record in base a una delle colonne, devi utilizzare la clausola ORDER BY, seguita dal nome di quella colonna:

SELEZIONA * DA tbl ORDINA PER nome_col;

Questa query restituirà i record in ordine crescente del valore dell'attributo col_name.

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

SELEZIONA * DA tbl ORDINA PER nome_col1, nome_col2.

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

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

Per l'ordinamento diretto esiste la parola chiave ASC, che viene accettata come valore predefinito.

Se il risultato del campione contiene centinaia o migliaia di record, il loro output e la loro elaborazione richiederanno molto tempo.

Pertanto, le informazioni sono spesso suddivise in pagine e presentate all'utente in porzioni. L'impaginazione viene utilizzata utilizzando la parola chiave limit seguita dal numero di voci da visualizzare. La seguente query recupera i primi 10 record e contemporaneamente ordina all'indietro sul campo col_name1:

SELEZIONA * DA tbl ORDINA PER nome_col1 LIMITE DESC 10

Per recuperare i successivi 10 record, utilizzare la parola chiave limit con due valori: il primo specifica la posizione da cui deve essere stampato il risultato, e il secondo specifica il numero di record da recuperare:

SELEZIONA * DA tbl ORDINA PER nome_col1 LIMITE DESC 10,10

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

I migliori articoli sull'argomento