Wir erstellen eine Datenbank am Beispiel eines Lieferservices und analysieren SQL-Abfragen

Heute werden wir uns eine Beispieldatenbank und verschiedene Befehle zum Aggregieren, Gruppieren, Sortieren, Verknüpfen von Tabellen und mehr am Beispiel von MySQL ansehen. Die Daten selbst sind eine Reihe von Tabellen mit beliebigen Namen und Werten. Die Struktur der Tabellen und ihre Beziehungen sind unten dargestellt.





Um dies weiter zu verstehen, sind wünschenswerte Grundkenntnisse in SQL und Datenbanken erforderlich. Dieses Tutorial hilft Ihnen beim Strukturieren von Informationen, beim Aktualisieren des Speichers und kann als Spickzettel dienen, den Sie bei Bedarf verwenden können. Anfragen zum Erstellen aller Tabellen finden Sie hier .





excel:





Produkttabelle
"products"
Kundentabelle
"customers"
Tabelle "courier_info"
"courier_info"
Die Auftragstabelle
"orders"
Die Tabelle "Delivery_list"
"delivery_list"
Die Tabelle "orders_products"
"orders_products"

, , . .





: , , .





Tabelle "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;












Infolgedessen haben wir viele nützliche SQL-Abrufabfragen analysiert. Grundlegende und seltenere Operationen wurden gezeigt. Tatsächlich spielt es keine Rolle, wie viele Daten in Ihrer Tabelle zehn oder tausend sind. Dies ändert die Abfragen nicht, bleibt aber immer gleich. Hauptsache, die Bedeutung ist klar, die Datenmenge spielt eine viel geringere Rolle. Es ist absolut dumm, Angst und Verärgerung zu haben, dass Sie die gewünschte Anfrage noch nicht erhalten können. Es ist absolut normal, wenn Sie googeln, ein Buch zu einem interessanten Thema lesen und es immer noch kein Ergebnis gibt. Dies kann ein Dutzend Minuten bis Tage dauern. Wir sind alle Menschen und eine Person kann nicht alles wissen. Seien Sie geduldig, fragen Sie Ihre Kameraden in den Foren und suchen Sie einfach weiter nach sich selbst, Sie werden Erfolg haben! Viel Glück.








All Articles