13 comandi SQL più importanti che ogni programmatore dovrebbe conoscere

13 comandi SQL più importanti che ogni programmatore dovrebbe conoscere

I database guidano il web moderno. Ogni sito Web grande o dinamico utilizza un database in qualche modo e, se combinato con Linguaggio di query strutturato (SQL) , le possibilità di manipolazione dei dati sono davvero infinite. Se conosci già SQL, assicurati di controllare queste competenze di programmazione che tutti gli sviluppatori di siti Web dovrebbero conoscere.





Oggi vi mostro alcuni dei comandi SQL principali devi sapere come programmatore.





Esistono molti nomi per i dati restituiti da una tabella di database. I dati sono comunemente indicati come righe , record , o tuple . Userò questi termini in modo intercambiabile in questo articolo.





Prefazione

Tutti gli esempi di oggi saranno basati su quattro tabelle immaginarie. Il cliente la tabella contiene il nome e l'età dei clienti:

Il altezza la tabella contiene il nome e l'altezza di qualsiasi persona:



Il personale la tabella contiene il nome e l'età dei membri dello staff, esattamente come la tabella dei clienti:

Il tavolo finale chiamato le persone contiene il nome e l'età delle persone, proprio come le tabelle clienti e personale:





1. Seleziona

Il Selezionare L'istruzione è la più semplice ed è essenziale che tu la capisca poiché è alla base di quasi tutti gli altri comandi. È considerata una best practice scrivere le parole SQL riservate in maiuscolo, poiché rende il comando più facile da leggere e comprendere.

Come suggerisce il nome, select è usato per Selezionare dati da un database. Ecco l'utilizzo più semplice:





SELECT * FROM table;

Ci sono due parti in questo. La prima parte ( SELEZIONARE * ) specifica quali colonne si desidera selezionare. L'asterisco indica che si desidera selezionare tutte le colonne della tabella. La seconda parte ( DA tabella ) indica al motore del database da dove desideri recuperare questi dati. Sostituisci 'tabella' con il nome della tabella del tuo database.

Questa selezione è nota come 'selezione stella'. L'uso dell'asterisco è un buon modo per capire quali dati sono in una tabella, ma non ti consiglio di usarlo per nessun codice di produzione. Quando si utilizza una stella di selezione, spetta al motore del database presentarvi i dati desiderati. Non hai alcun controllo sull'ordine in cui i dati vengono restituiti, quindi se qualcuno aggiunge una nuova colonna alla tabella, potresti scoprire che le tue variabili nel tuo linguaggio di programmazione non rappresentano più i dati corretti. Fortunatamente, c'è una soluzione.

Puoi indicare esplicitamente quali colonne desideri recuperare, in questo modo:

SELECT age, name FROM people;

Questa query recupera le colonne 'età' e 'nome' dalla tabella 'persone'. Essere così espliciti può essere leggermente noioso se hai molti dati, ma così facendo ridurrai i problemi in futuro, oltre a rendere il tuo SQL più facile da capire da qualsiasi futuro programmatore.

Se vuoi selezionare un dato aggiuntivo, ma non è memorizzato in nessuna delle tue tabelle, puoi farlo in questo modo:

SELECT age, '1234' FROM people;

Verrà restituita qualsiasi stringa all'interno di virgolette singole invece di corrispondere a un nome di colonna.

2. Dove

Il comando select è eccellente per recuperare i dati, ma cosa succede se si desidera filtrare un po' di più i risultati? Che ne dici di recuperare solo le persone che hanno gli occhi azzurri? E i nati a gennaio che lavorano come meccanici? Questo è dove il dove il comando entra. Questo ti consente di applicare condizioni alla selezione e di aggiungerlo semplicemente alla fine dell'istruzione:

SELECT age, name FROM people WHERE age > 10;

Questa query è ora riservata alle persone di età superiore ai 10 anni. Puoi combinare più condizioni usando il E operatore:

SELECT age, name FROM people WHERE age > 10 AND age <20;

Il E Il comando funziona esattamente come nella lingua inglese: applica un'altra condizione all'istruzione. In questo esempio, i dati restituiti sarebbero tutti i record con un'età compresa tra 10 e 20. Poiché non sono presenti risultati corrispondenti, non viene restituito alcun dato.

come aggiungere un contorno al testo in Photoshop?

Un altro comando che può essere usato insieme a questo è O . Ecco un esempio:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Questa query restituisce i record in cui l'età è maggiore di 10 o il nome è uguale a 'Joe'. Notare come c'è un solo segno di uguale? La maggior parte dei linguaggi di programmazione utilizza il doppio uguale (==) per verificare l'equivalenza. Questo non è necessario per la stragrande maggioranza dei motori di database (ma può essere molto per ambiente, quindi ricontrolla prima).

3. Ordina

Il ordine comando viene utilizzato per ordinare i risultati restituiti. È un altro facile da usare. Aggiungilo semplicemente alla fine della tua dichiarazione:

SELECT name, age FROM people ORDER BY age DESC;

È necessario specificare la colonna e l'ordine, che può essere ASC per ascendente o DESC per la discesa. Puoi ordinare per più colonne come questa:

SELECT name, age FROM people ORDER BY name ASC, age DESC

ORDINATO DA è forse il più utile se combinato con altri comandi. Non tutte le query restituiranno i dati in modo logico o ordinato: questo comando ti consente di cambiarlo.

4. Partecipa

Il aderire il comando è usato per aderire relativi dati memorizzati in una o più tabelle. Voi aderire la seconda tabella alla prima tabella e specificare come i dati sono collegati. Ecco un esempio di base:

come inviare messaggi di testo dal computer al cellulare gratuitamente
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Ci sono alcune cose che stanno succedendo qui. Devi iniziare con la sintassi 'LEFT JOIN', che specifica che vuoi unirti a una tabella usando un join di tipo left. Quindi, specifica la tabella che desideri unire (altezze). Il UTILIZZANDO (nome) la sintassi afferma che la colonna 'nome' può essere trovata in entrambe le tabelle e che dovrebbe essere utilizzata come chiave per unire le tabelle.

Non preoccuparti se le tue colonne hanno nomi diversi in ogni tabella. Puoi usare 'ON' invece di 'USING':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

L'istruzione on indica in modo esplicito su quali colonne digitare. Esistono molti tipi di join e ci vorrebbe molto tempo per entrare nei dettagli di ciascuno di essi, quindi ecco un breve riepilogo dei loro usi:

  • (INTERNO) UNISCITI -- Restituisce le righe con una corrispondenza in entrambe le tabelle.
  • SINISTRA (ESTERNA) UNISCI -- Restituisce tutte le righe della tabella di sinistra, con eventuali corrispondenze della tabella di destra. Se non ci sono corrispondenze, vengono comunque restituiti i record della tabella a sinistra.
  • DESTRA (ESTERNA) UNISCITI -- Questo è l'opposto di un join sinistro: vengono restituite tutte le righe della tabella di destra, insieme a tutte le corrispondenze nella tabella di sinistra.
  • COMPLETO (ESTERNO) UNISCITI -- Restituisce tutti i record con una corrispondenza in entrambe le tabelle.

La sintassi 'INNER' o 'OUTER' è facoltativa. Può rendere le cose più facili da capire, ma non è necessario specificarlo per la stragrande maggioranza delle volte.

5. Alias

Ora che conosci le basi, diamo un'occhiata al alias comando. Questo è usato per rinominare temporaneamente una tabella - più di un soprannome che altro, poiché questo nuovo nome esiste solo all'interno della singola transazione che stai eseguendo. Ecco come lo usi:

SELECT A.age FROM people A;

Puoi usare qualsiasi nome valido che ti piace, ma a me piace usare le lettere dell'alfabeto. Prima del nome di ogni colonna, l'alias è preceduto. Questo alias viene assegnato alla tabella subito dopo la sua dichiarazione. Questo è esattamente lo stesso di fare questo:

SELECT people.age FROM people;

Invece di dover digitare un lungo nome di tabella, puoi digitare una lettera semplice e facile da ricordare, ma qual è il punto? Bene, se stai selezionando da più di una tabella, è facile confondersi su quali colonne appartengono a quale tabella. Se entrambe le tabelle hanno colonne con lo stesso nome, la query del database potrebbe anche non essere eseguita senza fare esplicito riferimento al nome o all'alias della tabella. Ecco un esempio con due tabelle:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Ed ecco la stessa query con alias:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Alla tabella staff viene assegnato l'alias di 'A' e alla tabella dei clienti viene assegnato l'alias di 'B'. L'aliasing delle tabelle aiuta davvero a rendere il codice più facile da capire e riduce la quantità di digitazione che devi fare.

Puoi anche rinominare una colonna con un alias usando il comando 'AS':

SELECT age AS person_age FROM people;

Quando viene eseguita questa query, la colonna verrà ora chiamata 'person_age' invece di 'age'.

6. Unione

Unione è un ottimo comando. Ti consente di aggiungere righe l'una all'altra. A differenza dei join che aggiungono colonne corrispondenti, l'unione può aggiungere righe non correlate purché abbiano lo stesso numero e nome di colonne. Ecco come lo usi:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Puoi pensare all'unione come a un modo per combinare i risultati di due query. Un'unione restituirà solo risultati in cui è presente una riga univoca tra le due query. Puoi utilizzare la sintassi 'UNION ALL' per restituire tutti i dati, indipendentemente dai duplicati:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Notare come cambia l'ordine delle righe? Union opera nel modo più efficiente, quindi i dati restituiti possono variare in ordine.

Un possibile caso d'uso per l'unione è un subtotale: è possibile unire una query della somma totale su una query dei singoli totali per uno scenario particolare.

7. Inserisci

Ora sai tutto sul recupero dei dati da un database, ma che ne dici di inserirli? Questo è dove il inserire arriva il comando. Ecco un esempio:

INSERT INTO people(name, age) VALUES('Joe', 102);

Devi specificare il nome della tabella (persone) e le colonne che desideri utilizzare (nome ed età). La sintassi 'VALUES' viene quindi utilizzata per fornire i valori da inserire. Questi devono essere nello stesso ordine delle colonne precedentemente specificate.

Non è possibile specificare una clausola where per gli inserimenti ed è necessario assicurarsi di seguire tutti i vincoli di tabella necessari presenti.

8. Aggiorna

Dopo aver inserito alcuni dati, è naturale dover modificare righe specifiche. Ecco il aggiornare sintassi del comando:

UPDATE people SET name = 'Joe', age = 101;

Devi specificare la tabella che desideri modificare, quindi utilizzare la sintassi 'SET' per specificare le colonne e i loro nuovi valori. Questo esempio è buono, ma aggiornerà ogni singolo record -- qualcosa che non è sempre desiderabile!

Per essere più specifici, puoi usare le clausole 'WHERE' proprio come quando fai una selezione:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Puoi anche specificare più condizioni usando 'AND' e 'OR':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Notare come vengono utilizzate le parentesi per vincolare le condizioni.

disco rigido esterno non visualizzato Windows 10

9. Capovolto

ops è una parola dal suono strano, ma è un comando incredibilmente utile. Supponiamo che tu abbia un vincolo sulla tua tabella e che tu abbia specificato che desideri solo record con nomi univoci, ad esempio non vuoi memorizzare due righe con lo stesso nome. Se hai provato a inserire più valori di 'Joe', il tuo motore di database genererebbe un errore e si rifiuterebbe di farlo (giustamente). Un'UPSERT consente di aggiornare un record se esiste già. Questo è incredibilmente utile! Senza questo comando, dovresti scrivere molta logica per verificare prima se esiste un record, inserirlo in caso contrario, altrimenti recuperare la chiave primaria corretta e quindi aggiornare.

Sfortunatamente, gli upsert sono implementati in modo diverso nei diversi motori di database. PostgreSQL ha acquisito questa capacità solo di recente, mentre MySQL l'ha da un po' di tempo. Ecco la sintassi MySQL per riferimento:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Nota come questo sia essenzialmente un aggiornamento e un'istruzione di inserimento, che può essere riassunta come 'aggiornamento se l'inserimento non è riuscito'.

10. Elimina

Elimina viene utilizzato per rimuovere completamente i record: può essere piuttosto dannoso se abusato! La sintassi di base è molto facile da usare:

DELETE FROM people;

Come la maggior parte degli altri comandi, questo cancellerà Tutto quanto ! Devi usare un dove per restringerlo a un numero leggermente più sano di righe, idealmente uno:

DELETE FROM people WHERE name = 'Joe';

Se stai sviluppando un sistema, spesso è consigliabile implementare una 'cancellazione temporanea'. In realtà non esegui mai il comando di eliminazione, piuttosto crei una colonna eliminata e quindi controlli quella colonna nelle tue selezioni: può evitare un sacco di potenziale imbarazzo se puoi recuperare rapidamente e facilmente i record presumibilmente eliminati. Tuttavia, questo non sostituisce i backup corretti.

11. Crea tabella

Il crea tabella comando viene utilizzato per creare tabelle. È un altro molto semplice:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Nota come i nomi delle colonne e i vincoli sono tra parentesi e alle colonne viene assegnato un tipo di dati appropriato. Viene specificata una chiave primaria, come richiesto in qualsiasi buon progetto di database.

12. Modifica tabella

Il alterare la tabella comando viene utilizzato per modificare la struttura di una tabella. Questo è leggermente limitato, poiché il tuo database non ti consente di modificare una tabella se i dati esistenti causano un conflitto, ad esempio cambiando una stringa in un numero intero. In questi casi, correggere prima i dati, quindi modificare la tabella. Ecco un esempio:

ALTER TABLE people ADD height integer;

Questo esempio aggiunge una colonna chiamata 'altezza' di tipo intero alla tabella persone. Non c'è davvero un limite a ciò che puoi modificare.

13. Drop Table

Il comando finale è drop table . Pensa a questo come a un'eliminazione, ma invece di eliminare un singolo record, rimuove ogni singolo record insieme alla tabella! Ecco come lo usi:

DROP TABLE people;

È un comando piuttosto drastico e non c'è motivo per cui debba essere programmato nel tuo sistema. Dovrebbe essere eseguito solo manualmente nella stragrande maggioranza dei casi e può essere molto distruttivo.

È tutto per oggi. Spero che tu abbia imparato alcuni trucchi utili! Potresti imparare a fare un sito web , e poi usa le tue nuove abilità per renderlo dinamico -- assicurati solo di non commettere questi errori o di lasciarlo vulnerabile a SQL injection . Se non sei sicuro di aver bisogno di imparare SQL, hai considerato un generatore di siti statici?

Perché non lasciare un commento qui sotto con i tuoi suggerimenti e trucchi SQL preferiti?

Crediti immagine: HYS_NP/Shutterstock

Condividere Condividere Tweet E-mail Vale la pena eseguire l'aggiornamento a Windows 11?

Windows è stato ridisegnato. Ma è abbastanza per convincerti a passare da Windows 10 a Windows 11?

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Programmazione
  • SQL
Circa l'autore Joe Coburn(136 articoli pubblicati)

Joe si è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionista e, quando non pilota droni o scrive musica, lo si trova spesso a scattare foto o produrre video.

Altro da Joe Coburn

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti