im regardant ce code:compréhension rejoindre
select customers.name
from customers, orders, order_items, books
where customers.customerid = orders.customerid
and orders.orderid = order_items.orderid
and order_items.isbn = books.isbn
and books.title like '%java%';
et ont du mal à comprendre.
d'abord j'ai 4 tables, et le code fait une table dynamique,
devrais-je le regarder différemment afin de mieux le comprendre? D'abord, je sélectionne customer.name, mais seulement après que le dernier code a été exécuté et que j'ai ma table dynamique, n'est-ce pas?
Devrais-je essayer d'aligner chaque table 2 lignes par lignes en utilisant la table dynamique qui a été créée une ligne plus tôt?
et aussi pendant que la table est faite, est-ce que toutes les données de la table sont écrites ou seulement ce que je demande dans l'où?
ill apprécier votre aide.
Je pense que cette affirmation pourrait être dangereuse pour les débutants: "SQL n'est pas un code de procédure, c'est une requête, toute la requête se déroule simultanément." Rien n'est jamais simultané, nous avons tous besoin d'une bonne technique pour lire une requête et chaque optimiseur de requête appliquera une "procédure" pour interpréter votre requête et l'envoyer pour exécution. Pour des raisons de performances, toutes ces choses doivent être connues, aucun serveur sql n'est une boîte noire magique où vous pouvez vider les données et les récupérer instantanément. –
ceteras
@ceteras: Bien sûr, l'optimisation est importante, et la compréhension de la séquence d'analyse et de l'optimisation vous permettra de créer des requêtes plus efficaces. Mais l'affiche originale a des problèmes avec la sémantique de base, à savoir: les jointures. Ceci est absolument crucial pour utiliser SQL de quelque façon que ce soit.Pour l'instant, il est plus important de comprendre SQL à partir de la perspective "Black Box". Après avoir compris cela ... il peut commencer à s'inquiéter de l'optimisation. – Dragontamer5788