今日は、サンプルデータベースと、MySQLを例として使用して、集計、グループ化、並べ替え、テーブルの結合などのさまざまなコマンドを見ていきます。データ自体は、任意の名前と値を持つテーブルのセットです。テーブルの構造とそれらの関係を以下に示します。
さらに理解するには、SQLとデータベースの初期知識が望ましいでしょう。このチュートリアルは、情報の構造化、メモリの更新に役立ち、必要なときに使用できるチートシートとして機能します。すべてのテーブルを作成するためのリクエストは、ここにあります。
excel:
, , . .
: , , .
, ,
:
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;
その結果、多くの有用なSQLフェッチクエリを分析しました。基本的な操作とまれな操作が示されました。実際、テーブル内のデータの量が10または1000であるかどうかは関係ありません。これによってクエリが変更されることはありませんが、常に同じままになります。重要なことは、意味が明確であり、データの量が果たす役割ははるかに小さいということです。あなたがまだ希望の要求を得ることができないことを恐れて動揺することは絶対に愚かです。あなたがグーグルで興味のあるトピックに関する本を読んだ場合、それは絶対に正常です、そしてそれでも結果はありません。これには、数十分から数日かかる場合があります。私たちは皆人間であり、一人ですべてを知ることはできません。辛抱強く、フォーラムで仲間に聞いて、自分自身を探し続ければ、成功するでしょう!がんばろう。