Hướng dẫn từng bước để đọc và hiểu truy vấn SQL - KDnuggets

Hướng dẫn từng bước để đọc và hiểu truy vấn SQL – KDnuggets

Nút nguồn: 3091384

Hướng dẫn từng bước để đọc và hiểu các truy vấn SQL
Hình ảnh của Freepik
 

SQL, hay Ngôn ngữ truy vấn tiêu chuẩn, là ngôn ngữ lập trình để quản lý và thao tác dữ liệu trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Đó là ngôn ngữ tiêu chuẩn được sử dụng ở nhiều công ty để giúp doanh nghiệp truy cập dữ liệu một cách suôn sẻ. Bởi vì nó được sử dụng rộng rãi nên việc làm thường coi SQL là một trong những kỹ năng cần thiết. Đó là lý do tại sao việc tìm hiểu về SQL là điều cần thiết.

Một trong những vấn đề phổ biến đối với mọi người khi học SQL là hiểu các truy vấn, chủ yếu là khi người khác viết chúng. Chúng tôi làm việc theo nhóm trong các công ty và thường cần đọc và hiểu các truy vấn SQL của họ. Vì vậy, chúng ta cần thực hành giải cấu trúc các truy vấn SQL và hiểu chúng.

Bài viết này sẽ hướng dẫn quy trình từng bước để đọc và hiểu các truy vấn SQL. làm sao chúng ta làm việc đó bây giờ? Chúng ta hãy đi vào nó.

Điều đầu tiên chúng ta cần làm khi gặp một truy vấn SQL là hiểu mục đích chung của các truy vấn SQL. Mục đích chung không có nghĩa là chúng tôi biết hoàn toàn về cấu trúc của truy vấn; nó thiên về dòng chảy tổng thể hơn.

Chúng ta nên hiểu các truy vấn SQL tiêu chuẩn để hiểu được truy vấn SQL chung. Hầu hết các truy vấn SQL đều bắt đầu bằng CHỌN mệnh đề và làm theo với TỪ khoản. Tiếp tục từ đó, các truy vấn thường được theo sau bởi THAM GIA, Ở ĐÂU, NHÓM THEO, ĐẶT BỞI,ĐANG CÓ điều khoản.

Các mệnh đề trên là tiêu chuẩn trong các truy vấn SQL mà chúng ta cần hiểu. Đối với mỗi mệnh đề, chức năng của chúng là:

  1. CHỌN: Những cột nào sẽ được lấy từ bảng
  2. TỪ: Dữ liệu đến từ bảng nào
  3. THAM GIA: Kết hợp các bảng với mã định danh được chỉ định
  4. Ở ĐÂU: Lọc dữ liệu dựa trên điều kiện
  5. NHÓM THEO: Sắp xếp dữ liệu dựa trên giá trị của cột và cho phép thực hiện chức năng tổng hợp.
  6. ĐẶT BỞI: Sắp xếp thứ tự kết quả dữ liệu theo cột cụ thể
  7. ĐANG CÓ: Điều kiện lọc cho hàm tổng hợp không thể được chỉ định bằng Ở ĐÂU

Đây là các mệnh đề tiêu chuẩn và những gì bạn nên tìm thấy ngay từ đầu khi tìm hiểu cấu trúc truy vấn SQL chung. Hãy sử dụng mã ví dụ để tìm hiểu thêm.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

Khi bạn nhìn vào truy vấn trên, hãy cố gắng xác định các mệnh đề tiêu chuẩn. Mệnh đề này sẽ cung cấp cho bạn sự hiểu biết về dữ liệu nào được chọn (CHỌN), nó đến từ đâu (TỪ THAM GIA) và điều kiện (Ở ĐÂU, NHÓM THEO, ĐẶT BỞIĐANG CÓ). 

Ví dụ: đọc truy vấn ở trên sẽ giúp bạn hiểu những điều sau:

  1. chúng tôi cố gắng lấy ba loại dữ liệu khác nhau: Tên từ bảng có tên là khách hàng, Sản phẩm từ bảng có tên là mua hàng và tổng hợp các cột giá không xác định bảng đó đến từ đâu và với bí danh Total_price (Thông tin từ mệnh đề CHỌN). 
  1. Dữ liệu tổng thể sẽ đến từ các bảng mua hàng và khách hàng kết hợp với nhau bằng cách sử dụng cột cust_id từ các giao dịch mua hàng và cột id từ bảng của khách hàng (Thông tin từ mệnh đề TỪ)THAM GIA). 
  1. Chúng tôi sẽ chỉ chọn dữ liệu có giá trị cột danh mục trong bảng mua hàng là 'nhà bếp' (Thông tin từ mệnh đề Ở ĐÂU), 
  1. nhóm cho hàm tổng hợp có cột tên và sản phẩm xuất phát từ bảng tương ứng (Thông tin từ mệnh đề NHÓM THEO), 
  1. cũng được lọc từ tổng kết quả của hàm tổng hợp trong đó tổng_price lớn hơn 10000 (thông tin từ mệnh đề ĐANG CÓ), Và 
  1. sắp xếp dữ liệu giảm dần theo tổng_price (thông tin từ mệnh đề ĐẶT BỞI).

Đó là cấu trúc truy vấn SQL chung mà bạn cần biết và xác định. Từ đó, chúng ta có thể khám phá thêm từ truy vấn nâng cao. Hãy tiếp tục với bước tiếp theo.

Sẽ có lúc bạn gặp phải một truy vấn phức tạp có quá nhiều CHỌN mệnh đề tồn tại trong cùng một truy vấn. Trong trường hợp này, chúng ta nên hiểu kết quả cuối cùng của truy vấn hoặc kết quả cuối cùng (đầu tiên) CHỌN bạn thấy trong truy vấn. Điều quan trọng là phải biết kết quả truy vấn muốn là gì.

Hãy sử dụng một mã phức tạp hơn như mã bên dưới.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

Truy vấn bây giờ có vẻ phức tạp hơn và dài hơn, nhưng trọng tâm ban đầu phải là câu hỏi cuối cùng LỰA CHỌN, dường như đang cố gắng tạo ra tổng chi tiêu và lịch sử mua hàng của khách hàng. Cố gắng đánh giá xem kết quả cuối cùng mong muốn là gì và chia nhỏ nó ra từ đó.

Chúng tôi có cái nhìn sâu sắc về kết quả cần có từ các truy vấn. Phần tiếp theo là xem điều kiện cuối cùng là gì CHỌN là. Điều khoản điều kiện, bao gồm Ở ĐÂU, NHÓM THEO, ĐẶT BỞIĐANG CÓ là những người kiểm soát kết quả dữ liệu tổng thể. 

Hãy cố gắng đọc và hiểu các điều kiện của truy vấn và chúng tôi sẽ hiểu rõ hơn về kết quả cuối cùng của truy vấn. Ví dụ: trong truy vấn SQL trước của chúng ta, điều kiện cuối cùng chỉ là ĐẶT BỞI. Điều này có nghĩa là kết quả cuối cùng sẽ được sắp xếp theo tổng giá sản phẩm theo thứ tự giảm dần. 

Biết các điều kiện cuối cùng sẽ giúp bạn hiểu được một phần quan trọng của truy vấn và mục đích truy vấn tổng thể.

Cuối cùng, chúng ta cần hiểu dữ liệu đến từ đâu. Sau khi biết về dữ liệu cần chọn và các điều kiện để có được chúng, chúng ta cần hiểu nguồn. Trận chung kết THAM GIA mệnh đề sẽ cho chúng ta hiểu cách các bảng tương tác và luồng dữ liệu.

Ví dụ: truy vấn phức tạp trước đó cho thấy rằng chúng tôi đã thực hiện Tham gia hai lần. Điều đó có nghĩa là chúng tôi đã sử dụng ít nhất ba nguồn dữ liệu để có kết quả cuối cùng. Thông tin này sẽ cần thiết trong các bước sau để hiểu thêm về cách mỗi nguồn dữ liệu đến, đặc biệt khi nguồn dữ liệu đến từ truy vấn phụ.

Sau khi hiểu kết quả cuối cùng sẽ như thế nào và nó đến từ đâu, chúng ta cần xem xét kỹ hơn các chi tiết. Từ đây, chúng ta sẽ quay lại từng truy vấn phụ và hiểu lý do tại sao chúng có cấu trúc như vậy.

Tuy nhiên, chúng tôi không cố gắng xem xét chúng theo cấu trúc từ trên xuống. Thay vào đó, chúng ta nên cố gắng xem xét các truy vấn phụ gần với kết quả cuối cùng hơn và chúng ta tiến tới truy vấn phụ xa nhất với kết quả cuối cùng. Từ ví dụ về mã ở trên, trước tiên chúng ta nên cố gắng hiểu mã này:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

Sau đó, chúng ta sẽ chuyển sang mã xa nhất là mã này:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

Chúng tôi có thể theo dõi quá trình suy nghĩ của tác giả một cách rõ ràng khi chia nhỏ từng truy vấn phụ từ truy vấn gần kết quả nhất đến truy vấn xa nhất. 

Hãy thử lặp lại quy trình trên nếu bạn cần trợ giúp để hiểu từng truy vấn phụ. Với một số thực hành, bạn sẽ có trải nghiệm tốt hơn trong việc đọc và hiểu truy vấn.

Đọc và hiểu các truy vấn SQL là một kỹ năng mà mọi người nên có trong thời đại hiện đại, vì mọi công ty đều xử lý chúng. Bằng cách sử dụng hướng dẫn từng bước sau đây, bạn sẽ có thời gian hiểu rõ hơn về các truy vấn SQL phức tạp. Các bước bao gồm:

  1. Hiểu cấu trúc truy vấn SQL chung
  2. Hiểu sự lựa chọn cuối cùng
  3. Hiểu điều khoản điều kiện cuối cùng
  4. Hiểu sự tham gia cuối cùng
  5. Đọc ngược thứ tự và lặp lại

 
 

Cornellius Yudha Wijaya là trợ lý quản lý khoa học dữ liệu và người viết dữ liệu. Trong khi làm việc toàn thời gian tại Allianz Indonesia, anh ấy thích chia sẻ các mẹo về Python và Dữ liệu qua mạng xã hội và phương tiện viết lách.

Dấu thời gian:

Thêm từ Xe đẩy