Innanzitutto, ottenere una conoscenza approfondita dei join. Non solo i join interni e di sinistra. Scopri cosa fa un cross join e un full outer join. Conoscere le circostanze che potrebbero indurti a scegliere un particolare tipo di join. Comprendere che non sono intercambiabili e che la query che utilizza un join sinistro può restituire risultati diversi rispetto a uno che utilizza un join interno. (Si potrebbe pensare che sarebbe ovvio, ma ho letto troppe domande in cui le persone nel descrivere il loro problema, in qualche modo provano casualmente diversi join.)
Quindi capire davvero gli aggregati e come funzionano. Mysql ti consentirà di evitare di fare bys di gruppo in modo standard. Ma avere la disciplina per definire completamente il gruppo dalla clausola correttamente. Ti aiuterà a capire cosa stai facendo e renderà la tua conoscenza più facilmente trasferibile ad altri database.
Scopri cosa fa l'istruzione case.
Quando si eseguono query complesse, imparare a lavorare a blocchi. Verifica ad ogni blocco che hai i risultati che ti aspetti. Ad esempio, supponiamo che sia necessario scrivere una query di report sugli ordini che sono stati restituiti negli ultimi 3 mesi e sul 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, è possibile aggiungere le informazioni sul motivo della restituzione. Una volta ottenuto questo solido, è possibile aggiungere il cliente che lo ha restituito. Una volta che hai quel solido, aggiungere le informazioni di contatto per la persona. In ogni fase, controlla i risultati e vedi 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. Ho messo questi su una riga separata e li ho commentati mentre lavoro attraverso il passaggio successivo (rimuovendoli alla fine una volta che so di avere ragione) in modo che siano disponibili per vedere facilmente se l'aggiunta di un'altra ruga ha reso la query divertente. Non è possibile eseguire correttamente query complesse senza una comprensione approfondita di come dovrebbero essere i risultati. Pensare che appaia OK perché ha restituito alcuni risultati ti garantirà quasi di avere risultati sbagliati per buona parte del tempo. m destra) in modo che siano disponibili per essere rivisti facilmente se l'aggiunta di un'altra ruga ha reso la query divertente. Non è possibile eseguire correttamente query complesse senza una comprensione approfondita di come dovrebbero essere i risultati. Pensare che appaia OK perché ha restituito alcuni risultati ti garantirà quasi di avere risultati sbagliati per buona parte del tempo. m destra) in modo che siano disponibili per essere rivisti facilmente se l'aggiunta di un'altra ruga ha reso la query divertente. Non è possibile eseguire correttamente query complesse senza una comprensione approfondita di come dovrebbero essere i risultati. Pensare che appaia OK perché ha restituito alcuni risultati ti garantirà quasi di avere risultati sbagliati per buona parte del tempo.
Ecco un elenco di alcune cose di base che dovresti essere in grado di fare in SQL senza pensarci:
- Prima una selezione diretta senza join (e nessuna selezione *) ma con condizioni sulla selezione
- Dovresti sapere come combinare due o più tabelle e ottenere i record presenti in tutte le tabelle
- Dovresti sapere come combinare due o più tabelle e ottenere record che si trovano in tutte le tabelle ma restituiscono solo un record dalla tabella con il lato multiplo 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 cursore
- Dovresti essere in grado di aggiornare un gruppo di record in una tabella senza cursore
- Dovresti essere in grado di eliminare un gruppo di record in una tabella senza cursore
- Dovresti essere in grado di eseguire più azioni in una transazione e gestire il trapping degli errori
- Dovresti essere in grado di creare l'unione dei record e sapere quando utilizzare UNION vice UNION ALL
- Dovresti essere in grado di variare i dati per un campo in base ad alcuni criteri (usando CASE)
Quando ti senti a tuo agio con le tue conoscenze di base su SQL, scopri la struttura del tuo database. Riesco a scrivere query complesse contro i dbs molto complicati che supporto molto più velocemente di altre persone perché capisco la struttura e non devo pensare a dove sono archiviate le cose. Se capisci la struttura della tabella e le relazioni con le chiavi esterne e dove sono memorizzati i valori di ricerca e il significato delle colonne (non solo il loro nome ma quali dati sono conservati in esse), allora puoi essere esperto nella ricerca di quel database. La prima cosa che faccio in ogni nuovo lavoro è comprendere a fondo la struttura del db.