Avant tout, obtenez une compréhension approfondie des jointures. Pas seulement les jointures internes et gauches. Sachez ce que fait une jointure croisée et une jointure externe complète. Connaissez les circonstances qui vous amèneraient à choisir un type particulier de jointure. Comprenez qu'ils ne sont pas interchangeables et que la requête qui utilise une jointure gauche peut renvoyer des résultats différents de celle qui utilise une jointure interne. (On pourrait penser que ce serait évident, mais j'ai lu trop de questions où les gens, en décrivant leur problème, essaient un peu au hasard différentes jointures.)
Ensuite, comprenez vraiment les agrégats et leur fonctionnement. Mysql vous permettra de ne pas faire de bys de groupe de manière standard. Mais ayez la discipline de définir correctement la clause group by. Il vous aidera à comprendre ce que vous faites et rendra vos connaissances plus facilement transférables à d'autres bases de données.
Découvrez ce que fait l'énoncé de cas.
Lorsque vous effectuez des requêtes complexes, apprenez à travailler en morceaux. Vérifiez à chaque morceau que vous avez les résultats escomptés. Par exemple, supposons que vous deviez rédiger une requête de rapport sur les commandes qui ont été retournées au cours des 3 derniers mois et la raison du retour ainsi que les coordonnées du client. La première étape consiste à récupérer les commandes au cours des trois derniers mois. Une fois que vous savez que vous avez ce solide, vous pouvez ajouter les informations sur la raison du retour. Une fois que vous avez ce solide, vous pouvez ajouter le client qui l'a retourné. Une fois que vous avez ce solide, ajoutez les coordonnées de la personne. À chaque étape, vérifiez vos résultats et voyez s'ils ont du sens. Dans ce cas, je veux probablement me retrouver avec un seul enregistrement par commande retournée. Si à un stade intermédiaire, le nombre de résultats augmente ou diminue, vous savez que vous avez un problème avec la requête. Parfois, dans les blocs de construction, vous souhaiterez voir des champs supplémentaires juste pour vérifier si les informations sont correctes. Je les mets sur une ligne distincte et les commente pendant que je passe à l'étape suivante (en les supprimant à la fin une fois que je sais que j'ai raison) afin qu'ils soient disponibles pour voir à nouveau facilement si l'ajout d'une autre ride a rendu la requête drôle. Vous ne pouvez pas effectuer correctement des requêtes complexes sans bien comprendre à quoi devraient ressembler vos résultats. Penser que cela semble OK car il a renvoyé certains résultats garantira presque que vous avez de mauvais résultats une bonne partie du temps. m à droite) donc ils sont disponibles pour voir à nouveau facilement si l'ajout d'une autre ride a rendu la requête drôle. Vous ne pouvez pas effectuer correctement des requêtes complexes sans bien comprendre à quoi devraient ressembler vos résultats. Penser que cela semble OK car il a renvoyé certains résultats garantira presque que vous avez de mauvais résultats une bonne partie du temps. m à droite) donc ils sont disponibles pour voir à nouveau facilement si l'ajout d'une autre ride a rendu la requête drôle. Vous ne pouvez pas effectuer correctement des requêtes complexes sans bien comprendre à quoi devraient ressembler vos résultats. Penser que cela semble OK car il a renvoyé certains résultats garantira presque que vous avez de mauvais résultats une bonne partie du temps.
Voici une liste de certaines choses de base que vous devriez pouvoir faire en SQL sans avoir à y penser:
- D'abord une sélection directe sans jointure (et sans sélection *) mais avec des conditions sur la sélection
- Vous devez savoir comment combiner deux tables ou plus et obtenir des enregistrements qui se trouvent dans toutes les tables
- Vous devez savoir comment combiner deux tables ou plus et obtenir des enregistrements qui se trouvent dans toutes les tables, mais renvoyer un seul enregistrement de la table avec le côté plusieurs de la relation un-à-plusieurs.
- Vous devriez pouvoir obtenir les enregistrements dans une table mais pas dans une table associée
- Vous devez être en mesure d'agréger les données d'un rapport
- Vous devriez pouvoir insérer un enregistrement dans une table
- Vous devriez pouvoir mettre à jour un enregistrement dans une table
- Vous devriez pouvoir supprimer un enregistrement dans une table
- Vous devriez pouvoir insérer un groupe d'enregistrements dans une table sans curseur
- Vous devriez pouvoir mettre à jour un groupe d'enregistrements dans une table sans curseur
- Vous devriez pouvoir supprimer un groupe d'enregistrements dans une table sans curseur
- Vous devez être en mesure d'effectuer plusieurs actions en une seule transaction et de gérer le recouvrement des erreurs
- Vous devriez pouvoir créer une union de documents et savoir quand utiliser UNION vice UNION ALL
- Vous devriez pouvoir faire varier les données pour un champ en fonction de certains critères (en utilisant CASE)
Une fois que vous vous sentez à l'aise avec vos connaissances SQL de base, apprenez à connaître la structure de votre base de données. Je peux écrire des requêtes complexes contre les dbs très compliqués que je supporte beaucoup plus rapidement que les autres parce que je comprends la structure et que je n'ai pas à penser où les choses sont stockées. Si vous comprenez la structure de la table et les relations de clé étrangère et où les valeurs de recherche sont stockées et ce que signifient les colonnes (pas seulement leur nom mais quelles données y sont contenues), vous pouvez être expert dans l'interrogation de cette base de données. La première chose que je fais dans tout nouveau travail est de bien comprendre la structure de la base de données.