Maison >base de données >tutoriel mysql >Comment puis-je récupérer des données de plusieurs tables à l'aide de requêtes SQL ?

Comment puis-je récupérer des données de plusieurs tables à l'aide de requêtes SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-24 01:42:41610parcourir

How Can I Retrieve Data from Multiple Tables Using SQL Queries?

Guide de requête de données multi-tables SQL

Présentation

Ce guide présente diverses méthodes en SQL pour récupérer des données de plusieurs tables d'une base de données, prenant en charge l'analyse de données complexes et la génération de rapports.

Connectez-vous et unissez-vous

Join est utilisé pour combiner des lignes de plusieurs tables basées sur des colonnes communes pour créer un seul ensemble de résultats. Il existe trois principaux types de connexion :

  • Jointure interne : Renvoie uniquement les lignes correspondantes dans les deux tables.
  • Jointure externe gauche : Renvoie toutes les lignes du tableau de gauche et uniquement les lignes correspondantes du tableau de droite.
  • Jointure externe droite : Renvoie toutes les lignes de la table de droite et uniquement les lignes correspondantes de la table de gauche.

Unions Combinez les résultats de plusieurs requêtes en un seul ensemble de résultats. Elles sont similaires aux jointures mais n'utilisent pas de colonnes communes pour la correspondance. Les jointures peuvent être utilisées pour fusionner les données de tables avec des structures différentes ou pour supprimer les lignes en double.

Sous-requête

Une sous-requête est une requête au sein d'une requête qui est utilisée pour filtrer ou modifier les données récupérées de la requête principale. Ils sont mis entre parenthèses et peuvent être utilisés dans les clauses WHERE, HAVING ou FROM.

Connexion produit cartésienne (le début d'un cauchemar !)

Une jointure de produit cartésienne se produit lorsqu'aucune condition de jointure n'est spécifiée lors de la jointure de tables. Cela entraîne un grand nombre de lignes inutiles, ce qui peut nuire aux performances. Assurez-vous de toujours spécifier des conditions de jointure pour éviter les jointures de produits cartésiens.

Sous-requête dans la clause FROM

Une sous-requête dans la clause FROM vous permet d'utiliser le jeu de résultats de la sous-requête comme table dans la requête principale. Ceci est utile pour les transformations de données complexes ou pour simplifier les requêtes imbriquées.

Collection de conseils avancés

Colonnes calculées : Utilisez des opérations ou des fonctions mathématiques pour créer de nouvelles colonnes dans les requêtes. Instruction CASE : Utilisez des expressions logiques pour sélectionner différentes valeurs en fonction de conditions spécifiées. Fonction OVER() : Applique une fonction d'agrégation à un groupe de lignes au sein d'une partition. Table temporaire : Créez une table temporaire pour stocker les résultats intermédiaires, permettant des transformations de données complexes sans modifier la table d'origine. Tables dérivées : Similaires aux tables temporaires, mais elles sont créées en ligne dans la requête.

Application pratique de la connexion et de l'union

Exemple 1 : Récupérez les noms et modèles de voitures fabriquées par Toyota et BMW.

<code class="language-sql">SELECT
    cars.model,
    brands.brand
FROM
    cars
JOIN
    brands
    ON cars.brand = brands.id
WHERE
    brands.brand IN ('Toyota', 'BMW');</code>

Exemple 2 : Récupérez le nom et la couleur d'une voiture qui est une voiture de sport ou une quatre roues motrices.

<code class="language-sql">SELECT
    cars.model,
    colors.color
FROM
    cars
JOIN
    models
    ON cars.model = models.id
JOIN
    colors
    ON cars.color = colors.id
WHERE
    models.model IN ('Sports', '4WD');</code>

Exemple 3 : Utilisez une jointure externe gauche pour récupérer toutes les marques, même s'il n'y a aucune voiture dans l'inventaire.

<code class="language-sql">SELECT
    brands.brand
FROM
    brands
LEFT JOIN
    cars
    ON brands.id = cars.brand;</code>

Conclusion

En maîtrisant les jointures, les unions et d'autres techniques SQL avancées, vous pouvez récupérer efficacement les données de plusieurs tables et générer des rapports complexes. Il s’agit d’une compétence vitale pour les analystes de données, les data scientists et les administrateurs de bases de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn