Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 10
  • Struttura dei comandi SQL. Introduzione alla gestione dei database relazionali

Struttura dei comandi SQL. Introduzione alla gestione dei database relazionali

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

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

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

Crea database e tabelle con una descrizione completa della loro struttura

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

Eseguire query semplici e complesse.

SQL è completo in modo relazionale.

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

Il linguaggio SQL ha due componenti principali:

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

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

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

SELECT - recupero dei dati dal database

INSERT - inserimento di dati in una tabella

AGGIORNAMENTO - aggiornamento dei dati in una tabella

DELETE - eliminazione dei dati da una tabella

Istruzione SELECT

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

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

SELECT col_name FROM tbl

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

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

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

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

Il risultato della query

SELEZIONA * DA Prodotto;

sarà l'intera tabella Prodotto.

Puoi selezionare colonne specifiche di una tabella usando una query

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

Quindi, il risultato della query

SELEZIONA Tipo, Prezzo DA Prodotto;

ci sarà un tavolo

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

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

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

SELEZIONA * DA Prodotto dove Prezzo<3200;

Il suo risultato:

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

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

SELEZIONA * FROM Prodotto dove Prezzo TRA 3000 E 3500;

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

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

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

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

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

SELECT * FROM tbl dove col_name LIKE "abc"

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

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

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

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

bilance automatiche

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

"% | _%" ESCAPE "|"

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

MI PIACE "20 #%" ESCAPE "#"

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

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

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

SELECT * FROM tbl ORDER BY col_name;

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

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

SELECT * FROM tbl ORDER BY col_name1, col_name2.

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

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

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

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

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

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

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

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

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

SQL è un linguaggio di query strutturato. SQL non esiste senza database: su di esso non si possono scrivere programmi, e in questo senso non è un linguaggio di programmazione come PHP, ma quando si ha a che fare con un DBMS specifico, non si può fare a meno della conoscenza di SQL. È possibile scrivere query semplici su di esso oppure eseguire transazioni di grandi dimensioni costituite da diverse query complesse. Una query SQL è una sorta di comando al database. Tale comando può richiedere di restituire informazioni che soddisfano criteri specifici o ordinare di eliminare qualsiasi record, ecc. Un comando SQL è una semplice riga come:

SELEZIONA * FROM Staff WHERE reparto

Le query SQL sono in genere simili a una semplice espressione inglese. Il comando sopra può essere tradotto in russo come segue

SELEZIONA TUTTO da Staff WHERE clwjiertme "

Un comando del tutto comprensibile, peccato che sia registrato solo ed esclusivamente in inglese. Come risultato dell'esecuzione di tale query, il DBMS restituirà tutti i record della tabella Staff in cui il campo parte * Mit_id è uguale a tre. Nel nostro esempio, questa query seleziona in realtà solo i programmatori dall'intera base di dipendenti.

Se non hai mai lavorato con un DBMS prima, potresti avere una domanda ragionevole: dove e come può essere eseguita questa query? Esistono tre modi per eseguire query SQL.

1. Ambiente interattivo per l'interazione con il DBMS. Per la maggior parte dei server DBMS, esistono programmi client (integrati o forniti da terze parti), nel cui ambiente di lavoro è possibile scrivere query SQL, eseguirle e ottenere il risultato. In genere, tali strumenti vengono utilizzati dagli amministratori di database e non sono direttamente correlati alla programmazione PHP. Un esempio di programma client per lavorare con MySQL è il programma MySQL Administrator (http: /www.mysgl.coin/ product-s / administratoT /) o il popolarissimo sistema PHP phpMyAdmin (http: / / www. Phpmyadi'ln. R »et / itumm jiage / index.php). Per iniziare, sarà sufficiente il kit di distribuzione già installato, che ha un'interfaccia console. Su Linux, è necessario digitare il comando mysql dalla riga di comando per aprire una finestra con un prompt per l'immissione di query SQL e, su Windows, è necessario eseguire il file mysql per avviare la stessa interfaccia. exe dalla directory bin.

2. Query SQL statiche. In genere, tali query vengono scritte all'interno di stored procedure nei database stessi o codificate nelle applicazioni stesse. Una query SQL statica è predefinita e cambia solo se il codice del programma o della procedura memorizzata viene riscritto manualmente. Da PHP, tale query SQL viene eseguita utilizzando funzioni speciali, che verranno discusse di seguito.

3. Query SQL dinamiche. Questo tipo include query che non possono essere completamente definite durante la scrittura di un'applicazione. i "esempio, quando si scrive un programma per ottenere un elenco, l'impiegato" mt diversi dipartimenti dell'impresa, il programmatore non lo sa, ci "> dell'azienda avrà dipartimenti e quali dipendenti saranno inclusi in essi i". Di certo, questi dati possono essere scritti nel programma in modo rigido, ma se al primo cambiamento nella struttura dell'azienda, il programma può essere buttato via, sarà necessario riscriverlo.Le query dinamiche consentono di creare programmi flessibili ai dati In PHP, tali query vengono eseguite con quasi le stesse funzioni di quelle statiche, solo in esse '^ in'> è possibile passare alcuni parametri.

Riassumendo i tre punti sopra descritti, possiamo dire che le query SQL vengono eseguite da appositi programmi amministrativi o in vario modo da script PHP.

Poiché un DBMS risolve molti problemi, anche SQL deve essere un linguaggio multifunzionale. Ci sono diversi tipi di operazioni che possono essere< \ ществлять с помощью SQL.

1. Determinazione della struttura del database. Questo tipo di query viene utilizzato per creare e modificare tabelle e indici. Questi sono solitamente comandi CRE; “E TA’ LE, ALI’R TA ’LE,‘ ”’. TE INDEX, ecc.

2. Manipolazione dei dati. Questo tipo include query per inserire (dv1 * e> le), eliminare o modificare i dati nelle tabelle. Ci sono tre comandi principali: INSERT. ELIMINA E AGGIORNA.

3. Recupero dei dati Questo include solo un comando SELECT. Non apporta modifiche ai dati stessi, ma consente di ottenerli dal database. Nonostante il fatto che venga utilizzato un solo comando per recuperare i dati, ha capacità molto grandi e viene utilizzato molto spesso nelle applicazioni.

4. Gestione del server DBMS. Questo tipo include principalmente le richieste di gestione degli utenti e dei loro diritti di accesso (ad esempio, il comando GRANT).

Una buona conoscenza di SQL facilita notevolmente il lavoro di un programmatore quando lavora con un database. Le applicazioni possono essere piccole, ma hanno grandi funzionalità solo per il fatto che molte attività verranno svolte da SQL.

Come in qualsiasi altra area dell'IT, ci sono standard in SQL: questo è ANSI SQL. ANSI sta per American National Standards Institute. Tuttavia, non da ultimo a causa della differenza nella funzionalità degli stessi DBMS, l'implementazione di SQL per vari

I DBMS sono ancora diversi tra loro. Al momento, quasi ogni DBMS ha il suo dialetto, che di solito non differisce molto dallo standard generale, ma ha le sue caratteristiche. Ad esempio, PL/SQL è compatibile con Oracle e PostgreSQL e T-SQL è utilizzato per lavorare con MS SQL Server.

Per ulteriori lavori con i database, ti consigliamo di studiare immediatamente lo standard con cui prevedi di lavorare in futuro. Per la maggior parte degli sviluppatori Web al momento, la funzionalità del DBMS MySQL è sufficiente (inoltre, può essere utilizzata gratuitamente), quindi in questo libro tutti gli esempi con MySQL verranno forniti, rispettivamente, nel dialetto di questo DBMS. La documentazione del linguaggio di query MySQL è disponibile su www.mysql.com.

Sei nuovo alla programmazione o hai appena evitato di imparare SQL prima? Allora sei nel posto giusto, dal momento che qualsiasi sviluppatore alla fine si trova di fronte alla necessità di conoscere questo linguaggio di query. Anche se potresti non essere il principale progettista di database, lavorare con loro è quasi impossibile da evitare. Spero che questa rapida panoramica della sintassi delle query SQL di base possa aiutare lo sviluppatore interessato e chiunque altro ne abbia bisogno.

Che cos'è il database SQL?

Structured Query Language ( S strutturato Q uery l language) è uno standard di comunicazione del database supportato da ANSI. La versione più recente è SQL-99, sebbene sia già in fase di sviluppo un nuovo standard. La maggior parte dei database aderisce allo standard ANSI-92. Si è discusso molto sull'introduzione di standard più moderni, ma i produttori di database commerciali si stanno discostando da questo sviluppando i loro nuovi concetti per la manipolazione dei dati archiviati. Quasi ogni singolo database utilizza un insieme unico di sintassi, sebbene molto simile allo standard ANSI. Nella maggior parte dei casi, questa sintassi è un'estensione dello standard di base, sebbene ci siano momenti in cui questa sintassi porta a risultati diversi per database diversi. È sempre una buona idea guardare la documentazione del database, soprattutto se si ottengono risultati imprevisti.

Se non conosci SQL, devi familiarizzare con i concetti di base che devi comprendere.

In termini generali, "database" è un nome generico per sistema di gestione di database relazionali(RDBMS). Per alcuni sistemi, "database" si riferisce anche a un gruppo di tabelle, dati, informazioni di configurazione, che sono parte integrante di altri costrutti simili. In questo caso, ogni installazione di database SQL può essere costituita da più database. In altri sistemi, sono indicati come tabelle.

Tabella: la struttura del database, che consiste in colonne contenente stringhe dati. Di solito le tabelle vengono create per contenere informazioni correlate. È possibile creare più tabelle all'interno dello stesso database.

Ogni colonna rappresenta un attributo o una raccolta di attributi dell'oggetto, come i numeri ID dei dipendenti, l'altezza, il colore dell'auto e così via. Spesso il termine è usato per riferirsi a una colonna campo con un nome, ad esempio "nel campo Nome". Il campo riga è l'elemento più piccolo della tabella. Ogni colonna in una tabella ha un nome, un tipo di dati e una dimensione specifici. I nomi delle colonne devono essere univoci all'interno della tabella.

Ogni riga (o record) è una raccolta di attributi di un particolare oggetto, ad esempio una riga può contenere il numero di identificazione di un dipendente, il suo stipendio, il suo anno di nascita, ecc. Le righe della tabella non hanno nomi. Per fare riferimento a una stringa specifica, l'utente deve specificare un attributo (o un insieme di attributi) che lo identifichi in modo univoco.

Una delle operazioni più importanti che vengono eseguite quando si lavora con i dati è una selezione di informazioni memorizzate nel database. Per fare ciò, l'utente deve eseguire inchiesta(domanda).

Ora diamo un'occhiata ai tipi di base di query di database che si concentrano sulla manipolazione dei dati all'interno del database. Per i nostri scopi, tutti gli esempi sono forniti in SQL standard per adattarsi a qualsiasi ambiente.

Tipi di query di dati

Ci sono quattro tipi principali di query di dati in SQL, che sono indicati come linguaggio di manipolazione dei dati(Linguaggio di manipolazione dei dati o DML):

  • SELEZIONARE- selezionare righe dalle tabelle;
  • INSERIRE- aggiungere righe alla tabella;
  • AGGIORNARE- modificare le righe della tabella;
  • ELIMINARE- eliminare le righe nella tabella;

Ognuna di queste richieste ha diversi operatori e funzioni che vengono utilizzate per eseguire qualche tipo di azione sui dati. La query SELECT ha il maggior numero di opzioni. Esistono anche altri tipi di query utilizzate insieme a SELECT, come JOIN e UNION. Ma per ora, ci concentreremo solo sulle query di base.

Utilizzo di una query SELECT per recuperare i dati desiderati

Una query SELECT viene utilizzata per recuperare le informazioni memorizzate nel database. L'operazione di base di questa query è limitata a una singola tabella, sebbene esistano costrutti che consentono il recupero da più tabelle contemporaneamente. Per ottenere tutte le righe di dati per colonne specifiche, viene utilizzata una query come questa:

SELECT colonna1, colonna2 FROM nome_tabella;

Inoltre, puoi ottenere tutte le colonne da una tabella utilizzando il carattere jolly *:

SELECT * FROM nome_tabella;

Questo può essere utile quando si stanno per selezionare dati con una clausola WHERE specifica. La seguente query restituirà tutte le colonne di tutte le righe in cui "colonna1" contiene il valore "3":

Oltre a = (uguale), esistono i seguenti operatori condizionali:

Inoltre, puoi utilizzare le clausole BITWEEN e LIKE per confrontare la clausola WHERE, nonché le combinazioni degli operatori AND e OR.

Che in russo significa: seleziona tutte le righe dalla tabella nome_tabella, dove il valore della colonna età è maggiore o uguale a 18 e il valore della colonna Cognome è nell'intervallo alfabetico da Ivanov a Sidorov, incluso, o il valore di la colonna Società è Motorola.

Utilizzo della query INSERT per inserire nuovi dati

La query INSERT viene utilizzata per creazione nuova linea di dati. Per aggiornare i dati esistenti o campi riga vuoti, utilizzare la query UPDATE.

Sintassi di esempio per una query INSERT:

INSERT INTO nome_tabella (colonna1, colonna2, colonna3) VALUES ("data1", "data2", "data3");

Se si intende inserire tutti i valori nell'ordine in cui si trovano le colonne della tabella, non è necessario specificare i nomi delle colonne, sebbene ciò sia preferibile per la leggibilità. Inoltre, se stai elencando le colonne, non è necessario specificarle nell'ordine in cui si trovano nel database, purché i valori immessi corrispondano a quell'ordine. Non è necessario elencare le colonne che non immettono informazioni.

Le informazioni preesistenti nel database vengono modificate in modo molto simile.

Query UPDATE e clausola WHERE

UPDATE viene utilizzato per modificare i valori esistenti o liberare un campo in una riga, quindi i nuovi valori devono corrispondere al tipo di dati esistente e fornire valori accettabili. Se non si desidera modificare i valori in tutte le righe, è necessario utilizzare la clausola WHERE.

Puoi utilizzare WHERE su qualsiasi colonna, inclusa quella che desideri modificare. Viene utilizzato quando è necessario sostituire un valore specifico con un altro.

Stai attento! La richiesta DELETE cancella intere righe

La query DELETE rimuove completamente una riga dal database. Se si desidera eliminare un singolo campo, è necessario utilizzare la query UPDATE e impostare questo campo su un valore che sarà l'analogo di NULL nel programma. Fai attenzione a limitare la tua query DELETE con una clausola WHERE, altrimenti potresti perdere l'intero contenuto della tabella.

Una volta che una riga è stata eliminata dal database, non può essere recuperata, quindi è consigliabile avere una colonna denominata "IsActive", o qualcosa del genere, che puoi modificare a zero, che indicherà un blocco della visualizzazione su quella riga.

Ora conosci le basi delle query SQL

SQL è un linguaggio di database e abbiamo coperto i comandi più importanti e di base utilizzati nelle query di dati. Molti concetti di base non sono stati trattati (SOMMA e COUNT per esempio), ma i pochi comandi elencati sopra dovrebbero incoraggiarti ad agire e imparare più a fondo il meraviglioso linguaggio di query chiamato SQL.

SQL yavl. strumento destinato. per l'elaborazione e la lettura dei dati contenuti nel computer. DB. SQL yavl., Prima di tutto, inf-nno-logical. lingua intesa. descrivere, modificare e recuperare dati archiviati in database relazionali. SQL è un nome abbreviato Structured Query Language) ... SQL viene utilizzato per organizzare l'interazione dell'utente con il database. Infatti, SQL funziona solo con database relazionali genere . Il programma per computer che gestisce il database si chiama sistema di gestione del database, o DBMS ... Se l'utente ha bisogno. legge i dati dal database, li richiede al DBMS con pom. SQL. Il DBMS elabora la richiesta, trova i dati richiesti e li invia all'utente. Viene chiamato il processo di richiesta dei dati e di ottenere il risultato richiesta al database: da qui il nome - Structured Query Language. Nonostante il fatto che la lettura dei dati sia ancora uno dei naib. importante F-tion SQL, ora questo linguaggio viene utilizzato per implementare tutto funzionalità, gatto. Il DBMS mette a disposizione dell'utente, ovvero:

Organizzazione dei dati. SQL consente all'utente di modificare la struttura della presentazione dei dati, nonché di stabilire relazioni tra gli elementi del database.

Lettura dei dati. SQL offre a un utente o un'applicazione la possibilità di leggere e utilizzare i dati contenuti nel database.

Elaborazione dati. SQL offre all'utente o all'applicazione la capacità. modificare il database, ad es. aggiungere nuovi dati ad esso, nonché eliminare o aggiornare i dati già presenti.

Controllo di accesso. Con pom. SQL può limitare la capacità dell'utente di leggere e modificare i dati e proteggerli da accessi non autorizzati.

Condivisione dati. SQL coordina la condivisione dei dati tra gli utenti e coloro che lavorano in parallelo in modo che non interferiscano tra loro.

Integrità dei dati. SQL consente di garantire l'integrità del database, proteggendolo dalla distruzione dovuta a modifiche inconsistenti o guasti del sistema.

Quindi, SQL è esplicito. un linguaggio abbastanza potente per interagire con un DBMS.

Vantaggi di SQL.

SQL è un linguaggio di facile comprensione e tuttavia uno strumento software di gestione dei dati versatile.

Le seguenti caratteristiche hanno portato al successo il linguaggio SQL:

Indipendenza da specifici DBMS;

Portabilità da un sistema informatico all'altro;

Disponibilità di standard;

Quadro relazionale;

Struttura di alto livello;

Possibilità di eseguire query interattive ad hoc:

Fornitura di accesso programmatico a banche dati;

Possibilità di diversa presentazione dei dati;

Completezza come linguaggio destinato a lavorare con un database;

La capacità di definire dinamicamente i dati;

Supporto per architettura client/server.

Tutti i suddetti fattori hanno portato al fatto che SQL è diventato lo strumento standard per la gestione dei dati sui personal computer.

37 Strutture di base delle frasi linguistiche nelle query

Ogni istruzione SQL è inchiesta o una chiamata al database, che porta a una modifica nel database. In base a quali modifiche si verificano nel database, si distinguono i seguenti tipi di query:

Richieste di creare o modificare oggetti nuovi o esistenti nel database (in questo caso la richiesta descrive il tipo e la struttura dell'oggetto creato o modificato);

Richieste di dati;

Richieste di aggiunta di nuovi dati (record)

Richieste di cancellazione dei dati;

Chiamate al DBMS.

Qualsiasi richiesta yavl. un programma scritto nel linguaggio di query strutturato SQL. Infatti, un programma in SQL è una certa frase-query a una selezione di dati in inglese, scritta in una certa struttura, che viene poi convertita dal DBMS nel risultato richiesto.

Nella maggior parte dei DBMS, la frase termina con ";" e il DBMS non elabora le informazioni finché non incontra ";". Le frasi sono composte da frasi e iniziano con la parola registrata. Ogni frase ha un titolo.

Appuntamenti di alcuni operatori SQL di base:

SELEZIONARE(seleziona) - (seleziona) i dati dalle colonne specificate e (se necessario) effettua la loro trasformazione prima di visualizzarli in conformità con le espressioni e (o) funzioni specificate; A PARTIRE DAL- indica la tabella da cui sono stati selezionati i campi; DOVE- crea una condizione per la selezione dei dati nei record; ORDINATO DA- ordina i record in un determinato ordine; RAGGRUPPA PER- raggruppa i record corrispondenti durante l'esecuzione di query di riepilogo; DISTINCTROW- esclude i record duplicati dal set di risultati; TRASFORMARE- valuta le espressioni nelle query incrociate; PERNO- definisce le intestazioni delle colonne nella tabella a campi incrociati.

Circa l'offerta. SELEZIONARE. Tutte le richieste per ricevere quasi qualsiasi quantità di dati da uno o più. le tabelle vengono eseguite utilizzando una singola clausola SELECT. Nel caso generale, un'altra tabella è il risultato dell'implementazione della clausola SELECT. Questa nuova tabella (di lavoro) può essere SELECT e così via di nuovo, ad es. tali operazioni possono essere annidate l'una nell'altra. Di interesse storico è il fatto che è la possibilità di includere. una clausola SELECT all'interno di un'altra era la motivazione per l'utilizzo. l'aggettivo "strutturato" nel nome del linguaggio SQL. Nelle costruzioni isp. designazione: un asterisco (*) per "tutti" - uptr. nel senso consueto per la programmazione, ad es. "tutti i casi che soddisfano la definizione"; (,) - isp. per separare gli elementi dell'elenco; () - significa che le costruzioni sono concluse. tra parentesi, yavl. opzionale ; linea retta (|) - contanti. scelta di due o più opzioni, ecc.

36-37. Specialmente - linguaggio SQL ... Strutture di frase di base di una lingua nelle query (a/b)

SQL - Linguaggio di query strutturato. Inf-e pr-in - più uniforme. Ciò ha portato alla necessità di creare un linguaggio standard che potesse

SELECT in linguaggio SQL (per una tabella): SELEZIONARE(seleziona) i campi specificati

A PARTIRE DAL(da) la tabella specificata

DOVE(dove) qualche condizione specificata è vera

SELECT list_selectable_elements (campi)

FROM table_list (o viste)

]

Utilizzo del qualificatore AS

Questo qualificatore sostituisce il nome della colonna esistente con quello specificato nella tabella dei risultati.

Funzioni aggregate

Le funzioni di aggregazione includono funzioni per il calcolo delle colonne dei valori sum (SUM), max-th (SUM) e min-th (MIN), media aritm-esima (AVG), nonché il numero di righe che soddisfano una determinata condizione (COUNT ).

SELEZIONA conteggio (*), somma (budget), avg (budget),

min (budget), max (budget)

DOVE head_dept = 100

calcolare: il numero di reparti che sono divisioni del reparto 100 (Marketing e Vendite), il loro budget totale, medio, min-esimo e massimo COUNT SUM AVG MIN MAX

5 3800000.00 760000.00 500000.00 1500000.00

clausola FROM del comando SELECT

La clausola FROM elenca tutti gli oggetti (uno o più) da cui vengono prelevati i dati. Ogni tabella o vista a cui si fa riferimento nella query deve essere elencata nella clausola FROM.

Tipi di predicati utilizzati nella clausola WHERE :

confronto con operatori relazionali

Equivale<>non uguale! = non uguale> altro< меньше

> = maggiore o uguale<= меньше или равно

TRA IN COME CONTENERE È NULL

Operazioni di confronto Se i domini sono definiti nel database, gli elementi confrontati devono appartenere allo stesso dominio.

SELEZIONA nome, cognome, numero_dipartimento,

DOVE lavoro_paese<>"STATI UNITI D'AMERICA"

TRA

Il predicato BETWEEN specifica l'intervallo di valori per cui l'espressione restituisce true. È anche consentito utilizzare il costrutto NOT BETWEEN.

DOVE stipendio TRA 20.000 E 30.000

ottenere un elenco di dipendenti il ​​cui stipendio annuo è superiore a 20.000 e inferiore a 30.000 FIRST_NAME LAST_NAME SALARY

Ann Bennet 22935.00

Kelly Brown 27000.00

I valori che definiscono gli intervalli basso e alto potrebbero non essere valori effettivi dal database. E questo è molto conveniente: dopotutto, non possiamo sempre indicare i valori esatti degli intervalli!

SELECT nome, cognome, stipendio

WHERE cognome TRA "Nel" E "Osb"

ottenere un elenco di dipendenti i cui cognomi sono compresi tra "Nel" e "Osb" FIRST_NAME LAST_NAME SALARY

Robert Nelson 105900.00

Carol Nordstrom 42742.50

Sue Anne O "Brien 31275.00

SELECT nome, cognome, data_assunzione

IN Il predicato IN verifica se il valore specificato che precede la parola chiave "IN" (ad esempio, un valore di colonna o una funzione da esso) è incluso nell'elenco tra parentesi. Se il valore selezionato è uguale a qualsiasi elemento nell'elenco, il predicato restituisce true. È inoltre consentito utilizzare la costruzione NOT IN.

SELECT nome, cognome, codice_lavoro

WHERE job_code IN ("VP", "Admin", "Finan")

PIACE Il predicato LIKE viene utilizzato solo con i dati dei caratteri. Controlla se il valore del carattere dato corrisponde alla stringa con la maschera specificata. Tutti i caratteri consentiti (inclusi maiuscolo e minuscolo), nonché i caratteri speciali vengono utilizzati come maschera:

% - sostituisce qualsiasi numero di caratteri (incluso 0),

Sostituisce un solo carattere.

È anche consentito utilizzare il costrutto NOT LIKE.

SELECT nome, cognome

WHERE cognome LIKE "F%"

ottenere un elenco di dipendenti i cui cognomi iniziano con la lettera "F" FIRST_NAME LAST_NAME

Operatori logici Gli operatori logici includono i noti operatori AND, OR, NOT, che consentono di eseguire diverse operazioni logiche: moltiplicazione logica (AND, "intersezione di condizioni"), addizione logica (OR, "unione di condizioni"), negazione logica ( NON, "negazione delle condizioni")... Abbiamo già usato l'operatore AND nei nostri esempi. L'uso di questi operatori consente di "personalizzare" in modo flessibile le condizioni per la selezione dei record.

Connessione ( GIUNTURA ) L'operazione di join viene utilizzata in SQL per visualizzare le informazioni correlate archiviate in più tabelle in un'unica query. Il collegamento viene eseguito, di regola, dalla chiave primaria di una tabella e dalla chiave esterna di un'altra tabella, per ciascuna coppia di tabelle. È molto importante tenere in considerazione tutti i campi della chiave esterna, altrimenti il ​​risultato sarà distorto. I campi da unire possono (ma non devono!) essere presenti nell'elenco degli elementi selezionabili. La clausola WHERE può contenere più condizioni di join. La condizione di join può anche essere combinata con altri predicati nella clausola WHERE.

02/07/07 11.6K

Introduzione alla gestione dei database relazionali

sql è spesso indicato come Esperanto per i sistemi di gestione dei database (DBMS). In effetti, non esiste un altro linguaggio al mondo per lavorare con i database (DB), che sarebbero così ampiamente utilizzati nei programmi. Il primo standard sol è apparso nel 1986 e ha ormai ottenuto l'accettazione universale. Può essere utilizzato anche quando si lavora con DBMS non relazionali. A differenza di altri strumenti software, come i linguaggi C e Cobol, prerogativa dei programmatori professionisti, sql è utilizzato da specialisti di un'ampia varietà di settori. Programmatori, amministratori di DBMS, analisti aziendali: tutti elaborano con successo i dati utilizzando sql. La conoscenza di questo linguaggio è utile a tutti coloro che hanno a che fare con un database.

In questo articolo, esamineremo i concetti di base di sql. Raccontiamo il suo background (e sfatiamo alcuni miti lungo la strada). Conoscerai il modello relazionale e sarai in grado di acquisire le prime abilità nel lavorare con sql, che aiuteranno nell'ulteriore sviluppo del linguaggio.

SQL è difficile da imparare? Dipende da quanto profondamente approfondirai l'essenza. C'è molto da imparare per diventare un professionista. Il linguaggio sql è apparso nel 1974 come oggetto di un piccolo 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" (chiamato comunemente sql-92) - contiene oltre seicento pagine, ma non dice nulla sulle caratteristiche specifiche delle versioni sol implementate nel DBMS di microsoft, oracle, sybase e altri.Il linguaggio è così sviluppato e diversificato che solo un semplice elenco delle sue capacità richiederà diversi articoli di giornale e se raccogli tutto ciò che è scritto sull'argomento sol, ottieni una libreria multivolume.

Tuttavia, per l'utente medio non è affatto necessario conoscere SQL completamente e completamente. Come un turista che si trova in un paese dove si parla una lingua incomprensibile, è sufficiente imparare solo poche espressioni comuni e regole grammaticali, quindi in sql - conoscendo poco, puoi ottenere molti risultati utili. In questo articolo, esamineremo i comandi sql di base, le regole per l'impostazione dei criteri per la selezione dei dati e mostreremo come ottenere i risultati. Di conseguenza, sarai in grado di creare tabelle in modo indipendente e inserire informazioni in esse, creare query e lavorare con i report. Questa conoscenza può diventare la base per un'ulteriore padronanza indipendente di sql.

Cos'è sql?

sql è un linguaggio non procedurale specializzato che consente di descrivere dati, recuperare ed elaborare informazioni da DBMS relazionali. La specializzazione significa che sol è inteso solo per lavorare con un database; è impossibile creare un sistema applicativo completo solo tramite questo linguaggio: per questo sarà necessario utilizzare altri linguaggi in cui è possibile incorporare comandi sql. Pertanto, sql è anche chiamato strumento linguistico ausiliario per l'elaborazione dei dati. Una lingua ausiliaria viene utilizzata solo in combinazione con altre lingue.

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

La proprietà più essenziale di sql è la capacità di accedere a database relazionali. Molte persone pensano addirittura che le espressioni "database elaborato tramite sql" e "database relazionale" siano sinonimi. Tuttavia, vedrai presto che c'è una differenza tra i due. 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 relazionali.

Il concetto di modello relazionale è stato proposto per la prima volta nel lavoro del Dr. EF Codd, pubblicato nel 1970. Descriveva l'apparato matematico per strutturare e gestire i dati e proponeva anche un modello astratto per rappresentare qualsiasi informazione reale. Prima di ciò, quando si utilizzava un database, era necessario tenere conto delle caratteristiche specifiche della memorizzazione delle informazioni in esso contenute. Se la struttura interna del database cambiava (ad esempio, per migliorare le prestazioni), i programmi applicativi dovevano essere rielaborati, anche se non vi erano modifiche a livello logico. Il modello relazionale ha permesso di separare le particolarità dell'archiviazione dei dati dal livello applicativo. In effetti, il modello non descrive in alcun modo come le informazioni vengono archiviate e accessibili. Viene preso in considerazione solo il modo in cui queste informazioni vengono percepite dall'utente. Grazie all'emergere del modello relazionale, l'approccio alla gestione dei dati è radicalmente cambiato: da arte si è trasformato in scienza, che ha portato a uno sviluppo rivoluzionario del settore.

Concetti base del modello relazionale

Secondo il modello relazionale, una relazione è una sorta di 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 rappresentano insiemi di tali attributi (sono chiamati tuple n-arie, o record) e corrispondenti alle righe del tavolo.

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

Facciamo un esempio. Supponiamo di avere un DomainDaysWeeks che contiene valori da lunedì a domenica. Se la relazione ha un attributo DayWeek corrispondente a questo dominio, allora qualsiasi tupla della relazione nella colonna DayWeek deve contenere uno dei valori elencati. L'aspetto dei valori gennaio o gatto non è consentito.

Nota: l'attributo deve avere uno dei valori validi. È vietato impostare 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 la scomposizione è inaccettabile per questi valori, ovvero non è possibile scomponerli in parti più piccole senza perdere il significato principale. Ad esempio, se il valore dell'attributo contenesse contemporaneamente lunedì e martedì, è possibile distinguere due parti, mantenendo il significato originale: giorno della settimana; pertanto, questo valore di attributo non è atomico. Tuttavia, se provi a suddividere il significato di "lunedì" in parti, ottieni una serie di singole lettere, da "P" a "K"; il significato originale è perso, quindi il significato di "lunedì" è atomico.

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

Nel suo lavoro originale, il Dr. Codd ha definito un insieme di otto operatori chiamati algebra relazionale. I quattro operatori — unione, moltiplicazione logica, differenza e prodotto cartesiano — sono stati riportati dalla teoria degli insiemi tradizionale; il resto degli operatori è stato creato appositamente per gestire le relazioni. Nel lavoro successivo del Dr. Codd, Chris Date e altri, sono stati proposti ulteriori operatori. Il resto di questo articolo discuterà tre operatori relazionali: produzione (progetto), vincoli (seleziona o restringi) e unisci (unisci).

sql e il modello relazionale

Ora che hai familiarità con il modello relazionale, dimentichiamolo. Certo, 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 c'è corrispondenza piena o letterale tra loro (questo è uno dei motivi per cui il termine relazione). Ad esempio, i concetti tabella sql e relazione non sono equivalenti, perché le tabelle possono contenere più righe identiche contemporaneamente, mentre le tuple identiche non sono consentite in una relazione. Inoltre, sql non fornisce domini relazionali, sebbene i tipi di dati svolgano un ruolo in una certa misura (alcuni influenti sostenitori del modello relazionale stanno ora cercando di includere i domini relazionali nel futuro standard sql).

Sfortunatamente, l'incoerenza tra sql e il modello relazionale ha generato negli anni molta confusione e polemiche. Ma poiché l'argomento principale dell'articolo è l'apprendimento di SQL e non il modello relazionale, questi problemi non vengono trattati qui. Ricorda solo che ci sono differenze tra i termini usati in sql e nel modello relazionale. Più avanti nell'articolo verranno utilizzati solo i termini accettati in sql. Invece di relazioni, attributi e tuple, useremo le loro controparti sql: tabelle, colonne e righe.

SQL statico vs dinamico

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

Come imparare sql

Ora sei pronto per scrivere le tue prime query sql. Se hai accesso al database tramite sql e vuoi usare i nostri esempi nella pratica, allora considera quanto segue: devi accedere come utente con permessi 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 concederti i diritti appropriati). Se non è possibile accedere al database tramite sql, non ti preoccupare: 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, tuttavia, è possibile distinguere tre gruppi principali tra loro: 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 lingue diverse.

Comandi del linguaggio di descrizione dei dati

Iniziamo con uno dei principali comandi ddl: create table. Esistono diversi tipi di tabelle in sql, le principali sono di due tipi: base (base) e selettiva (viste). Le tabelle che fanno riferimento ai dati della vita reale sono di base; selettivo - si tratta di tabelle "virtuali" create sulla base delle informazioni ottenute dalle tabelle di base; ma per gli utenti, i moduli sembrano tabelle normali. Il comando create table serve per creare tabelle di base.

Nel comando create table, è necessario specificare il nome della tabella, specificare l'elenco delle colonne e i tipi di dati che contengono. Potrebbero esserci altri elementi opzionali come parametri, ma prima diamo un'occhiata ai parametri di base. Mostriamo la forma sintattica più semplice per questo comando:

creare la tabella TableName (Column DataType);

create e table sono parole chiave sql; TableName, Column e DataType sono parametri formali al posto dei quali l'utente inserisce i valori effettivi ogni volta. 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 la colonna. Il punto e virgola alla fine è il separatore di comando. Deve completare qualsiasi espressione sql.

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

creare appuntamenti al tavolo (appointment_date date);

Dopo aver eseguito questo comando, verrà creata una tabella denominata appuntamenti con una colonna, appuntamento_data, in cui possono essere scritti dati di tipo data. Poiché in questo momento non sono stati inseriti dati, il numero di righe nella tabella è zero (con il comando create table viene data solo la definizione della tabella; i valori effettivi vengono inseriti dal comando insert, di cui si discuterà più avanti ).

I parametri appuntamenti e date_appuntamento sono chiamati identificatori perché impostano i nomi per oggetti di database specifici, in questo caso i nomi per la tabella e la colonna, rispettivamente. Esistono due tipi di identificatori in sql: regolari e delimitati. Gli identificatori evidenziati sono racchiusi tra virgolette e fanno distinzione tra maiuscole e minuscole. Gli identificatori regolari non sono contraddistinti da alcun carattere limitato e non fanno distinzione tra maiuscole e minuscole. Questo articolo si applica solo agli identificatori regolari.

I simboli usati per costruire gli identificatori devono seguire determinate regole. Negli identificatori ordinari, possono essere utilizzate 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 una cifra o un carattere di sottolineatura. È possibile utilizzare parole chiave sql separate per gli identificatori, ma non è consigliabile. L'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 già presente nel database; non puoi avere colonne con lo stesso nome nella stessa tabella. A proposito, tieni presente che appuntamenti e appuntamenti sono gli stessi nomi per sql. È impossibile creare un nuovo identificatore semplicemente cambiando le lettere maiuscole.

Sebbene una tabella possa avere solo una colonna, in pratica sono generalmente necessarie tabelle con più colonne. Il comando per creare una tabella di questo tipo in generale si presenta così:

creare la tabella TableName (Colonna DataType [(, ColumnDataType)]);

Le parentesi quadre vengono utilizzate per indicare elementi opzionali, quelle graffe contengono elementi che possono rappresentare un elenco di strutture a percorso singolo (quando si inserisce un vero comando sql, non vengono posizionate né l'una né l'altra parentesi). Questa sintassi consente di specificare un numero qualsiasi di colonne. Nota che c'è una virgola davanti al secondo elemento. Se ci sono più parametri nell'elenco, sono separati l'uno dall'altro da virgole.

creare appuntamenti tabella2 (data_appuntamento data, ora appuntamento_ora, descrizione varchar (256));

Questo comando crea la tabella degli appuntamenti2 (la nuova tabella deve avere un nome diverso, poiché la tabella degli appuntamenti è già presente nel database). Come la prima tabella, ha una colonna date_appuntamento per registrare la data degli incontri; inoltre è stata aggiunta la colonna appuntamento_ora per registrare gli orari di questi appuntamenti. Il parametro description è una stringa di testo che può contenere fino a 256 caratteri. Il tipo specificato per questo parametro è varchar (abbreviazione di variazione del carattere), poiché non è noto in anticipo quanto spazio sarà necessario per la registrazione, ma è chiaro che la descrizione non richiederà più di 256 caratteri. Quando si descrive un parametro nel 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 che abbiamo esaminato, la voce di comando è formattata in modo diverso. Se nel primo caso il comando è posto completamente su una riga, allora nel secondo dopo la prima parentesi aperta la scrittura continua da una nuova riga, e la definizione di ogni colonna successiva inizia da una nuova riga. Non ci sono requisiti speciali per la formattazione dei record in sql. Suddividere un record in righe lo rende più facile da leggere. Il linguaggio sql consente, durante la scrittura dei comandi, non solo di dividere la riga di comando per riga, 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 a più colonne. All'inizio dell'articolo è stata mostrata la tabella dei dipendenti. Contiene le seguenti colonne: cognome, nome, data di assunzione, reparto, categoria e stipendio dell'anno. Il seguente comando sql viene utilizzato per definire questa tabella:

creare dipendenti della tabella (carattere cognome (13) non nullo, carattere nome (10) non nullo, data_assunzione, carattere filiale (15), grado_piccolo int, stipendio decimale (9, 2));

Ci sono diversi nuovi elementi nella squadra. Innanzitutto è l'espressione not null alla fine della definizione delle colonne cognome e nome. Con l'aiuto di tali strutture, vengono stabiliti requisiti che devono essere soddisfatti. In questo caso viene indicato che i campi cognome e nome devono essere compilati in fase di inserimento; non puoi lasciare queste colonne vuote (questo è abbastanza logico: come puoi identificare un dipendente senza conoscerne il nome?).

Inoltre, nell'esempio sono presenti tre nuovi tipi di dati: carattere, smallint e decimal. Finora abbiamo parlato poco di tipi. Sebbene non ci siano domini relazionali in sql, ha un set 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 durante la digitazione, tuttavia, il controllo del tipo in sql è meno rigoroso rispetto ad altre lingue.

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, datetime e intervalli. Abbiamo elencato tutte le varietà, ma in questo articolo ne verranno esaminate 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 (ad esempio i parametri come gli intervalli di tempo sono separati in un gruppo separato). Nell'esempio precedente, abbiamo già incontrato due tipi di dati dal gruppo datetime: data e ora.

Il prossimo tipo di dati con cui hai già familiarità è il carattere variabile (o solo varchar); appartiene al gruppo delle stringhe di caratteri. Se varchar viene utilizzato per archiviare stringhe di lunghezza variabile, il tipo char trovato nel terzo esempio è destinato all'archiviazione di stringhe con un numero fisso di caratteri. Ad esempio, la colonna last_name conterrà stringhe di 13 caratteri, indipendentemente dall'effettivo cognome inserito, sia esso 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é hai dovuto introdurre due tipi? Il fatto è che in pratica di solito devi trovare un compromesso tra prestazioni e risparmio di spazio su disco. Di norma, l'utilizzo di stringhe di lunghezza fissa consente di aumentare la velocità di accesso, tuttavia, se le stringhe sono troppo lunghe, lo spazio su disco viene sprecato. Riservare 256 caratteri per ogni riga di commento negli appuntamenti2 potrebbe non essere razionale; il più delle volte, le linee saranno significativamente più corte. D'altra parte, anche i cognomi hanno lunghezze diverse, ma solitamente richiedono circa 13 caratteri; in questo caso le perdite saranno minime. C'è una buona regola pratica: se sai che la lunghezza della stringa cambia leggermente o è relativamente piccola, usa char; altrimenti, varchar.

I successivi due nuovi tipi di dati, smallint e decimal, appartengono al gruppo dei valori numerici precisi. smallint è l'abbreviazione di un numero intero piccolo. Sql fornisce anche un tipo di dati intero. La presenza di due tipi 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; tuttavia, in pratica, non sempre si sa quali valori massimi possono avere i parametri. Se non sono presenti tali informazioni, utilizzare integer. Lo spazio effettivo allocato per la memorizzazione dei parametri smallint e integer e il corrispondente intervallo di valori per questi parametri sono specifici della piattaforma.

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

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

La barra laterale "Creazione di una tabella" mostra il riepilogo completo della voce del comando di creazione della tabella. Contiene nuovi elementi e mostra il formato per tutti i tipi di dati considerati (In linea di principio, ci sono altri tipi di dati, ma finora non li consideriamo).

All'inizio, può sembrare che la sintassi dei comandi sql sia troppo complicata. Ma puoi facilmente capirlo se studi attentamente gli esempi sopra. Un elemento aggiuntivo è apparso sul diagramma: una barra verticale; serve a delineare progetti alternativi. In altre parole, quando si definisce ogni colonna, è necessario selezionare il tipo di dati appropriato (come ricordi, le parentesi quadre racchiudono parametri opzionali e le parentesi graffe racchiudono costrutti che possono essere ripetuti molte volte; questi caratteri speciali non sono scritti nei comandi sql reali ). La prima parte del diagramma contiene i nomi completi per i tipi di dati, la seconda i loro nomi abbreviati; in pratica, puoi usarne uno qualsiasi.

La prima parte dell'articolo è terminata. La seconda sarà dedicata allo studio dei comandi di inserimento, selezione, aggiornamento ed eliminazione dml. Coprirà anche le condizioni di selezione dei dati, il confronto e gli operatori logici, l'uso di valori nulli e la logica ternaria.

Creazione di una tabella. La sintassi per il comando create table: tra parentesi quadre ci sono parametri opzionali, tra parentesi graffe - costrutti ripetuti.

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

Nome Sql segreto

Nei primi anni '70. IBM ha iniziato a mettere in pratica il modello di database relazionale del Dr. Codd. Donald Chamberlin e un gruppo di altri nella divisione di ricerca avanzata hanno creato un linguaggio prototipo chiamato linguaggio di query inglese strutturato, o semplicemente sequel. Successivamente è stato ampliato e perfezionato. La nuova versione proposta da IBM si chiama sequel/2. È stato utilizzato come interfaccia software (api) per la progettazione del primo sistema di database relazionale da ibm - system / r. Per motivi legali, IBM ha deciso di cambiare il nome: invece di sequel / 2, usa sql (linguaggio di query strutturato). Questa abbreviazione è spesso pronunciata come "si-ku-el".

Ci sono differenze significative tra i primi prototipi di sequel e l'ormai riconosciuto standard sql in varie organizzazioni. Jim Melton, che è stato coinvolto nella preparazione dello standard sql-92, ha anche affermato che molti si sbagliano, credendo 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). Quindi, in effetti, sql è solo un nome, una sequenza di lettere s-q-l e niente di più.

Buono cattivo

Principali articoli correlati