Come scrivere query semplici
Pubblicato: 2022-03-21Come eseguire query su un database SQL:
- Assicurati di avere un'applicazione di gestione del database (es. MySQL Workbench, Sequel Pro).
- In caso contrario, scarica un'applicazione di gestione del database e collabora con la tua azienda per connettere il tuo database.
- Comprendi il tuo database e la sua gerarchia.
- Scopri quali campi sono nelle tue tabelle.
- Inizia a scrivere una query SQL per estrarre i dati desiderati.
Mai sentito parlare di SQL? Potresti averne sentito parlare nel contesto dell'analisi dei dati, ma non hai mai pensato che si applicasse a te come marketer. Oppure, potresti aver pensato: "Questo è per gli utenti di dati avanzati. Non potrei mai farlo”.
Beh, non potresti essere più sbagliato! I marketer di maggior successo sono basati sui dati e una delle parti più importanti dell'essere basati sui dati è la raccolta rapida dei dati dai database. SQL è lo strumento più popolare là fuori per fare proprio questo.
Se la tua azienda archivia già i dati in un database, potrebbe essere necessario imparare l'SQL per accedere ai dati. Ma non preoccuparti: sei nel posto giusto per iniziare. Entriamo subito.
Perché usare SQL?
SQL (spesso pronunciato come "sequel") sta per Structured Query Language e viene utilizzato quando le aziende hanno un sacco di dati che vogliono manipolare. Il bello di SQL è che chiunque lavori in un'azienda che archivia i dati in un database relazionale può usarlo. (E è probabile che la tua lo faccia.)
Ad esempio, se lavori per un'azienda di software e desideri estrarre i dati sull'utilizzo dei tuoi clienti, puoi farlo con SQL. Se stai aiutando a sviluppare un sito Web per un'azienda di e-commerce che dispone di dati sugli acquisti dei clienti, puoi utilizzare SQL per scoprire quali clienti stanno acquistando quali prodotti. Naturalmente, queste sono solo alcune delle molte possibili applicazioni.
Pensaci in questo modo: hai mai aperto un set di dati molto grande in Excel, solo per bloccare o addirittura spegnere il tuo computer? SQL ti consente di accedere solo ad alcune parti dei tuoi dati alla volta in modo da non dover scaricare tutti i dati in un CSV, manipolarlo ed eventualmente sovraccaricare Excel. In altre parole, SQL si occupa dell'analisi dei dati che potresti essere abituato a fare in Excel.
Come scrivere semplici query SQL
Prima di iniziare, assicurati di avere un'applicazione di gestione del database che ti permetta di estrarre i dati dal tuo database. Alcune opzioni includono MySQL o Sequel Pro.
Inizia scaricando una di queste opzioni, quindi parla con il reparto IT della tua azienda su come connetterti al tuo database. L'opzione che scegli dipenderà dal back-end del tuo prodotto, quindi controlla con il tuo team di prodotto per assicurarti di selezionare quello corretto.
Comprendi la gerarchia del tuo database
Successivamente, è importante abituarsi al database e alla sua gerarchia. Se disponi di più database di dati, dovrai perfezionare la posizione dei dati con cui desideri lavorare.
Ad esempio, supponiamo di lavorare con più database su persone negli Stati Uniti. Immettere la query "MOSTRA BANCHE DATI;". I risultati potrebbero mostrare che hai un paio di database per località diverse, incluso uno per il New England.
All'interno del tuo database, avrai diverse tabelle contenenti i dati con cui vuoi lavorare. Utilizzando lo stesso esempio sopra, supponiamo di voler scoprire quali informazioni sono contenute in uno dei database. Se utilizziamo la query "SHOW TABLES in NewEngland;", troveremo tabelle per ogni stato del New England: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland e people_vermont.
Infine, è necessario scoprire quali campi si trovano nelle tabelle. I campi sono i dati specifici che puoi estrarre dal tuo database. Ad esempio, se vuoi estrarre l'indirizzo di qualcuno, il nome del campo potrebbe non essere solo "indirizzo", ma potrebbe essere separato in address_city, address_state, address_zip. Per capirlo, usa la query "Describe people_massachusetts;". Questo fornisce un elenco di tutti i dati che puoi estrarre usando SQL.
Facciamo una rapida rassegna della gerarchia usando il nostro esempio del New England:
- Il nostro database è: NewEngland.
- Le nostre tabelle all'interno di quel database sono: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland e people_vermont.
- I nostri campi all'interno della tabella people_massachusetts includono: address_city, address_state, address_zip, hair_color, age, first_name e last_name.
Ora, scriviamo alcune semplici query SQL per estrarre i dati dal nostro database NewEngland.
Query SQL di base
Per imparare a scrivere una query SQL, utilizziamo il seguente esempio:
Chi sono le persone che hanno i capelli rossi in Massachusetts e sono nate nel 2003 organizzate in ordine alfabetico?
SELEZIONARE
SELEZIONA sceglie i campi che desideri visualizzare nel grafico. Questa è l'informazione specifica che vuoi estrarre dal tuo database. Nell'esempio sopra, vogliamo trovare le persone che soddisfano il resto dei criteri.
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
;
DA
DA individua la tabella da cui si desidera estrarre i dati. Nella sezione precedente, abbiamo appreso che c'erano sei tabelle per ciascuno dei sei stati del New England: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland e people_vermont. Poiché stiamo cercando persone in Massachusetts in particolare, estrarremo i dati da quella tabella specifica.
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
;
DOVE
WHERE ti consente di filtrare una query per essere più specifica. Nel nostro esempio, vogliamo filtrare la nostra query per includere solo le persone con i capelli rossi nate nel 2003. Iniziamo con il filtro dei capelli rossi.
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli="rosso"
;
hair_color avrebbe potuto far parte della tua istruzione SELECT iniziale se avessi voluto guardare tutte le persone in Massachusetts insieme al loro colore di capelli. Ma se vuoi filtrare per vedere solo le persone con i capelli rossi, puoi farlo con un'istruzione WHERE.
FRA
Oltre a equals (=), BETWEEN è un altro operatore che puoi utilizzare per le query condizionali. Un'istruzione BETWEEN è vera per i valori che rientrano tra i valori minimo e massimo specificati.
Nel nostro caso, possiamo usare BETWEEN per estrarre i record da un anno specifico, come il 2003. Ecco la query:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
data di nascita TRA '2003-01-01' E '2003-12-31'
;
E
E ti consente di aggiungere criteri aggiuntivi alla tua istruzione WHERE. Ricorda, vogliamo filtrare in base alle persone che avevano i capelli rossi oltre alle persone nate nel 2003. Poiché la nostra affermazione WHERE è ripresa dai criteri dei capelli rossi, come possiamo filtrare anche in base a un anno di nascita specifico?
È qui che entra in gioco l'istruzione AND. In questo caso, l'istruzione AND è una proprietà della data, ma non deve necessariamente esserlo. (Nota: controlla il formato delle tue date con il tuo team di prodotto per assicurarti che siano nel formato corretto.)
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli="rosso"
E
data di nascita TRA '2003-01-01' E '2003-12-31'
;
O
OR può essere utilizzato anche con un'istruzione WHERE. Con AND, entrambe le condizioni devono essere vere per apparire nei risultati (ad esempio, il colore dei capelli deve essere rosso e deve essere nato nel 2003). Con OR, entrambe le condizioni devono essere vere per apparire nei risultati (ad esempio, il colore dei capelli deve essere rosso o deve essere nato nel 2003).
Ecco come appare un'istruzione OR in azione:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli = 'rosso'
O
data di nascita TRA '2003-01-01' E '2003-12-31'
;
NON
NOT viene utilizzato in un'istruzione WHERE per visualizzare valori in cui la condizione specificata non è vera. Se volessimo tirare su tutti i residenti del Massachusetts senza capelli rossi, possiamo usare la seguente query:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE NO
colore_capelli = 'rosso'
;
ORDINATO DA
I calcoli e l'organizzazione possono anche essere eseguiti all'interno di una query. È qui che entrano in gioco le funzioni ORDER BY e GROUP BY. Per prima cosa, esamineremo le nostre query SQL con le funzioni ORDER BY e quindi GROUP BY. Quindi, daremo una breve occhiata alla differenza tra i due.
Una clausola ORDER BY consente di ordinare in base a uno qualsiasi dei campi specificati nell'istruzione SELECT. In questo caso, ordiniamo per cognome.
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli = 'rosso'
E
data di nascita TRA '2003-01-01' E '2003-12-31'
ORDINATO DA
cognome
;
RAGGRUPPA PER
GROUP BY è simile a ORDER BY, ma aggrega i dati che presentano somiglianze. Ad esempio, se hai dei duplicati nei tuoi dati, puoi utilizzare GROUP BY per contare il numero di duplicati nei tuoi campi.
Ecco la tua query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli = 'rosso'
E
data di nascita TRA '2003-01-01' E '2003-12-31'
RAGGRUPPA PER
cognome
;
ORDINA PER VS. RAGGRUPPA PER
Per mostrare la differenza tra un'istruzione ORDER BY e un'istruzione GROUP BY, usciamo brevemente dal nostro esempio del Massachusetts per esaminare un set di dati molto semplice. Di seguito è riportato un elenco di numeri ID e nomi di quattro dipendenti.
Se dovessimo utilizzare un'istruzione ORDER BY in questo elenco, i nomi dei dipendenti verrebbero ordinati in ordine alfabetico. Il risultato sarebbe simile a questo:
Se invece dovessimo utilizzare un'istruzione GROUP BY, i dipendenti verrebbero conteggiati in base al numero di volte in cui sono apparsi nella tabella iniziale. Nota che Peter è apparso due volte nella tabella iniziale, quindi il risultato sarebbe simile a questo:
Con me finora? Ok, torniamo alla query SQL che abbiamo creato sulle persone dai capelli rossi del Massachusetts nate nel 2003.
LIMITE
A seconda della quantità di dati che hai nel database, l'esecuzione delle query potrebbe richiedere molto tempo. Questo può essere frustrante, soprattutto se hai commesso un errore nella tua query e ora devi aspettare prima di continuare. Se vuoi testare una query, la funzione LIMIT ti consente di limitare il numero di risultati che ottieni.
Ad esempio, se sospettiamo che ci siano migliaia di persone che hanno i capelli rossi in Massachusetts, potremmo voler testare la nostra query utilizzando LIMIT prima di eseguirla per intero per assicurarci di ottenere le informazioni che desideriamo. Diciamo, per esempio, di voler vedere solo le prime 100 persone nel nostro risultato.
Ecco la nostra query SQL:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli = 'rosso'
E
data di nascita TRA '2003-01-01' E '2003-12-31'
ORDINATO DA
cognome
LIMITE
100
;
INSERIRE
Oltre a recuperare informazioni da un database relazionale, SQL può essere utilizzato anche per modificare il contenuto di un database. Ovviamente, avrai bisogno delle autorizzazioni per apportare modifiche ai dati della tua azienda. Ma, nel caso in cui tu sia mai incaricato di gestire i contenuti di un database, condivideremo alcune domande che dovresti conoscere.

La prima è l'istruzione INSERT INTO, che serve per inserire nuovi valori nel database. Se vogliamo aggiungere una nuova persona alla tabella Massachusetts, possiamo farlo fornendo prima il nome della tabella che vogliamo modificare e i campi all'interno della tabella a cui vogliamo aggiungere. Successivamente, scriviamo VALUE con ogni rispettivo valore che vogliamo aggiungere.
Ecco come potrebbe apparire quella query:
INSERIRE
people_massachusetts (address_city, address_state, address_zip, hair_color, age, first_name, last_name)
I VALORI
(Cambridge, Massachusetts, 02139, bionda, 32, Jane, Doe)
;
In alternativa, se si aggiunge un valore a ogni campo della tabella, non è necessario specificare i campi. I valori verranno aggiunti alle colonne nell'ordine in cui sono elencati nella query.
INSERIRE
persone_massachusetts
I VALORI
(Cambridge, Massachusetts, 02139, bionda, 32, Jane, Doe)
;
Se vuoi solo aggiungere valori a campi specifici, devi specificare questi campi. Supponiamo di voler inserire solo un record con nome, cognome e stato_indirizzo: possiamo utilizzare la seguente query:
INSERIRE
people_massachusetts (nome, cognome, indirizzo_stato)
I VALORI
(Jane, Doe, Massachusetts)
;
AGGIORNARE
Se desideri sostituire i valori esistenti nel database con valori diversi, puoi utilizzare UPDATE. Cosa succede se, ad esempio, qualcuno viene registrato nel database come avente i capelli rossi mentre in realtà ha i capelli castani? Possiamo aggiornare questo record con le istruzioni UPDATE e WHERE:
AGGIORNARE
persone_massachusetts
IMPOSTARE
colore_capelli = 'marrone'
DOVE
first_name = 'Jane'
E
cognome = 'Daino'
;
Oppure, supponiamo che ci sia un problema nella tabella in cui alcuni valori per "address_state" vengono visualizzati come "Massachusetts" e altri vengono visualizzati come "MA". Per cambiare tutte le istanze di "MA" in "Massachusetts" possiamo utilizzare una semplice query e aggiornare più record contemporaneamente:
AGGIORNARE
persone_massachusetts
IMPOSTARE
address_state = 'Massachusetts'
DOVE
indirizzo_stato = MA
;
Fai attenzione quando usi UPDATE. Se non specifichi quali record modificare con un'istruzione WHERE, cambierai tutti i valori nella tabella.
ELIMINA
DELETE rimuove i record dalla tabella. Come con UPDATE, assicurati di includere un'istruzione WHERE, in modo da non eliminare accidentalmente l'intera tabella.
Oppure, se ci capitasse di trovare diversi record nella nostra tabella people_massachusetts che vivevano effettivamente nel Maine, possiamo eliminare rapidamente queste voci prendendo di mira il campo address_state, in questo modo:
ELIMINA DA
persone_massachusetts
DOVE
address_state = 'main'
;
Bonus: suggerimenti SQL avanzati
Ora che hai imparato a creare una semplice query SQL, discutiamo alcuni altri trucchi che puoi utilizzare per migliorare le tue query, a partire dall'asterisco.
* (asterisco)
Quando aggiungi un asterisco alla tua query SQL, indica alla query che desideri includere tutte le colonne di dati nei risultati.
Nell'esempio del Massachusetts che abbiamo utilizzato, abbiamo avuto solo due nomi di colonna: first_name e last_name. Ma supponiamo di avere 15 colonne di dati che vogliamo vedere nei nostri risultati: sarebbe difficile digitare tutti i nomi di 15 colonne nell'istruzione SELECT. Invece, se sostituisci i nomi di quelle colonne con un asterisco, la query saprà inserire tutte le colonne nei risultati.
Ecco come sarebbe la query SQL:
SELEZIONARE
*
DA
persone_massachusetts
DOVE
colore_capelli="rosso"
E
data di nascita TRA '2003-01-01' E '2003-12-31'
ORDINATO DA
cognome
LIMITE
100
;
% (simbolo percentuale)
Il simbolo di percentuale è un carattere jolly, il che significa che può rappresentare uno o più caratteri in un valore di database. I caratteri jolly sono utili per individuare i record che condividono caratteri comuni. In genere vengono utilizzati con l'operatore LIKE per trovare un modello nei dati.
Ad esempio, se volessimo ottenere i nomi di ogni persona nella nostra tabella il cui codice postale inizia con "02", possiamo scrivere questa query:
SELEZIONARE
nome di battesimo,
cognome
DOVE
address_zip MI PIACE '02%'
;
Qui, "%" sta per qualsiasi gruppo di cifre che segue "02", quindi questa query mostra qualsiasi record con un valore per address_zip che inizia con "02".
ULTIMI 30 GIORNI
Dopo aver iniziato a utilizzare SQL regolarmente, ho scoperto che una delle mie query di riferimento riguardava il tentativo di trovare quali persone hanno intrapreso un'azione o soddisfatto un determinato insieme di criteri negli ultimi 30 giorni.
Facciamo finta che oggi sia il 1° dicembre 2021. Puoi creare questi parametri impostando l'intervallo di data di nascita tra il 1° novembre 2021 e il 30 novembre 2021. Quella query SQL sarebbe simile a questa:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli="rosso"
E
data di nascita TRA '2021-11-01' E '2021-11-30'
ORDINATO DA
cognome
LIMITE
100
;
Tuttavia, ciò richiederebbe di pensare a quali date coprono gli ultimi 30 giorni e dovresti aggiornare costantemente questa query.
Invece, per fare in modo che le date coprano automaticamente gli ultimi 30 giorni, indipendentemente da quale giorno sia, puoi digitarlo sotto AND: data_nascita >= (DATE_SUB(CURDATE(),INTERVAL 30))
(Nota: ti consigliamo di ricontrollare questa sintassi con il tuo team di prodotto perché potrebbe differire in base al software che usi per estrarre le query SQL.)
La tua query SQL completa sarebbe quindi simile a questa:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
DOVE
colore_capelli="rosso"
E
data_nascita >= (DATE_SUB(CURDATE(),INTERVAL 30))
ORDINATO DA
cognome
LIMITE
100
;
CONTARE
In alcuni casi, potresti voler contare il numero di volte in cui viene visualizzato un criterio di un campo. Ad esempio, supponiamo che tu voglia contare il numero di volte in cui i diversi colori di capelli appaiono per le persone che stai contando dal Massachusetts. In questo caso, COUNT tornerà utile in modo da non dover sommare manualmente il numero di persone che hanno colori di capelli diversi o esportare tali informazioni in Excel.
Ecco come sarebbe quella query SQL:
SELEZIONARE
colore dei capelli,
COUNT(colore_capelli)
DA
persone_massachusetts
E
data di nascita TRA '2003-01-01' E '2003-12-31'
RAGGRUPPA PER
colore dei capelli
;
AVG
AVG calcola la media di un attributo nei risultati della query, escludendo i valori NULL (vuoto). Nel nostro esempio, potremmo utilizzare AVG per calcolare l'età media dei residenti nel Massachusetts nella nostra query.
Ecco come potrebbe essere la nostra query SQL:
SELEZIONARE
MEDIA (età)
DA
persone_massachusetts
;
SOMMA
SUM è un altro semplice calcolo che puoi eseguire in SQL. Calcola il valore totale di tutti gli attributi dalla tua query. Quindi, se volessimo sommare tutte le età dei residenti del Massachusetts, possiamo usare questa query:
SELEZIONARE
SOMMA(età)
DA
persone_massachusetts
;
MIN e MAX
MIN e MAX sono due funzioni SQL che forniscono i valori più piccoli e più grandi di un determinato campo. Possiamo usarlo per identificare i membri più anziani e più giovani del nostro tavolo del Massachusetts:
Questa query ci darà il record del più vecchio:
SELEZIONARE
MIN(età)
DA
persone_massachusetts
;
E questa query ci fornisce la più antica:
SELEZIONARE
MAX(età)
DA
persone_massachusetts
;
GIUNTURA
Potrebbe esserci un momento in cui è necessario accedere alle informazioni da due tabelle diverse in una query SQL. In SQL, puoi utilizzare una clausola JOIN per farlo.
(Per chi ha familiarità con le formule di Excel, è simile all'utilizzo della formula CERCA.VERT quando è necessario combinare informazioni da due fogli diversi in Excel.)
Supponiamo di avere una tabella che contiene i dati di tutti gli ID utente dei residenti del Massachusetts e le loro date di nascita. Inoltre, abbiamo una tabella completamente separata contenente gli ID utente di tutti i residenti del Massachusetts e il colore dei loro capelli.
Se vogliamo capire il colore dei capelli dei residenti del Massachusetts nati nell'anno 2003, dovremmo accedere alle informazioni da entrambe le tabelle e combinarle. Funziona perché entrambe le tabelle condividono una colonna corrispondente: gli ID utente.
Poiché stiamo richiamando i campi da due tabelle diverse, anche la nostra istruzione SELECT cambierà leggermente. Invece di elencare solo i campi che vogliamo includere nei nostri risultati, dovremo specificare da quale tabella provengono. (Nota: la funzione asterisco può tornare utile qui, quindi la tua query include entrambe le tabelle nei risultati.)
Per specificare un campo da una tabella specifica, tutto ciò che dobbiamo fare è combinare il nome della tabella con il nome del campo. Ad esempio, la nostra istruzione SELECT direbbe "table.field" — con il punto che separa il nome della tabella e il nome del campo.
Assumiamo anche alcune cose in questo caso:
- La tabella della data di nascita del Massachusetts include i seguenti campi: nome, cognome, user_id, data di nascita
- La tabella dei colori dei capelli del Massachusetts include i seguenti campi: user_id, hair_color
La tua query SQL sarebbe quindi simile a:
SELEZIONARE
data di nascita_massachusetts.first_name,
data di nascita_massachusetts.cognome
DA
birthdate_massachusetts ISCRIVITI haircolor_massachusetts USING (user_id)
DOVE
colore_capelli="rosso"
E
data di nascita TRA '2003-01-01' E '2003-12-31'
ORDINATO DA
cognome
;
Questa query unirebbe le due tabelle utilizzando il campo "user_id" che appare sia nella tabella birthdate_massachusetts che nella tabella haircolor_massachusetts. Puoi quindi vedere una tabella di persone nate nel 2003 che hanno i capelli rossi.
ASTUCCIO
Utilizzare un'istruzione CASE quando si desidera restituire risultati diversi alla query in base alla condizione soddisfatta. Le condizioni sono valutate in ordine. Una volta soddisfatta una condizione, viene restituito il risultato corrispondente e tutte le condizioni seguenti vengono ignorate.
È possibile includere una condizione ELSE alla fine nel caso in cui non siano soddisfatte le condizioni. Senza un ELSE, la query restituirà NULL se non vengono soddisfatte le condizioni.
Ecco un esempio di utilizzo di CASE per restituire una stringa in base alla query:
SELEZIONARE
nome di battesimo,
cognome
DA
persone_massachusetts
ASTUCCIO
QUANDO hair_color = 'marrone' ALLORA 'Questa persona ha i capelli castani.'
QUANDO hair_color = 'bionda' ALLORA 'Questa persona ha i capelli biondi.'
QUANDO hair_color = 'rosso' ALLORA 'Questa persona ha i capelli rossi.'
ALTRO 'Colore dei capelli sconosciuto.'
FINE
;
Query SQL di base che gli esperti di marketing dovrebbero sapere
Congratulazioni. sei pronto per eseguire le tue query SQL! Sebbene ci sia molto di più che puoi fare con SQL, spero che tu abbia trovato utile questa panoramica delle nozioni di base in modo da poterti sporcare le mani. Con una solida base delle nozioni di base, sarai in grado di navigare meglio in SQL e lavorare verso alcuni degli esempi più complessi.
Nota del redattore: questo post è stato originariamente pubblicato il 25 marzo ed è stato aggiornato per completezza.