Creamos una base de datos usando el ejemplo de un servicio de entrega y analizamos consultas SQL

Hoy veremos una base de datos de ejemplo y varios comandos para agregar, agrupar, ordenar, unir tablas y más usando MySQL como ejemplo. Los datos en sí son un conjunto de tablas con nombres y valores arbitrarios. La estructura de las tablas y sus relaciones se presentan a continuación.





SQL . , , . .





excel:





Tabla de productos
"products"
Mesa de clientes
"customers"
Tabla "courier_info"
"courier_info"
La mesa de pedidos
"orders"
La tabla "delivery_list"
"delivery_list"
La tabla "orders_products"
"orders_products"

, , . .





: , , .





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












Como resultado, hemos analizado muchas consultas útiles de recuperación de SQL. Se mostraron operaciones básicas y más raras. De hecho, no importa cuántos datos en su tabla sean diez o mil, esto no cambiará las consultas, pero siempre permanecerá igual. Lo principal es que el significado es claro, la cantidad de datos juega un papel mucho menor. Es absolutamente estúpido estar asustado y molesto porque aún no puede obtener la solicitud deseada. Es absolutamente normal si buscas en Google, lees un libro sobre un tema de interés y todavía no hay ningún resultado. Esto puede llevar desde una docena de minutos hasta días. Todos somos seres humanos y una sola persona no puede saberlo todo. Ten paciencia, pregunta a tus camaradas, en los foros y sigue buscándote, ¡lo lograrás! Buena suerte.








All Articles