Introduction et vue d'ensemble
Les bases de SQL
- Récupération des données avec SELECT
- Expressions
- Valeurs littérales
- Gestion correcte des NULLs
Exécution des requêtes
- Analyse des plans de requêtes
- Amélioration de la performance des requêtes
- Test des requêtes
- Choix de la meilleure alternative
- Éviter les erreurs et les pièges
Interrogation de plusieurs tables
Mise en œuvre des différentes jointures
- Jointures internes
- Jointures croisées
- Jointures externes gauches, droites et complètes
- Équijointures vs. jointures Theta
- Impact des jointures sur la performance
- Ajout de conditions aux jointures externes
Écriture d'auto-jointures
- Jointure d'une table à elle-même
- Chaînage des auto-jointures
- Résolution des problèmes d'intervalles de temps
Combinaison de requêtes avec les opérateurs ensemblistes
- UNION
- UNION ALL
- INTERSECT
- EXCEPT
Fonctions scalaires et d'agrégation
Avantages des fonctions intégrées
- Conversion des types de données
- Manipulation de dates
- Manipulation des chaînes de caractères
Synthèse des données avec les fonctions d'agrégation
- COUNT
- SUM
- AVG
- MIN
- MAX
- Gestion des valeurs NULLs
- Suppression des doublons
Groupement de données
- GROUP BY et GROUPING SETSL
- Application des conditions avec HAVING
- Calcul des moyennes de déplacement
Extension de requêtes de regroupement
- Imbrication d'agrégats groupés
- Jointures et groupements
- Introduction des sous-totaux avec CUBE et ROLLUP
Construction de rapports croisés
- Utilisation de CASE pour convertir des lignes en colonnes
- Mise en application de PIVOT et UNPIVOT
Analyse avec les fonctions analytiques
La clause OVER
- Définition du classement avant la mise en application de la fonction
- Division du résultat en partitions logiques
Calcul des classements
- RANK et DENSE_RANK
- ROW_NUMBER avec des groupes classés
Extension de l'utilisation des agrégats
- Partitionnement à des niveaux multiples
- Calcul des cumuls
- Comparaison des valeurs ligne et des valeurs agrégat
Construction de sous-requêtes
Sous-requêtes simples
- Sous-requêtes pour remplacer les conditions et les attributs
- Création de sous-requêtes multiniveaux
- Éviter les problèmes lorsque les sous-requêtes renvoient des valeurs NULLs
- Gestion des résultats multilignes des sous-requêtes
Sous-requêtes corrélées
- Accès aux valeurs à partir d'une requête externe
- EXISTS vs. IN
- Identification des doublons
- Éviter les corrélations accidentelles
Expressions de table communes
- Sous-requêtes réutilisables
- Sous-requêtes récursives
- Traverser les hiérarchies
Décomposition de requêtes complexes
- Dépasser les limites de SQL
- Diminution de la complexité et amélioration des performances
- Alternatives de la décomposition : tables, vues, expressions de table commune, variables de table