Skip to main content

Dit la série, deux tables, peut-être que vous n'avez pas à savoir.

J'ai écrit le principe de synthèse de SQL avant. De nombreux amis ne savent pas comment construire SQL, il reste encore une compilation. SQL utilise et C # / Java ou un numéro différent. Écrire Select * (Bien que ce soit très mauvais!), Vous pouvez obtenir des résultats lorsque vous appuyez sur F5. Contrairement au C # / Java, la "traduction" comme CLR / JVM peut voir la fenêtre d'entrée et le programme de sortie réelles.

Il était dû à l'existence de SQL, de nombreuses syntaxes irréparables, il semblait très confus. Par exemple: à gauche de la participation:

SELECT Header.OrderId , Detail.ProductName , Detail.Amount FROM tblOrderHeader Header LEFT JOIN tblOrderDetail Detail ON Header.OrderId = Detail.OrderId WHERE Header.OrderDate > '2020-01-01' AND Detail.Amount > 1000

L'initiateur a principalement initié ce SQL doit atteindre l'objectif de la recherche d'un seul élément de plus de 1 000 yuans depuis le 1er janvier 2020. Commandes et affiche le nom du produit de l'article.

Enfin, si vous pouvez remplir le SQL ci-dessus, il s'agit d'un ingénieur de développement de base de données qualifié. Mais certains amis écrivent souvent de tels SQL:
SELECT Header.OrderId , Detail.ProductName , Detail.Amount FROM tblOrderHeader Header LEFT JOIN tblOrderDetail Detail ON Header.OrderId = Detail.OrderId AND Detail.Amount > 1000WHERE Header.OrderDate > '2020-01-01' Il existe également un tel SQL:
SELECT Header.OrderId , Detail.ProductName , Detail.Amount FROM tblOrderHeader Header LEFT JOIN tblOrderDetail Detail ON Header.OrderId = Detail.OrderId AND Header.OrderDate > '2020-01-01' AND Detail.Amount > 1000 semble et les trois SQL similaires, pourquoi le résultat est un tour. Même, va également faire des bases de données.
C'est la base du SQL compilé.
Pour comprendre la majorité de la compilation SQL, de cette image, commencez complètement:
et l'analyse est la première étape de notre compréhension exacte.
SQL Ce qui suit est un modèle complet complet:

Les lecteurs prudents peuvent faire attention à chaque numéro avant chaque mot-clé SQL, ce numéro est à l'ordre des mots-clés d'application SQL.
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>(1) FROM <left_table>(3) <join_type> JOIN <right_table>(2) ON <join_condition>(4) WHERE <where_condition>(5) GROUP BY <group_by_list>(6) WITH {CUBE | ROLLUP}(7) HAVING <having_condition>(10) ORDER BY <order_by_list> Nous pensons souvent que choisir est la première étape de SQL. En fait, de l'avenir de, rejoindre. C'est là que. Il comprend exactement l'adhésion et où exécuter les commandes de gauche à gauche.

Bien sûr, ne pensez pas que cela se termine, alors je suis trop irresponsable. Ensuite, lisez-le.
Lorsque deux tables de participation, des calculs cartésiens ont été effectués dans les conditions d'activation. Les tubes ne peuvent pas correspondre aux conditions de sur, trPlongez, mettez-le si vous ne pouvez pas l'adapter, il est temporairement réservé. Par conséquent, cette étape, les données des deux côtés seront toujours dans une grande table virtuelle.

Exemple: deux tables ci-dessus, Tblorderderer, TblorderDetail. La clé étrangère est ordonnée.


Ces deux tables, participent, il y aura ces situations:

Tblorderheader Certaines données, en TblorderDeTetail, selon la commande, ne peuvent pas trouver de données claires correspondantes.
Parmi les TBLOrderDetail, certaines commandes se trouvent dans la tête de Tblorderaderader, telles que la commande, le stockage, les informations membres, V.V.

Non trouvé plus, les données correspondantes n'ont pas été trouvées


avec un cadre de ligne solide, le cadre de représentation de deux Les tables peuvent s'adapter ensemble. Une autre table est manquante dans une étiquette blanche.


Les résultats préliminaires de deux fois rejoints de la table apparurent, ce qui est le cas de la dernière image ci-dessus, c'est-à-dire retenir toutLes données de deux tables, joints, lignes, ne peuvent pas correspondre à la séquence placée derrière. Mais vous devez conserver deux tables de données. Cela devrait être rappelé solidement.

Ensuite, par type de participation (jointure à gauche, participation, OTER entièrement participée) de la troisième étape impliquée, laissée à gauche.
À gauche impliqué, à moitié restant:

Doit participer, laissant la moitié de la droite:


Complètement général, gauche et droite:



]

Ensuite, c'est lorsque la commande est exécutée.

À ce stade, le SQL suivant, IE


sera plus que ce SQL, plus de données:



où est-ce dans les détails.Amount & Gt; 1000 Cette commande, la moitié droite des données doit correspondre à la commande de la moitié gauche, donc s'il n'y a pas de commande TblorderDetailcó à TblorderaderHeader, elle a disparu. Les deux ordonnances de TBLOrderHeader sont également une réponse importante à la commande datant de 2020-01 -01
Par exemple: TblorderaderHeader est 5 enregistrements en pierreP ramasser les conditions d'ordre supérieur au 2020-01-01.

SELECT Header.OrderId , Detail.ProductName , Detail.Amount FROM tblOrderHeader Header LEFT JOIN tblOrderDetail Detail ON Header.OrderId = Detail.OrderId AND Detail.Amount > 1000WHERE Header.OrderDate > '2020-01-01' Nous utilisons le cadre d'étoile rouge pour montrer des enregistrements éligibles
, mais enfin, en raison de la condition détaillée.Account & GT;1000 où il est équivalent au changement restant impliqué dans la participation à l'intérieur, ajout de détails.OrderID n'est pas des critères nuls Ceci est pour la première fois de cette série, suivant, je vais partager , où et participer plus vite. En attente!

Sujets

Catégories