Comprendre tous les ensembles résultats Relationnel
Cet article peut vous aider à mieux comprendre les complexes multi-tables SQL contenant des jointures, des clauses liées au groupe, et des fonctions d'agrégation, de loin les thèmes les plus problématiques pour la plupart des développeurs de bases de données. Vous apprendrez aussi la façon correcte de traiter les exceptions de base de données et de les incorporer en tant que fonctionnalités réelles dans votre application ColdFusion. Vous apprendrez aussi comment augmenter les performances par la mise en cache des requêtes en mémoire pour un accès rapide. Vous pouvez mémoriser les clauses SQL et Bachus-Naur formes jusqu'à ce que vous êtes bleu dans le visage, mais on finit toujours par jouer «prêt-le-feu-aim" essaie d'écrire SQL complexes qui fonctionne réellement, sauf si vous avez une image claire de la façon dont SQL exactement processus déclarations. Votre première étape en visualisant clairement SQL est de comprendre la nature des ensembles de résultats relationnelles. Le code dans cet article n'est pas pris en charge par Access, donc si vous voulez suivre avec les annonces contenues dans cet article, exécutez les fichiers de cette nouvelle base de données contient plus données et des tableaux pour illustrer les différents types de jointures et les résultats qu'elles produisent. Nous avons ajouté tous au titre de cette partie pour une raison importante qui a déjà été exposée dans les précédents. Tous les résultats de la requête SQL sont sous la forme d'une seule table de lignes et de colonnes. Qu'elle donne lieu à partir de la requête d'une table unique ou d'un requêtes relationnelles complexes comportant 15 tableaux n'a pas d'importance, tous les résultats des requêtes se présentent sous forme d'une seule table de lignes et de colonnes. Prenons le code, ce qui produit un résultat de requête relationnelle qui, comme tous les résultats de la requête, est dans la forme d'une seule table. SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary FROM entreprise c INNER JOIN Employee E ON c.CompanyID = e.CompanyID Notez que le résultat de l'adhésion à ces résultats de deux tables dans une seule table. What's this? N'est-ce pas un de ces diagrammes de Venn? Rappelez-vous quand M. Suber, votre professeur d'école secondaire de premier cycle en mathématiques, vous avez dit que vous voudriez les utiliser un jour dans le monde réel, et vous avez hésité? Le temps d'appeler et de lui présenter des excuses! Une jointure interne est l'intersection des deux ensembles de données contenues dans les deux tableaux à assembler. Pourquoi cette conceptualisation critique à l'écriture sans faille SQL? Parce que nous pouvons maintenant visualiser facilement tout type de jointure entre deux tables: Nous pouvons maintenant décrire facilement ce qui se passe vraiment avec chacun de ces types de jointures. Une INNER JOIN résultat est composé des colonnes sélectionnées à partir de deux tableaux, mais elle contient uniquement les lignes qui correspondent à la jointure des valeurs clés (précisé dans la clause ON) dans les deux tables jointes. LEFT OUTER JOIN résultat est composé des colonnes sélectionnées à partir de deux tableaux, et il contient toutes les lignes de la table latérale gauche indépendamment du fait que l'un d'eux correspondent aux valeurs de clé JOIN dans la bonne table à côté. Les colonnes de la requête sélectionnée sur la gauche-side table contenant des données de ce tableau. Pour chaque ligne dans le résultat de la requête, si un JOIN valeur de la clé de la partie gauche correspond à une table d'appoint JOIN valeur de la clé de la droite-table d'appoint, les colonnes de la requête sélectionné dans le côté droit de la table contient des données de colonne de cette table, sinon , ces colonnes contiennent des valeurs NULL. SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary FROM entreprise c LEFT OUTER JOIN Employee E ON c.CompanyID = e.CompanyID A RIGHT OUTER JOIN résultat est composé des colonnes sélectionnées à partir de deux tableaux, et il contient toutes les lignes dans la table à côté droit indépendamment du fait que l'un d'eux correspondant à la jointure des valeurs essentielles à la gauche-table d'appoint. Les colonnes de la requête sélectionné dans le côté droit de la table contient des données de ce tableau. Pour chaque ligne dans le résultat de la requête, si un JOIN valeur de la clé de la droite-side table correspond à une valeur de clé JOIN partir de la gauche-table d'appoint, les colonnes de la requête sélectionnée sur la gauche table latérales contiennent des données de colonne de cette table, sinon , ces colonnes contiennent des valeurs NULL. A FULL OUTER JOIN résultat est composé des colonnes sélectionnées à partir de deux tableaux, et il contient toutes les lignes des deux tableaux indépendamment du fait que l'un d'eux correspondent à leurs JOIN valeurs clés. Pour chaque ligne de résultat de requête extrait de la gauche, table d'appoint, si la jointure valeur de la clé de la gauche-table d'appoint n'a pas d'équivalent dans le droit-table d'appoint, cette ligne de résultat de requête contient les valeurs NULL dans les colonnes sélectionnées à partir du second tableau . De même, dans une ligne de résultat de requête extraites du droit de la table d'appoint, si la jointure valeur de la clé de la droite-side table n'a pas de correspondance dans la table latérale gauche, cette ligne de résultat de requête contient les valeurs NULL dans les colonnes sélectionnées à partir de la gauche table d'appoint. Si une ligne de résultat requête JOIN valeurs clés du match entre la gauche et à droite des tables, les données des deux tableaux est contenue dans cette ligne de résultat de requête. SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary DE Company a RIGHT OUTER JOIN Employee E ON c.CompanyID = e.CompanyID SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary DE Company a FULL OUTER JOIN Employee E ON c.CompanyID = e.CompanyID Okay, vous pouvez maintenant visualiser précisément les différents types de jointures et sont plus à l'aise avec la syntaxe SQL qui les crée. That's great! Mais dans le monde réel, vous traitent souvent de se joindre à plus de deux tables dans une requête relationnelle unique. Comment allez-vous écrire la requête SQL compliquée à rejoindra les sept tableaux et bien faire les choses la première fois, à chaque fois? En fait, c'est un morceau de gâteau. En fait, rédiger une requête qui effectue une combinaison de INNER, LEFT OUTER, RIGHT OUTER et FULL OUTER jointures entre 15 tableaux n'est pas vraiment plus difficile d'écrire d'une requête contenant un seul INNER JOIN entre deux tables. Le truc, tout est dans la façon dont vous le visualiser! SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary, d.FullName, d.Relationship FROM entreprise c INNER JOIN Employee E ON c.CompanyID = e.CompanyID INNER JOIN charge d E. ON SSN = d.SSN Pour comprendre exactement ce que vous pouvez et ne pouvez pas faire avec SQL, vous devez d'abord comprendre l'ordre dans lequel SQL traite les clauses d'une instruction SQL. Vous pouvez utiliser le code comme un exemple de l'ordre dans lequel SQL suivante. SELECT c.CompanyName, e.LastName + ',' + e.FirstName AS EmployeeName, e.Salary, count (*) comme NumDependants FROM entreprise c INNER JOIN Employee E ON c.CompanyID = e.CompanyID INNER JOIN charge d e ON . SSN = d.SSN e.DateOfBirth où <'01 / 01/82 'c.CompanyName GROUP BY, e.LastName, e.FirstName, AYANT e.Salary Count (*)> = 2 ORDER BY EmployeeName ASC un article présenté par Daniel Carlson Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Comprendre tous les ensembles résultats relationnel» a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 361 users browsing the articles directory |
|
|