Logo Zephyrnet

SQL đơn giản hóa: Tạo các truy vấn mô-đun và dễ hiểu bằng CTE – KDnuggets

Ngày:

SQL đơn giản hóa: Tạo các truy vấn mô-đun và dễ hiểu bằng CTE
Hình ảnh của Tác giả 
 

Trong thế giới dữ liệu, SQL vẫn được coi là ngôn ngữ chung để tương tác với cơ sở dữ liệu. 

Ngày nay, nó vẫn là một trong những ngôn ngữ được sử dụng nhiều nhất để xử lý dữ liệu và vẫn được coi là ngôn ngữ bắt buộc phải có đối với bất kỳ chuyên gia dữ liệu giỏi nào. 

Tuy nhiên, bất kỳ ai đã từng làm việc với các truy vấn SQL phức tạp đều biết rằng chúng có thể nhanh chóng biến thành những con quái vật khó sử dụng—khó đọc, bảo trì hoặc khó sử dụng. 

Đây là lý do tại sao ngày nay chỉ biết SQL thôi là chưa đủ, chúng ta cần giỏi tạo các truy vấn. Và đây thực sự là một loại hình nghệ thuật. 

Đây là lúc Biểu thức bảng chung (CTE) phát huy tác dụng, biến nghệ thuật viết truy vấn thành một kỹ thuật có cấu trúc và dễ tiếp cận hơn.

Vì vậy, hãy cùng nhau khám phá cách viết mã các truy vấn có thể đọc được và có thể sử dụng lại.

Nếu bạn đang thắc mắc CTE là gì thì bạn đang xem đúng bài viết rồi. 

Biểu thức bảng chung (CTE) là tập kết quả tạm thời được xác định trong phạm vi thực thi của một câu lệnh SQL. 

 

Chúng là các bảng tạm thời có thể được tham chiếu nhiều lần trong một truy vấn và thường được sử dụng để đơn giản hóa các phép nối và truy vấn con phức tạp, với mục tiêu cuối cùng là tăng khả năng đọc và tổ chức mã SQL.

Vì vậy, chúng là công cụ mạnh mẽ để chia nhỏ các truy vấn phức tạp thành các phần đơn giản hơn.

Đây là lý do tại sao bạn nên cân nhắc sử dụng CTE:

  • Tính mô đun: Bạn có thể chia logic phức tạp thành các phần có thể đọc được.
  • Khả năng đọc: Nó làm cho việc hiểu luồng truy vấn SQL trở nên dễ dàng hơn.
  • Khả năng tái sử dụng: CTE có thể được tham chiếu nhiều lần trong một truy vấn, tránh lặp lại.

Điều kỳ diệu bắt đầu bằng mệnh đề WITH, đặt trước truy vấn chính của bạn và xác định các bảng tạm thời (CTE) khác nhau bằng các bí danh.

Do đó, chúng ta luôn cần bắt đầu truy vấn của mình bằng lệnh “WITH” để bắt đầu xác định CTE của riêng mình. Bằng cách sử dụng CTE, chúng ta có thể chia bất kỳ truy vấn SQL phức tạp nào thành: 

– Các bảng thời gian nhỏ tính toán các biến liên quan. 

– Một bảng cuối cùng chỉ lấy những biến mà chúng ta muốn làm đầu ra.

Và đây chính xác là cách tiếp cận MODULAR mà chúng tôi mong muốn ở bất kỳ mã nào!

 

SQL đơn giản hóa: Tạo các truy vấn mô-đun và dễ hiểu bằng CTE
Hình ảnh của Tác giả
 

Vì vậy, việc sử dụng CTE trong truy vấn cho phép chúng tôi:

– Thực thi bảng tạm thời MỘT LẦN và tham chiếu nó NHIỀU lần.

– Cải thiện khả năng đọc và đơn giản hóa logic phức tạp.

– Thúc đẩy khả năng sử dụng lại mã và thiết kế mô-đun.

Để hiểu rõ hơn về điều này, chúng ta có thể lấy một ví dụ thực tế về danh sách Airbnb ở Barcelona. 

Hãy tưởng tượng chúng ta muốn phân tích hiệu suất của danh sách theo vùng lân cận và so sánh nó với hiệu suất tổng thể của thành phố. Bạn cần phải tập hợp thông tin về các vùng lân cận, từng căn hộ, chủ nhà và giá cả.

Để minh họa điều này, chúng ta sẽ sử dụng Bên trongAirbnb bảng của Barcelona, ​​trông như sau: 

 

SQL đơn giản hóa: Tạo các truy vấn mô-đun và dễ hiểu bằng CTE
 

Một cách tiếp cận ngây thơ có thể khiến bạn tạo các truy vấn con lồng nhau mà nhanh chóng trở thành cơn ác mộng về bảo trì như truy vấn sau:

Mã của tác giả

Thay vào đó, chúng ta có thể sử dụng CTE để phân chia truy vấn của mình thành các phần logic—mỗi phần xác định một phần của câu đố.

  • Dữ liệu vùng lân cận: Tạo CTE để tóm tắt dữ liệu theo vùng lân cận.
  • Thông tin căn hộ và chủ nhà: Xác định CTE để biết chi tiết về căn hộ và chủ nhà.
  • Chỉ số toàn thành phố: Một CTE khác để thu thập số liệu thống kê cấp thành phố để so sánh.
  • hội cuối cùng: Kết hợp các CTE trong câu lệnh CHỌN cuối cùng để trình bày dữ liệu một cách liền mạch.

 

SQL đơn giản hóa: Tạo các truy vấn mô-đun và dễ hiểu bằng CTE
Hình ảnh của Tác giả
 

Và chúng ta sẽ kết thúc với truy vấn sau:

Mã của tác giả

Bằng cách sử dụng CTE, chúng tôi biến một truy vấn đơn lẻ có khả năng khổng lồ thành một tập hợp các mô-đun dữ liệu có tổ chức. Cách tiếp cận mô-đun này làm cho mã SQL trở nên trực quan hơn và dễ thích ứng hơn với các thay đổi. 

Nếu có yêu cầu mới xuất hiện, bạn có thể điều chỉnh hoặc thêm CTE mà không cần xem lại toàn bộ truy vấn.

Khi bạn đã thiết lập CTE của mình, bạn có thể sử dụng lại chúng để thực hiện phân tích so sánh. Ví dụ: nếu bạn muốn so sánh dữ liệu vùng lân cận với số liệu toàn thành phố, bạn có thể tham chiếu CTE của mình trong một loạt hoạt động THAM GIA. 

Điều này không chỉ tiết kiệm thời gian mà còn giúp mã của bạn hoạt động hiệu quả vì bạn sẽ không phải lặp lại cùng một truy vấn hai lần!

CTE là minh chứng cho nguyên tắc rằng một cấu trúc nhỏ sẽ có tác dụng lâu dài trong lập trình. Bằng cách áp dụng CTE, bạn có thể viết các truy vấn SQL rõ ràng hơn, dễ bảo trì hơn và có thể sử dụng lại. 

Nó hợp lý hóa quy trình phát triển truy vấn và giúp việc truyền đạt logic truy xuất dữ liệu phức tạp tới người khác dễ dàng hơn.

Hãy nhớ rằng, lần tới khi bạn chuẩn bị bắt tay vào viết một truy vấn con lồng nhau, nhiều liên kết, hãy cân nhắc việc chia nhỏ nó bằng CTE. 

Bản thân bạn trong tương lai—và bất kỳ ai khác có thể đọc mã của bạn—sẽ cảm ơn bạn.
 
 

Josep Ferrer là một kỹ sư phân tích từ Barcelona. Anh tốt nghiệp kỹ sư vật lý và hiện đang làm việc trong lĩnh vực Khoa học dữ liệu ứng dụng cho khả năng di chuyển của con người. Anh ấy là người sáng tạo nội dung bán thời gian tập trung vào khoa học dữ liệu và công nghệ. Bạn có thể liên hệ với anh ấy trên LinkedIn, Twitter or Trung bình.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img