Nous créons une base de données en utilisant l'exemple d'un service de livraison et analysons les requêtes SQL

Aujourd'hui, nous examinerons un exemple de base de données et diverses commandes d'agrégation, de regroupement, de tri, de jointure de tables et plus encore en utilisant MySQL comme exemple. Les données elles-mêmes sont un ensemble de tables avec des noms et des valeurs arbitraires. La structure des tableaux et leurs relations sont présentées ci-dessous.





Pour mieux comprendre, vous aurez une connaissance initiale souhaitable de SQL et des bases de données. Ce didacticiel vous aidera à structurer les informations, à mettre à jour la mémoire et à servir de feuille de triche que vous pourrez utiliser en cas de besoin. Les demandes de création de toutes les tables peuvent être trouvées ici .





excel:





Tableau des produits
"products"
Table des clients
"customers"
Tableau "courier_info"
"courier_info"
Le tableau des commandes
"orders"
La table "delivery_list"
"delivery_list"
La table "orders_products"
"orders_products"

, , . .





: , , .





Table "year_statistics"
Table "year_statistics"

, ,





:





SELECT SUM(amount_of_orders) AS orders_per_year FROM year_statistics;







:





SELECT month_name, amount_of_orders

FROM year_statistics

ORDER BY amount_of_orders DESC;








, :





SELECT month_name, amount_of_orders FROM year_statistics

WHERE amount_of_orders = (SELECT MAX(amount_of_orders)

FROM year_statistics);








:





SELECT district

FROM customers

GROUP BY district

ORDER BY COUNT(district) DESC;








:





SELECT courier_id, COUNT(order_id)

From delivery_list

WHERE date_arrived IS NOT NULL

GROUP BY courier_id;








IN, EXISTS, UNION .





, "South":





SELECT * FROM Customers

WHERE district IN ('South');








, :





SELECT * FROM delivery_list

WHERE taken NOT IN ('Yes');








, :





SELECT menu_name FROM products

WHERE EXISTS

(SELECT * FROM orders_products

WHERE orders_products.product_id = products.product_id);





, :





SELECT menu_name FROM products

WHERE NOT EXISTS

(SELECT * FROM orders_products

WHERE orders_products.product_id = products.product_id);








:





SELECT 'Customer' AS category, first_name, last_name, phone_number

FROM customers

UNION

SELECT 'Employee' AS category, first_name, last_name, phone_number

FROM courier_info;








INNER, NATURAL, CROSS, LEFT JOIN





, (, , ). ROUND, :





SELECT orders_products.order_id, products.menu_name, quantity,

ROUND(price*quantity, 2) AS total_price

FROM orders_products

INNER JOIN products ON orders_products.product_id = products.product_id

ORDER BY order_id, quantity;








, , :





SELECT *, SEC_TO_TIME(TIMESTAMPDIFF(second, date_get, date_arrived))

AS time_of_delivery

FROM orders

NATURAL JOIN delivery_list;








, :





SELECT DISTINCT courier_info.courier_id, customers.district

FROM courier_info

CROSS JOIN customers WHERE courier_info.delivery_type = 'car'

ORDER BY courier_id;








, :





SELECT customers.first_name, customers.last_name,

customers.phone_number, orders.order_id

FROM customers

LEFT JOIN orders ON customers.customer_id = orders.customer_id;












En conséquence, nous avons analysé de nombreuses requêtes de récupération SQL utiles. Des opérations de base et plus rares ont été montrées. En fait, peu importe la quantité de données de votre table, dix ou mille, cela ne changera pas les requêtes, mais restera toujours la même. L'essentiel est que la signification soit claire, la quantité de données joue un rôle beaucoup moins important. Il est absolument stupide d'avoir peur et d'être contrarié de ne pas être encore en mesure d'obtenir la demande souhaitée. C'est tout à fait normal si vous google, lisez un livre sur un sujet d'intérêt, et il n'y a toujours pas de résultat. Cela peut prendre d'une dizaine de minutes à plusieurs jours. Nous sommes tous des êtres humains et une seule personne ne peut pas tout savoir. Soyez patient, demandez à vos camarades, sur les forums et continuez à vous chercher, vous réussirez! Bonne chance.








All Articles