Prima di tutto, ottieni una comprensione approfondita dei join. Non solo join interni e di sinistra. Sapere cosa fa un cross join e un full outer join. Conoscere le circostanze che potrebbero causare la scelta di un particolare tipo di join. Comprendere che non sono intercambiabili e che la query che utilizza un join di sinistra può restituire risultati diversi rispetto a quelli che utilizzano un join interno. (Si potrebbe pensare che sarebbe ovvio, ma ho letto troppe domande in cui le persone nel decifrare il loro problema, in qualche modo provano a caso diversi join.)
In seguito capisco davvero gli aggregati e come funzionano. Mysql ti permetterà di cavartela senza fare gruppo in modo standard. Ma avere la disciplina per definire correttamente il gruppo in base alla clausola. Ti aiuterà a capire cosa stai facendo e renderà la tua conoscenza più facilmente trasferibile ad altri database.
Scopri cosa fa la dichiarazione del caso.
Quando si eseguono query complesse, si impara a lavorare in blocchi. Verifica ad ogni blocco che hai i risultati che ti aspetti. Quindi, ad esempio, supponiamo di dover scrivere una query di reporting sugli ordini che sono stati restituiti negli ultimi 3 mesi e il motivo del reso, nonché le informazioni di contatto per il cliente. Il primo passo è ottenere gli ordini restituiti negli ultimi tre mesi. Una volta che sai di avere quel solido, puoi aggiungere le informazioni sul motivo del reso. Una volta che hai questo solido, puoi aggiungere il cliente che lo ha restituito. Una volta che hai quel solido, aggiungi le informazioni di contatto per la persona. In ogni fase, controlla i risultati e verifica se hanno senso. In questo caso, probabilmente voglio finire con un solo record per ordine restituito. Se in qualsiasi fase intermedia, il numero di risultati aumenta o diminuisce, sai di avere un problema con la query. A volte nei blocchi predefiniti, vorrai vedere campi aggiuntivi solo per verificare se le informazioni sono corrette. Li metto su una riga separata e li commento mentre lavoro al passaggio successivo (rimuovendoli alla fine una volta che ho capito che ho ragione) in modo che siano disponibili a vedere di nuovo facilmente se aggiungendo un'altra ruga la query diventa divertente. Non è possibile eseguire query complesse correttamente senza una completa comprensione di come dovrebbero apparire i risultati. Pensando che sembra OK perché ha restituito alcuni risultati quasi garantirà che si hanno risultati errati una buona parte del tempo.
Ecco un elenco di alcune cose basilari che dovresti essere in grado di fare in SQL senza doverci pensare:
- Prima di tutto una selezione diretta senza join (e nessuna selezione *) ma con
condizioni sulla selezione
- Dovresti sapere come combinare due o più tabelle e ottenere record
che sono in tutte le tabelle
- Dovresti sapere come combinare due o più tabelle e ottenere record
che sono in tutte le tabelle ma restituiscono solo un record dalla tabella
con i molti aspetti della relazione uno-a-molti
- Dovresti essere in grado di ottenere i record in una tabella ma non in una
tabella associata
- Dovresti essere in grado di aggregare i dati per un rapporto
- Dovresti essere in grado di inserire un record in una tabella
- Dovresti essere in grado di aggiornare un record in una tabella
- Dovresti essere in grado di eliminare un record in una tabella
- Dovresti essere in grado di inserire un gruppo di record in una tabella senza
un cursore
- Dovresti essere in grado di aggiornare un gruppo di record in una tabella
senza un cursore
- Dovresti essere in grado di eliminare un gruppo di record in una tabella senza
un cursore
- Dovresti essere in grado di eseguire più azioni in una
transazione e gestisce il trapping degli errori
- Dovresti essere in grado di creare unione di record e sapere quando
usa UNION vice UNION ALL
- Dovresti essere in grado di variare i dati per un campo basato su alcuni
criteri (utilizzando CASE)
Una volta che ti senti a tuo agio con le tue conoscenze SQL di base, conosci la struttura del tuo database. Posso scrivere query complesse contro il dbs molto complicato che supporto molto più velocemente delle altre persone perché capisco la struttura e non devo pensare a dove sono archiviate le cose. Se si capisce la struttura della tabella e le relazioni con le chiavi esterne e dove sono memorizzati i valori di ricerca e cosa significano le colonne (non solo il loro nome ma quali dati sono contenuti in essi), si può essere esperti nell'interrogazione di quel database. La prima cosa che faccio in qualsiasi nuovo lavoro è comprendere a fondo la struttura db.