Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 7, XP
  • Le query SQL selezionano da. Utilizzo della lunghezza della stringa

Le query SQL selezionano da. Utilizzo della lunghezza della stringa

Ogni sviluppatore web deve conoscere SQL per scrivere query sul database. E, sebbene phpMyAdmin non sia stato cancellato, spesso è necessario sporcarsi le mani per scrivere SQL di basso livello.

Ecco perché ci siamo preparati breve escursione sulle basi di SQL. Iniziamo!

1. Crea una tabella

L'istruzione CREATE TABLE viene utilizzata per creare tabelle. Gli argomenti devono essere i nomi delle colonne, nonché i relativi tipi di dati.

Creiamo una semplice tabella per nome mese. È composto da 3 colonne:

  • id– Numero del mese nell'anno solare (intero).
  • nome– Nome del mese (stringa, massimo 10 caratteri).
  • giorni– Numero di giorni in questo mese (numero intero).

Ecco come apparirebbe la query SQL corrispondente:

CREATE TABLE mesi (id int, nome varchar(10), giorni int);

Inoltre, quando si creano tabelle, è consigliabile aggiungere una chiave primaria per una delle colonne. Ciò manterrà i record univoci e velocizzerà le richieste di recupero. Nel nostro caso lasciamo che il nome del mese sia univoco (colonna nome)

CREATE TABLE mesi (id int, nome varchar(10), giorni int, PRIMARY KEY (nome));

data e ora
Tipo di datiDescrizione
DATAValori della data
APPUNTAMENTOValori di data e ora precisi al minuto
TEMPOValori temporali

2. Inserimento di righe

Ora compiliamo la nostra tabella mesi informazioni utili. L'aggiunta di record a una tabella viene eseguita utilizzando l'istruzione INSERT. Esistono due modi per scrivere questa istruzione.

Il primo metodo consiste nel non specificare i nomi delle colonne in cui verranno inseriti i dati, ma specificare solo i valori.

Questo metodo di registrazione è semplice, ma non sicuro, poiché non vi è alcuna garanzia che man mano che il progetto si espande e la tabella viene modificata, le colonne saranno nello stesso ordine di prima. Un modo sicuro (e allo stesso tempo più macchinoso) di scrivere un'istruzione INSERT richiede di specificare sia i valori che l'ordine delle colonne:

Ecco il primo valore nell'elenco VALORI corrisponde al primo il nome specificato colonna, ecc.

3. Estrazione dei dati dalle tabelle

L'istruzione SELECT è nostra migliore amico quando vogliamo ottenere dati dal database. Viene utilizzato molto spesso, quindi presta molta attenzione a questa sezione.

L'uso più semplice dell'istruzione SELECT è una query che restituisce tutte le colonne e le righe di una tabella (ad esempio, tabelle per nome caratteri):

SELEZIONA * DA "caratteri"

Il simbolo asterisco (*) significa che vogliamo ottenere dati da tutte le colonne. Quindi vile Dati SQL solitamente sono costituiti da più tabelle, è necessario specificare la parola chiave FROM, seguita dal nome della tabella separato da uno spazio.

A volte non vogliamo ottenere dati da non tutte le colonne di una tabella. Per fare ciò, al posto dell'asterisco (*), dobbiamo scrivere i nomi delle colonne desiderate, separati da virgole.

SELEZIONA ID, nome DAL mese

Inoltre, in molti casi desideriamo che i risultati risultanti vengano ordinati in un ordine specifico. In SQL lo facciamo usando ORDER BY. Può accettare un modificatore opzionale: ASC (predefinito) ordinamento in ordine crescente o DESC, ordinamento in ordine discendente:

SELEZIONA id, nome DA mese ORDINA PER nome DESC

Quando usi ORDER BY, assicurati che sia l'ultimo nell'istruzione SELECT. Altrimenti verrà visualizzato un messaggio di errore.

4. Filtraggio dei dati

Hai imparato come selezionare da un database utilizzando Interrogazione SQL colonne rigorosamente definite, ma cosa succede se abbiamo bisogno anche di righe specifiche? La clausola WHERE qui viene in soccorso, permettendoci di filtrare i dati a seconda della condizione.

In questa query selezioniamo solo quei mesi dalla tabella mese, in cui sono trascorsi più di 30 giorni utilizzando l'operatore maggiore di (>).

SELECT id, nome FROM mese WHERE giorni > 30

5. Filtraggio avanzato dei dati. Operatori AND e OR

In precedenza, utilizzavamo il filtraggio dei dati utilizzando un unico criterio. Per un filtraggio dei dati più complesso è possibile utilizzare gli operatori AND e OR e gli operatori di confronto (=,<,>,<=,>=,<>).

Qui abbiamo una tabella contenente i quattro album più venduti di tutti i tempi. Scegliamo quelli classificati come rock e che hanno venduto meno di 50 milioni di copie. Questo può essere fatto facilmente inserendo un operatore AND tra queste due condizioni.


SELEZIONA * FROM album DOVE genere = "rock" E vendite_in_milioni<= 50 ORDER BY released

6. Nel/tra/Mi piace

WHERE supporta anche diversi comandi speciali, che consentono di controllare rapidamente le query utilizzate più frequentemente. Eccoli:

  • IN – serve per indicare una serie di condizioni, ognuna delle quali può essere soddisfatta
  • BETWEEN: controlla se un valore rientra nell'intervallo specificato
  • MI PIACE: cerca modelli specifici

Ad esempio, se vogliamo selezionare gli album con pop E anima musica, possiamo usare IN("value1","value2") .

SELEZIONA * DAGLI album DOVE si trova il genere ("pop","soul");

Se vogliamo ottenere tutti gli album pubblicati tra il 1975 ed il 1985 dobbiamo scrivere:

SELEZIONA * DAGLI album DOVE sono stati pubblicati TRA IL 1975 E IL 1985;

7. Funzioni

SQL è ricco di funzioni che fanno ogni sorta di cose utili. Ecco alcuni dei più comunemente usati:

  • COUNT() – restituisce il numero di righe
  • SUM(): restituisce la somma totale di una colonna numerica
  • AVG(): restituisce la media di un insieme di valori
  • MIN() / MAX() – Ottiene il valore minimo/massimo da una colonna

Per ottenere l'anno più recente nella nostra tabella, dobbiamo scrivere la seguente query SQL:

SELEZIONA MAX(pubblicato) DAgli album;

8. Sottoquery

Nel paragrafo precedente abbiamo imparato come eseguire semplici calcoli con i dati. Se vogliamo utilizzare il risultato di questi calcoli, non possiamo fare a meno delle query annidate. Diciamo che vogliamo produrre artista, album E Anno di pubblicazione per l'album più vecchio nella tabella.

Sappiamo come ottenere queste colonne specifiche:

SELEZIONA artista, album, pubblicato DA album;

Sappiamo anche come ottenere il primo anno:

SELEZIONA MIN(pubblicato) DALL'album;

Tutto ciò che serve ora è combinare le due query utilizzando WHERE:

SELEZIONA artista,album,pubblicato FROM album DOVE pubblicato = (SELECT MIN(pubblicato) FROM album);

9. Unione delle tabelle

Nei database più complessi, sono presenti più tabelle correlate tra loro. Ad esempio, di seguito sono riportate due tabelle sui videogiochi ( videogiochi) e sviluppatori di videogiochi ( game_developers).


Sul tavolo videogiochi c'è una colonna per gli sviluppatori ( ID_sviluppatore), ma contiene un numero intero, non il nome dello sviluppatore. Questo numero rappresenta l'identificatore ( id) dello sviluppatore corrispondente dalla tabella degli sviluppatori di giochi ( game_developers), collegando logicamente due elenchi, permettendoci di utilizzare le informazioni memorizzate in entrambi contemporaneamente.

Se vogliamo creare una query che restituisca tutto ciò che dobbiamo sapere sui giochi, possiamo utilizzare una INNER JOIN per collegare le colonne di entrambe le tabelle.

SELEZIONA video_games.name, video_games.genre, game_developers.name, game_developers.country DA video_games INTERNO ISCRIVITI a game_developers ON video_games.developer_id = game_developers.id;

Questo è il tipo JOIN più semplice e più comune. Esistono molte altre opzioni, ma queste si applicano a casi meno comuni.

10. Alias

Se guardi l'esempio precedente, noterai che ci sono due colonne chiamate nome. Questo crea confusione, quindi impostiamo un alias su una delle colonne ripetute, come questa nome dal tavolo game_developers verrà chiamato sviluppatore.

Possiamo anche abbreviare la query creando alias i nomi delle tabelle: videogiochi chiamiamo Giochi, game_developers - sviluppatori:

SELEZIONA games.name, games.genre, devs.name AS sviluppatore, devs.country DA video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Aggiornamento dei dati

Spesso abbiamo bisogno di modificare i dati in alcune righe. In SQL questo viene fatto utilizzando l'istruzione UPDATE. L'istruzione UPDATE è composta da:

  • La tabella in cui si trova il valore sostitutivo;
  • Nomi delle colonne e loro nuovi valori;
  • Le righe selezionate utilizzando WHERE che vogliamo aggiornare. Se ciò non viene fatto, tutte le righe della tabella cambieranno.

Di seguito la tabella serie TV con le serie TV e i loro ascolti. Tuttavia, nella tabella si è insinuato un piccolo errore: nonostante la serie Game of Thrones ed è descritta come una commedia, in realtà non lo è. Risolviamolo!

Dati tabella serie_tv UPDATE serie_tv SET genere = "dramma" WHERE id = 2;

12. Cancellazione dei dati

Eliminare una riga di tabella utilizzando SQL è un processo molto semplice. Tutto quello che devi fare è selezionare la tabella e la riga che desideri eliminare. Eliminiamo l'ultima riga nella tabella dell'esempio precedente serie TV. Questo viene fatto utilizzando l'istruzione >DELETE.

ELIMINA DA serie_tv DOVE id = 4

Fai attenzione quando scrivi l'istruzione DELETE e assicurati che sia presente la clausola WHERE, altrimenti tutte le righe della tabella verranno cancellate!

13. Elimina una tabella

Se vogliamo eliminare tutte le righe ma lasciare la tabella stessa, utilizziamo il comando TRUNCATE:

TRONCARE TABELLA nome_tabella;

Nel caso in cui desideriamo effettivamente eliminare sia i dati che la tabella stessa, il comando DROP ci sarà utile:

DROP TABLE nome_tabella;

Stai molto attento con questi comandi. Non possono essere cancellati!/p>

Questo conclude il nostro tutorial SQL! Ci sono molte cose di cui non abbiamo parlato, ma quello che già sai dovrebbe essere sufficiente per fornirti alcune competenze pratiche per la tua carriera nel web.

Tipi di datiSQL(Come mai?Pag, come nella norma)

Tipi di stringa

Tipi di dati numerici

Contanti, Simboli, Tipi binari dati

Tipo booleano. Trasferimenti

Esempi di semplici query SQL

Le query SELECT più semplici

Istruzione SELEZIONATA linguaggio SQLè l'operatore più importante e utilizzato più frequentemente. È progettato per recuperare informazioni dalle tabelle del database. La sintassi semplificata per l'istruzione SELECT è la seguente.

SELEZIONA [ TUTTO | DISTINCT] select_item_commalist

FROM table_reference_commalist

[WHERE espressione_condizionale]

[GRUPPO PER nome_colonna_commalista]

[ HAVING espressione_condizionale ]

[ ORDINA PER order_item_commalist ]

IN parentesi quadre sono indicati gli elementi che eventualmente mancano nella richiesta.

La parola chiave SELECT indica al database che questa istruzione è una richiesta per recuperare informazioni.

Dopo la parola SELECT, i nomi dei campi vengono elencati separati da virgole ( elenco degli attributi), i cui contenuti sono richiesti.

Obbligatorio parola chiave nella clausola della query SELECT c'è la parola FROM. La parola chiave FROM è seguita da un elenco separato da virgole di nomi di tabelle da cui vengono recuperate le informazioni.

Ad esempio, seleziona il titolo, la descrizione del film

Qualsiasi query SQL deve terminare con il simbolo “;” (punto e virgola). Il risultato di questa query sarà una tabella...

L'ordine delle colonne in questa tabella corrisponde all'ordine dei campi specificati nella query

Se hai bisogno di ritirarti significati di tutti, colonne della tabella, puoi utilizzare il simbolo “*” (asterisco) invece di elencarne i nomi.

SELEZIONA * DA film;

IN in questo caso Il risultato della query sarà l'intera tabella dei film.

Attiriamo ancora una volta la vostra attenzione sul fatto che le tabelle ottenute come risultato della query SQL non soddisfano pienamente la definizione rapporto relazionale. In particolare, possono contenere tuple (righe) con gli stessi valori attributi.

Ad esempio, la query "elenco dei nomi degli attori" può essere scritta come segue.

seleziona nome dall'attore;

Il risultato sarà una tabella, nella tabella ci sono linee identiche. Per escludere record duplicati dal risultato di una query SELECT, utilizzare la parola chiave DISTINCT.

Se SELEZIONA interrogazione recupera più campi, DISTINCT elimina le righe duplicate in cui i valori di tutti i campi selezionati sono identici.

La query precedente può essere scritta come segue.

seleziona un nome distinto dall'attore;

Di conseguenza, otteniamo una tabella in cui sono escluse le righe duplicate.

La parola chiave ALL fa l'opposto di DISTINCT, ovvero nell'output vengono incluse righe duplicate. La modalità specificata dalla parola chiave ALL è quella predefinita, quindi praticamente non viene utilizzata per questi scopi nelle query reali.

L'utilizzo di una clausola WHERE in un'istruzione SELECT consente di specificare un'espressione condizionale (predicato) che restituisce vero o falso per i valori del campo riga della tabella a cui fa riferimento l'istruzione SELECT. La clausola WHERE determina quali righe delle tabelle specificate devono essere selezionate. La tabella risultante dalla query include solo le righe per le quali la condizione (predicato) specificata nella clausola WHERE risulta vera.

Esempio: scrivere una query che recuperi i cognomi di tutti gli attori con il nome PENELOPE

seleziona cognome dall'attore

dove nome="PENELOPE";

Le condizioni specificate nella clausola WHERE possono utilizzare operazioni di confronto definite dagli operatori = (uguale), > (maggiore di),< (меньше), >= (maggiore o uguale a),<- (меньше или равно), <>(non uguale), nonché gli operatori logici AND, OR e NOT.

Ad esempio, una richiesta per ottenere nomi e descrizioni di cortometraggi (di durata inferiore a 60 minuti), il cui noleggio costa meno di 3 dollari, sarà simile a questa:

seleziona titolo, descrizione dal film

dove lunghezza< 60 and rental_rate < 3

Il risultato di questa query è simile a:

noleggio - noleggio

inventario - inventario, scorte

negozio: magazzino, negozio

Ognuno di noi incontra e utilizza regolarmente vari database. Quando selezioniamo un indirizzo email, stiamo lavorando con un database. I database vengono utilizzati dai servizi di ricerca, dalle banche per archiviare i dati dei clienti, ecc.

Ma nonostante l’uso costante dei database, anche per molti sviluppatori di sistemi software ci sono ancora molti punti ciechi dovuti alle diverse interpretazioni degli stessi termini. Daremo una breve definizione dei termini di base del database prima di trattare il linguaggio SQL. COSÌ.

Banca dati - un file o una raccolta di file per memorizzare strutture di dati ordinate e le loro relazioni. Molto spesso un sistema di gestione è chiamato database: un database è semplicemente un archivio di informazioni in un formato specifico e può funzionare con vari DBMS.

Tavolo - Immaginiamo una cartella in cui sono archiviati i documenti, raggruppati secondo una determinata caratteristica, ad esempio un elenco di ordini dell'ultimo mese. Questa è una tabella in un computer. Una tabella separata ha il proprio nome univoco.

Tipo di dati - il tipo di informazioni che è possibile archiviare in una colonna o riga separata. Questi possono essere numeri o testo di un determinato formato.

Colonna e riga- Abbiamo tutti lavorato con fogli di calcolo, che hanno anche righe e colonne. Qualsiasi database relazionale funziona con le tabelle in modo simile. Le righe sono talvolta chiamate record.

Chiave primaria- Ogni riga di una tabella può avere una o più colonne per identificarla in modo univoco. Senza una chiave primaria, è molto difficile aggiornare, modificare ed eliminare le righe pertinenti.

Cos'è l'SQL?

SQL(Inglese - linguaggio di query strutturato) è stato sviluppato solo per lavorare con i database ed è attualmente lo standard per tutti i DBMS più diffusi. La sintassi del linguaggio è composta da un numero limitato di operatori ed è facile da imparare. Ma, nonostante la sua apparente semplicità, consente la creazione di query SQL per operazioni complesse con un database di qualsiasi dimensione.

Dal 1992 esiste uno standard generalmente accettato chiamato ANSI SQL. Definisce la sintassi e le funzioni di base degli operatori ed è supportato da tutti i leader del mercato DBMS, come ORACLE. È impossibile considerare tutte le funzionalità del linguaggio in un breve articolo, quindi considereremo brevemente solo le query SQL di base. Gli esempi mostrano chiaramente la semplicità e le capacità del linguaggio:

  • creazione di database e tabelle;
  • campionamento dei dati;
  • aggiunta di record;
  • modifica e cancellazione delle informazioni.

Tipi di dati SQL

Tutte le colonne in una tabella di database memorizzano lo stesso tipo di dati. I tipi di dati in SQL sono gli stessi di altri linguaggi di programmazione.

Creiamo tabelle e database

Esistono due modi per creare nuovi database, tabelle e altre query in SQL:

  • Istruzioni SQL tramite la console DBMS
  • Utilizzando gli strumenti di amministrazione interattivi inclusi con il server del database.

L'operatore crea un nuovo database CREA BANCA DATI<наименование базы данных>; . Come puoi vedere, la sintassi è semplice e concisa.

Creiamo tabelle all'interno del database utilizzando l'istruzione CREATE TABLE con i seguenti parametri:

  • nome della tabella
  • nomi di colonne e tipi di dati

Ad esempio, creiamo una tabella Commodity con le seguenti colonne:

Crea una tabella:

CREA TABELLA Merce

(id_prodotto CHAR(15) NON NULL,

id_venditore CHAR(15) NON NULL,

nome_prodotto CHAR(254) NULL,

prezzo_commodity DECIMAL(8,2) NULL,

merce_desc VARCHAR(1000) NULL);

La tabella è composta da cinque colonne. Dopo il nome segue il tipo di dati, le colonne sono separate da virgole. Il valore della colonna può accettare valori vuoti (NULL) o deve essere riempito (NOT NULL), e questo viene determinato al momento della creazione della tabella.

Recupero dei dati da una tabella

L'operatore di recupero dati è la query SQL più comunemente utilizzata. Per ottenere informazioni, dobbiamo indicare cosa vogliamo selezionare da tale tabella. Innanzitutto un semplice esempio:

SELEZIONA nome_prodotto FROM Prodotto

Dopo l'istruzione SELECT specifichiamo il nome della colonna per ottenere informazioni e FROM definisce la tabella.

Il risultato della query saranno tutte le righe della tabella con i valori Commodity_name nell'ordine in cui sono stati inseriti nel database, ad es. senza alcun ordinamento. Per ordinare il risultato viene utilizzata una clausola ORDER BY aggiuntiva.

Per eseguire una query su più campi, elencarli separati da virgole, come nell'esempio seguente:

SELEZIONA id_prodotto, nome_prodotto, prezzo_prodotto FROM Prodotto

È possibile ottenere il valore di tutte le colonne di una riga come risultato della query. Per fare ciò, utilizzare il segno "*":

SELEZIONA * DA Merce

  • Inoltre SELECT supporta:
  • Ordinamento dei dati (operatore ORDER BY)
  • Selezione in base alle condizioni (DOVE)
  • Termine di raggruppamento (GROUP BY)

Aggiungi una riga

Per aggiungere una riga a una tabella vengono utilizzate query SQL con l'operatore INSERT. L'addizione può essere effettuata in tre modi:

  • aggiungi una nuova intera riga;
  • parte di corda;
  • risultati dell'interrogazione.

Per aggiungere una riga intera, è necessario specificare il nome della tabella e i valori delle colonne (campi) della nuova riga. Ecco un esempio:

INSERT INTO Commodity VALUES("106 ", "50", "Coca-Cola", "1.68", "No Alcogol ,)

L'esempio aggiunge un nuovo prodotto alla tabella. I valori sono elencati dopo VALORI per ciascuna colonna. Se non esiste un valore corrispondente per la colonna, è necessario specificare NULL. Le colonne vengono popolate con valori nell'ordine specificato al momento della creazione della tabella.

Se aggiungi solo parte di una riga, devi specificare esplicitamente i nomi delle colonne, come nell'esempio:

INSERT INTO Commodity (commodity_id, seller_id, commodity_name)

VALORI("106", '50", "Coca-Cola")

Abbiamo inserito solo gli identificatori del prodotto, del fornitore e il suo nome e abbiamo lasciato vuoti i campi rimanenti.

Aggiunta dei risultati della query

INSERT viene utilizzato principalmente per accodare righe, ma può anche essere utilizzato per accodare i risultati di un'istruzione SELECT.

Modifica dei dati

Per modificare le informazioni nei campi di una tabella di database, è necessario utilizzare l'istruzione UPDATE. L'operatore può essere utilizzato in due modi:

  • Tutte le righe della tabella vengono aggiornate.
  • Solo per una linea specifica.

UPDATE è composto da tre elementi principali:

  • tabella in cui è necessario apportare modifiche;
  • nomi dei campi e i loro nuovi valori;
  • condizioni per la selezione delle righe da modificare.

Diamo un'occhiata a un esempio. Supponiamo che il prezzo di un prodotto con ID=106 sia cambiato, quindi questa riga deve essere aggiornata. Scriviamo il seguente operatore:

UPDATE Commodity SET commodity_price = "3.2" WHERE commodity_id = "106"

Abbiamo specificato il nome della tabella, nel nostro caso Commodity, dove verrà eseguito l'aggiornamento, quindi dopo SET - il nuovo valore della colonna e abbiamo trovato il record desiderato specificando il valore ID richiesto in WHERE.

Per modificare più colonne, l'istruzione SET è seguita da più coppie colonna-valore separate da virgole. Consideriamo un esempio in cui vengono aggiornati il ​​nome e il prezzo di un prodotto:

UPDATE Commodity SET nome_commodity='Fanta', prezzo_commodity = "3.2" WHERE id_commodity = "106"

Per rimuovere informazioni in una colonna è possibile assegnarle il valore NULL se la struttura della tabella lo consente. Va ricordato che NULL è esattamente il valore "nessun" e non zero sotto forma di testo o numero. Rimuoviamo la descrizione del prodotto:

UPDATE Commodity SET commodity_desc = NULL WHERE commodity_id = "106"

Rimozione di righe

Le query SQL per eliminare le righe in una tabella vengono eseguite utilizzando l'istruzione DELETE. Esistono due casi d'uso:

  • Alcune righe della tabella vengono cancellate;
  • Tutte le righe della tabella vengono eliminate.

Un esempio di eliminazione di una riga da una tabella:

DELETE FROM Commodity WHERE commodity_id = "106"

Dopo DELETE FROM indichiamo il nome della tabella in cui verranno cancellate le righe. La clausola WHERE contiene la condizione in base alla quale le righe verranno selezionate per l'eliminazione. Nell'esempio eliminiamo la linea di prodotti con ID=106. Specificare DOVE è molto importante perché omettere questa istruzione cancellerà tutte le righe nella tabella. Ciò vale anche per modificare il valore dei campi.

L'istruzione DELETE non specifica nomi di colonna o metacaratteri. Elimina completamente le righe, ma non può eliminare una singola colonna.

Utilizzo di SQL in Microsoft Access

Tipicamente utilizzato in modo interattivo per creare tabelle, database, per gestire, modificare, analizzare dati in un database e per implementare query di accesso SQL attraverso un comodo progettista di query interattivo (Query Designer), utilizzando il quale è possibile costruire ed eseguire immediatamente istruzioni SQL di qualsiasi complessità.

È supportata anche la modalità di accesso al server, in cui il DBMS di accesso può essere utilizzato come generatore di query SQL su qualsiasi origine dati ODBC. Questa funzionalità consente alle applicazioni di Access di interagire con qualsiasi formato.

Estensioni SQL

Poiché le query SQL non hanno tutte le funzionalità dei linguaggi di programmazione procedurali, come loop, ramificazioni, ecc., i produttori di DBMS stanno sviluppando la propria versione di SQL con funzionalità avanzate. Innanzitutto si tratta del supporto per procedure memorizzate e operatori standard di linguaggi procedurali.

I dialetti più comuni della lingua:

  • Database Oracle - PL/SQL
  • Interbase, Firebird-PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL-PL/pgSQL.

SQL su Internet

Il DBMS MySQL è distribuito sotto la licenza GNU General Public License gratuita. Esiste una licenza commerciale con la possibilità di sviluppare moduli personalizzati. Come componente, è incluso negli insiemi di server Internet più popolari, come XAMPP, WAMP e LAMP, ed è il DBMS più popolare per lo sviluppo di applicazioni su Internet.

È stato sviluppato da Sun Microsystems ed è attualmente supportato da Oracle Corporation. Sono supportati database con dimensioni fino a 64 terabyte, sintassi SQL:2003 standard, replica di database e servizi cloud.

Nota:
Tutti gli articoli nella categoria tutorial corrente di SQL utilizzano esempi e problemi basati su un database di training.

L'istruzione SELECT è responsabile del recupero dei dati dalle tabelle del database in SQL. Questo articolo ne discuterà la sintassi e gli esempi più semplici.

Per eseguire una semplice query sul database è sufficiente specificare solo 2 condizioni (frasi):

  • Quali colonne devono essere scaricate;
  • Da quale tabella devono essere scaricate le colonne?

In SQL appare così:

SELEZIONARE<Перечень столбцов>DA<Перечень таблиц>

I nomi delle colonne vengono elencati, separati da virgole, immediatamente dopo la parola chiave SELECT. Questa è seguita dalla parola chiave FROM con i nomi delle tabelle. Se sono presenti più tabelle, queste vengono indicate anche separate da virgole.

Nota:

Le query su più tabelle non sono trattate in questo materiale, poiché questo argomento si riferisce all'unione di tabelle o richiede la conoscenza della clausola WHERE.

Colonne e tabelle possono essere elencate in qualsiasi ordine e ripetute più volte.

Connessione al database

Spesso su un server è presente più di un database. Pertanto, prima di eseguire una richiesta, sarà necessario connettersi ad un database specifico. Impariamo come farlo in SQL Server Management Studio:

Ora qualsiasi richiesta verrà eseguita nel suo contesto.

Creazione di una query SQL

Completiamo il primo compito:

È necessario ottenere i cognomi, i nomi e i patronimici di tutti i dipendenti.

Nel campo della query, inserisci il seguente codice SQL:

SELEZIONARE Cognome, nome, patronimico DA Dipendenti

La prima riga della query contiene le colonne da impaginare, la seconda riga specifica la tabella delle colonne. In effetti, il codice assomiglia alla solita frase: “Seleziona le colonne Cognome, Nome, Secondo nome dalla tabella Dipendenti”.

Fare clic sul pulsante Esegui nel pannello dell'editor SQL. Il risultato della sua esecuzione dovrebbe apparire nella parte inferiore della finestra di richiesta. Sotto il risultato vengono visualizzati lo stato e la durata della richiesta, nonché il numero di righe scaricate. Se fai tutto correttamente, lo stato sarà "Richiesta completata con successo" e il numero di righe sarà 39.

Spiegazioni sulla sintassi

Non importa in quale caso verranno scritte le parole chiave e i nomi. Questa opzione è completamente identica alla precedente:

Seleziona cognome, nome, patronimico dei dipendenti

Inoltre, non è necessario iniziare ciascuna condizione su una nuova riga.

Altre opzioni di richiesta

Prima di scrivere il codice abbiamo parlato della necessità di connettersi al database. Ma in questo caso particolare puoi fare a meno della connessione (in alcuni programmi questo è un requisito obbligatorio). È sufficiente specificare inoltre il nome del database e il nome dello schema (dbo per impostazione predefinita) nella clausola FROM:

SELEZIONARE Cognome, nome, patronimico DA CallCenter.dbo.Employees

Ora descriviamo la sintassi di una semplice istruzione SELECT (le parti facoltative della query sono racchiuse tra parentesi quadre):

SELECT [Nome_tabella.]Nome_colonna[, [Nome_tabella.]Nome_colonna2 ...] FROM [[Nome_database.]Nome_schema.]Nome_tabella

Nomi aggiuntivi ingombrano il codice di richiesta, quindi è possibile utilizzare un'istruzione USE. Passerà il contesto al database specificato:

UTILIZZARE CallCenter SELEZIONARE Cognome, Nome, Patronimico DA Dipendenti

Questo approccio garantirà la connessione al database desiderato.

Nota:

I nomi di colonne e tabelle dettagliati possono contenere spazi tra le parole. In questi casi, i loro nomi sono racchiusi tra parentesi quadre in modo che la query funzioni correttamente. Ad esempio, [nome colonna].

SQL: istruzione SELECT

Il nome SQL (Structured Query Language) riflette il fatto che le query sono l'elemento più comunemente utilizzato di SQL. Una query è un'istruzione che invia un comando a un sistema di gestione del database (DBMS) per manipolare o visualizzare determinate informazioni. Tutte le query per selezionare i dati in SQL vengono costruite utilizzando l'istruzione SELECT. Permette di eseguire controlli ed elaborazioni di dati piuttosto complessi.

Una query può restituire dati da una colonna specifica o da tutte le colonne di una tabella. Per creare una semplice query SELECT, è necessario specificare il nome della colonna e il nome della tabella.

Sintassi dell'istruzione SELECT

SELEZIONA elenco_colonne DA nome_tabella

SELEZIONARE Una parola chiave che indica al database che l'istruzione è una query. Tutte le query iniziano con questa parola, seguita da uno spazio.

Elenco_colonne Elenco delle colonne della tabella selezionate dalla query. Le colonne non specificate nell'istruzione non verranno incluse nel risultato. Se è necessario visualizzare i dati di tutte le colonne, è possibile utilizzare la notazione abbreviata. Un asterisco (*) indica un elenco completo di colonne.

DA nome_tabella Una parola chiave che deve essere presente in ogni richiesta. Dopo di esso, separato da uno spazio, viene indicato il nome della tabella che costituisce l'origine dati.

Il codice tra parentesi è facoltativo nell'istruzione SELECT. È necessario definire più accuratamente la richiesta.

È inoltre necessario dire che il codice SQL non fa distinzione tra maiuscole e minuscole. Ciò significa che il record SELECT può essere scritto come select. Il DBMS non distinguerà tra queste due voci, ma si consiglia di scrivere tutte le istruzioni SQL in lettere maiuscole in modo che possano essere facilmente distinte da altro codice.

Per esempi, diamo un'occhiata alla tabella Salespeople del classico libro di testo SQL di Martin Graber.
Ecco il codice MySQL per creare la tabella di test:

CREATE TABLE `venditori` (`snum` INTEGER(11) NOT NULL AUTO_INCREMENT, `sname` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `city` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `comm` DOUBLE(15,3) DEFAULT NULL, PRIMARY KEY (`snum`))ENGINE=SET DI CARATTERI InnoDB "cp1251" COLLATE "cp1251_general_ci" COMMENT="InnoDB libero: 5120 kB"; INSERISCI IN `venditori` (`snum`, `sname`, `city`, `comm`) VALORI (1001,"Peel","Londra",0.120), (1002,"Serres","San Jose",0.130 ), (1003,"Axelrod","New York",0.100), (1004,"Motika","Londra",0.110), (1007,"Rifkin","Barcellona",0.150); COMMETTERE;

La tabella è simile a questa:

Esempio di utilizzo dell'istruzione SELECT

1. È necessario visualizzare un elenco di venditori e visualizzare i loro nomi (sname)

SELEZIONA il nome DA Venditori

Risultato:

Qui, dopo l'istruzione SELECT, vengono elencate le colonne che devono essere visualizzate. I nomi delle colonne sono separati da virgole.

3. È necessario visualizzare l'intera tabella

Per fare ciò, puoi utilizzare una sintassi diversa per scrivere le query. Elenchiamo ciascuna colonna dopo l'istruzione SELECT:

SELEZIONA snum , sname , città , comm DA Venditori

Oppure puoi ottenere lo stesso risultato usando la notazione abbreviata:

SELEZIONA * DA Venditori Risultato:

snumnomecittàcom
1001 SbucciareLondra0,12
1002 SerresSan Jose0,13
1003 AxelrodNew York0,1
1004 MoticaLondra0,11
1007 RifkinBarcellona0,15
Vorrei anche dare un piccolo consiglio. Per facilitare il debug delle query, alcune persone scrivono un elenco di colonne che devono essere visualizzate su una riga separata. Ciò rende più semplice commentare il codice. Per commentare il codice in SQL, viene utilizzata la seguente sintassi - /* codice commentato */ Esempio: SELECT snum , sname , city , comm FROM Salespeople

Verranno visualizzate 4 colonne, ma con questa voce puoi facilmente commentare una colonna non necessaria. Ad esempio in questo modo:

SELECT /* snum , */ sname , città , comm FROM Venditori

Ora la colonna snum non verrà stampata perché è commentata. Molto veloce e conveniente. Ovviamente come scrivere il codice SQL dipende da te, ma conoscere queste cose a volte è utile.

Utilizzo delle espressioni in un'istruzione SELECT

Molti DBMS forniscono funzionalità speciali per l'elaborazione dei risultati delle query. L'insieme di tali strumenti varia da DBMS a altro, ma esistono alcune funzionalità standard, come le espressioni. Ad esempio, potrebbe essere necessario eseguire semplici operazioni matematiche sui dati per presentarli in un modo più conveniente o inserire testo aggiuntivo nel risultato della query. SQL consente di inserire espressioni scalari e costanti tra le colonne selezionate, che possono integrare o sostituire le colonne nelle clausole SELECT. Diamo un'occhiata a un esempio.

4. È necessario visualizzare le commissioni (comm) dei venditori come percentuali, non come numeri decimali

SELEZIONA snum, snome, città, comm * 100 DA Venditori

Risultato:

snumnomecittàcom
1001 SbucciareLondra12
1002 SerresSan Jose13
1003 AxelrodNew York10
1004 MoticaLondra11
1007 RifkinBarcellona15
Nell'ultima colonna tutti i dati ricevuti vengono moltiplicati per 100 e visualizzati in percentuale.

Questa colonna non ha nome perché non contiene dati modificati e quindi viene nominata a discrezione del DBMS (ad esempio MySQL nomina la colonna comm * 100, negli esempi di M. Grabber la colonna si chiama 4, cioè il suo numero).

In questi casi è conveniente da usare denominazione delle colonne. Ad esempio, potresti chiamare l'ultima colonna percentuale. Per fare ciò, dopo il nome della colonna è necessario specificare la parola chiave AS e quindi il nome della colonna nella pagina risultante.

SELEZIONA snum, sname, città, comm * 100 COME "percentuale" DA Venditori Risultato:

snumnomecittàper cento
1001 SbucciareLondra12
1002 SerresSan Jose13
1003 AxelrodNew York10
1004 MoticaLondra11
1007 RifkinBarcellona15

Il risultato della query denomina l'ultima colonna come riga "percentuale", rendendola più facile da comprendere.

Poiché il numero viene visualizzato in percentuale, sarebbe carino indicarlo nel risultato. La funzionalità SQL viene in soccorso aggiungi testo al risultato. Sembra questo:

SELEZIONA snum, sname, città, comm * 100 AS percentuale , "%" DA Venditori Risultato:

snumnomecittàper cento%
1001 SbucciareLondra12 %
1002 SerresSan Jose13 %
1003 AxelrodNew York10 %
1004 MoticaLondra11 %
1007 RifkinBarcellona15 %

Si può vedere che dopo che la riga è stata emessa dal database, è apparsa una nuova colonna riempita con un segno di percentuale (%).

Se non sei soddisfatto della visualizzazione dei dati e del testo supplementare in diverse colonne, puoi utilizzare funzioni speciali del tuo DBMS per combinarli in un'unica colonna.

MySQL utilizza la funzione per questo CONCAT . Ecco la sua definizione dal libro di consultazione:

CONCAT(str1,str2,...)
Restituisce la stringa che è il risultato della concatenazione degli argomenti. Se almeno uno degli argomenti è NULL, viene restituito NULL. Possono essere necessari più di 2 argomenti. L'argomento numerico viene convertito nella sua forma di stringa equivalente.

Esempio: SELECT snum, sname, city , CONCAT(comm * 100, "%") AS "persent" FROM venditori Risultato:

snumnomecittàpersistente
1001 SbucciareLondra12.000%
1002 SerresSan Jose13.000%
1003 AxelrodNew York10.000%
1004 MoticaLondra11.000%
1007 RifkinBarcellona15.000%

In questa richiesta, la funzione CONCAT accetta 2 argomenti, comm * 100 e un segno di percentuale ("%"). Successivamente, chiamiamo la colonna utilizzando AS.

È importante sapere che l'utilizzo delle funzioni riduce le prestazioni. Questo non è l’unico svantaggio, ma è molto importante. Pertanto, se riesci a cavartela con il codice SQL standard, è meglio non utilizzare le funzioni. Dovrebbero essere ricordati solo in casi estremi.

Eliminazione dei dati ridondanti

Spesso è necessario escludere valori duplicati dai risultati della query. Per fare ciò, utilizzare la parola chiave DISTINCT. L'uso della parola ALL, che è l'impostazione predefinita (ovvero, non è necessario specificarla), ha l'effetto opposto.

5. È necessario visualizzare le città in cui sono presenti i venditori

Richiesta senza eccezioni:

SELEZIONA città DAI venditori Risultato:

I valori duplicati di Londra sono esclusi dal risultato, come richiesto.

Ordina il risultato per valori per colonna

L'istruzione SELECT visualizza i dati in qualsiasi ordine. Per ordinare il risultato in base a una colonna specifica, SQL utilizza l'operatore ORDER BY (ovvero, ordina per...). Questo operatore consente di modificare l'ordine di output dei dati. ORDER BY ordina il risultato della query in base ai valori di una o più colonne selezionate nella clausola SELECT. In questo caso per ogni colonna è possibile impostare l'ordinamento in ordine crescente (ASC) (questo parametro viene utilizzato di default) oppure in ordine discendente (DESC).

Ordiniamo il risultato in base alla colonna sname. Dopo l'operatore ORDER BY indichiamo in base a quale colonna ordinare, quindi è necessario specificare il metodo di ordinamento

Esempio: ordinamento in ordine crescente:

SELEZIONA * DA Venditori ORDINA PER nome ASC

Risultato:


Esempio: ordinamento per più colonne:

SELEZIONA cognome, cognome, città DA Venditori ORDINA PER cognome DESC, città DESC Risultato:

snumnomecittà
1002 SerresSan Jose
1007 RifkinBarcellona
1001 SbucciareLondra
1004 MoticaLondra
1003 AxelrodNew York

Alcune note importanti:
- la colonna in base alla quale avviene l'ordinamento deve essere specificata nel SELECT (è possibile utilizzare *)
- l'istruzione ORDER BY viene sempre scritta alla fine della query

I migliori articoli sull'argomento