Định dạng SQL

Định dạng câu SQL lộn xộn thành truy vấn gọn gàng, thụt lề rõ ràng. Hữu ích khi gỡ lỗi, review code, viết tài liệu. Hỗ trợ MySQL, PostgreSQL. Miễn phí.

Làm cho SQL dễ đọc trở lại

SQL chép từ log, ORM, công cụ BI hay tin nhắn của đồng nghiệp thường chỉ nằm trên một dòng dài: select u.id,u.name,count(o.id) from users u left join orders o on o.user_id=u.id where u.active=1 group by u.id order by 3 desc. Công cụ định dạng SQL tách nó ra nhiều dòng, đặt mỗi mệnh đề (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY) đúng chỗ và thụt lề để bạn dễ theo dõi logic.

SQL dễ đọc thì dễ gỡ lỗi, review và viết tài liệu hơn. Phát hiện một điều kiện join bị thiếu hay một WHERE đặt sai chỗ nhanh hơn nhiều khi truy vấn được trình bày gọn gàng.

Công cụ hoạt động với SQL chuẩn dùng trong MySQL, MariaDB, PostgreSQL, SQLite, SQL Server và nhiều hệ khác.

Cách dùng công cụ định dạng SQL

  1. Dán câu truy vấn SQL.
  2. Gửi để định dạng.
  3. Đọc hoặc chép SQL đã định dạng.

Ví dụ

Truy vấn báo cáo trên một dòng

Đầu vào:

select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.active = 1 group by u.id, u.name order by orders desc limit 10

Kết quả:

select
  u.id,
  u.name,
  count(o.id) as orders
from
  users u
  left join orders o on o.user_id = u.id
where
  u.active = 1
group by
  u.id,
  u.name
order by
  orders desc
limit
  10

Mỗi mệnh đề có một dòng riêng và mỗi cột được thụt lề. Từ khóa giữ nguyên kiểu chữ hoa/thường bạn đã gõ.

Câu lệnh UPDATE

Đầu vào: UPDATE products SET price = price * 1.1 WHERE category_id IN (3, 7);

Kết quả:

UPDATE
  products
SET
  price = price * 1.1
WHERE
  category_id IN (3, 7);

Ứng dụng phổ biến

  • Đọc truy vấn lấy từ log ứng dụng hoặc output debug của ORM.
  • Chuẩn bị SQL cho review code và pull request.
  • Viết tài liệu và bài hướng dẫn có ví dụ rõ ràng.
  • Gỡ lỗi truy vấn dài có nhiều join và truy vấn con.
  • Dọn gọn truy vấn trước khi lưu vào công cụ BI hoặc notebook.
  • Đọc truy vấn chép từ log ứng dụng, nơi chúng thường nằm trên một dòng.

Mẹo và lưu ý

  • Định dạng chỉ thay đổi khoảng trắng. Nó không kiểm tra SQL và không làm thay đổi kết quả.
  • Xóa dữ liệu thật của khách hàng và mật khẩu khỏi truy vấn trước khi dán lên bất kỳ trang online nào.
  • Thống nhất một phong cách cho cả nhóm, chẳng hạn từ khóa viết hoa và mỗi cột một dòng.
  • Đổi kiểu viết tên định danh bằng công cụ đổi chữ hoa thường, và định dạng kết quả JSON bằng công cụ làm đẹp JSON.

Trường hợp đặc biệt và giới hạn

  • Từ khóa không được tự viết hoa. Nếu nhóm bạn quy ước viết hoa từ khóa, hãy gõ sẵn như vậy.
  • Nhiều câu lệnh ngăn cách bằng dấu chấm phẩy sẽ được định dạng lần lượt.
  • Chú thích được giữ lại. Chuỗi và tên định danh trong dấu nháy không bị thay đổi.

Câu hỏi thường gặp

Định dạng có làm thay đổi kết quả truy vấn không?

Không. Chỉ khoảng trắng và xuống dòng thay đổi, nên truy vấn vẫn trả về cùng kết quả.

Công cụ hỗ trợ những phương ngữ SQL nào?

Từ khóa SQL chuẩn dùng trong MySQL, PostgreSQL, SQLite, SQL Server và các cơ sở dữ liệu tương tự đều được định dạng tốt.

Công cụ có kiểm tra lỗi SQL không?

Không. Nó chỉ định dạng văn bản; hãy chạy truy vấn trong cơ sở dữ liệu để kiểm tra lỗi.

Từ khóa SQL có nên viết hoa không?

Không bắt buộc, nhưng viết hoa từ khóa là quy ước phổ biến giúp đọc lướt truy vấn dễ hơn.

Công cụ liên quan

Công cụ miễn phí phổ biến