Trình định dạng SQL
Cấu hình
Phương ngữ SQL
Thụt lề
Kiểu thụt lề
Kiểu chữ của từ khóa
Đầu vào
Đầu ra
Chi tiết kỹ thuật
Cách Trình Định Dạng SQL Hoạt Động
Công cụ làm gì
Trình định dạng SQL là một tiện ích dành cho lập trình viên, nhận các truy vấn SQL chưa được định dạng và chuyển đổi chúng thành mã dễ đọc với thụt lề nhất quán. Nó phân tích câu lệnh SQL, nhận diện từ khóa, mệnh đề và biểu thức, sau đó định dạng lại với thụt lề và xuống dòng phù hợp. Công cụ hoạt động như cả trình làm đẹp (beautifier) và trình làm đẹp theo chuẩn (prettifier) cho SQL, giúp các truy vấn một dòng gọn trở nên dễ đọc. Khi bạn cần format sql online, công cụ dựa trên trình duyệt này cho kết quả ngay lập tức. Nó có các preset theo phương ngữ cho MySQL, PostgreSQL, SQL Server, SQLite, BigQuery, Snowflake và nhiều hệ quản trị cơ sở dữ liệu khác, cung cấp hỗ trợ tốt nhất có thể cho cú pháp đặc thù của từng nhà cung cấp. Trình định dạng truy vấn SQL có thể xử lý câu lệnh SELECT, truy vấn INSERT, lệnh UPDATE, định nghĩa CREATE TABLE và các truy vấn phức tạp với join, subquery và CTE. Trình định dạng cũng chuẩn hóa kiểu chữ của từ khóa (viết hoa hoặc viết thường) và áp dụng khoảng trắng nhất quán quanh toán tử và mệnh đề.
Các trường hợp sử dụng phổ biến cho lập trình viên
Lập trình viên dùng trình định dạng SQL để làm truy vấn cơ sở dữ liệu dễ đọc trong quá trình code review, khi gỡ lỗi hiệu năng truy vấn hoặc khi tài liệu hóa schema cơ sở dữ liệu. Trình định dạng SQL giúp phát hiện lỗi logic, thiếu join hoặc cấu trúc truy vấn kém hiệu quả. Nhiều lập trình viên dùng trình định dạng SQL để pretty print sql, chuẩn hóa phong cách truy vấn trong một nhóm và đảm bảo thụt lề cũng như kiểu chữ từ khóa nhất quán. Công cụ hữu ích khi làm việc với codebase legacy chứa SQL định dạng kém, hoặc khi trích xuất truy vấn từ log ứng dụng vốn xuất hiện dưới dạng chuỗi một dòng. Trình định dạng SQL cũng giúp khi chuẩn bị truy vấn cho tài liệu, thuyết trình hoặc chia sẻ với thành viên trong nhóm.
Định dạng dữ liệu, kiểu hoặc biến thể
Trình định dạng SQL xử lý nhiều phương ngữ SQL khác nhau, mỗi phương ngữ có các tính năng cú pháp riêng. Trình định dạng cung cấp preset theo phương ngữ cho MySQL, PostgreSQL, SQL Server, SQLite, BigQuery, Snowflake và nhiều hệ quản trị cơ sở dữ liệu khác, với hỗ trợ tốt nhất có thể cho cú pháp đặc thù của từng nhà cung cấp. MySQL hỗ trợ định danh bằng dấu backtick và các hàm cụ thể như CONCAT. PostgreSQL dùng chuỗi dollar-quoted và cú pháp mảng. SQL Server bao gồm các phần mở rộng T-SQL như TOP và các kiểu dữ liệu riêng. Trình định dạng hỗ trợ các kiểu thụt lề khác nhau: tiêu chuẩn (các mệnh đề căn thẳng hàng), dạng bảng trái (từ khóa căn phải), và dạng bảng phải (từ khóa căn trái). Nó có thể định dạng các câu lệnh DDL (CREATE, ALTER, DROP), DML (SELECT, INSERT, UPDATE, DELETE) và DCL (GRANT, REVOKE). Các truy vấn phức tạp với CTE, hàm cửa sổ và subquery lồng nhau được xử lý với mức thụt lề phù hợp.
Ví dụ, một truy vấn gọn như sau:
SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE u.created_at>'2024-01-01' ORDER BY o.total DESC LIMIT 10
sẽ được định dạng với thụt lề phù hợp:
SELECT
u.id,
u.name,
o.total
FROM
users u
JOIN orders o ON u.id = o.user_id
WHERE
u.created_at > '2024-01-01'
ORDER BY
o.total DESC
LIMIT
10Các lỗi thường gặp và trường hợp biên
Trình định dạng SQL có thể gặp khó khăn với các phần mở rộng đặc thù của nhà cung cấp hoặc cú pháp SQL không chuẩn không phù hợp với quy tắc phân tích tiêu chuẩn. Định danh có dấu ngoặc kép khác nhau theo cơ sở dữ liệu: PostgreSQL dùng "User", SQL Server dùng [User], và MySQL dùng backtick `user`. Placeholder tham số cũng khác nhau: PostgreSQL dùng $1, MySQL dùng ?, và SQL Server dùng @id. Trình định dạng có thể không luôn xử lý đúng các trường hợp này tùy theo phương ngữ được chọn. Chú thích trong SQL (cả kiểu một dòng và kiểu khối) phải được giữ chính xác, vì một số trình định dạng có thể xử lý sai. Stored procedure, function và trigger có luồng điều khiển phức tạp có thể khó định dạng nhất quán. SQL động được dựng dưới dạng chuỗi có thể không được định dạng đúng vì trình định dạng nhìn nó như một literal chuỗi. Một số trình định dạng có thể xử lý sai câu lệnh CASE, hàm cửa sổ hoặc điều kiện JOIN phức tạp. Lập trình viên nên kiểm tra để đảm bảo việc định dạng không làm thay đổi ngữ nghĩa truy vấn, đặc biệt với các trường hợp biên liên quan đến độ ưu tiên toán tử hoặc lời gọi hàm.
Khi nào nên dùng công cụ này thay vì viết mã
Hãy dùng trình định dạng SQL trên trình duyệt để định dạng truy vấn nhanh, các tác vụ một lần, hoặc khi làm việc ngoài môi trường phát triển của bạn. Nó lý tưởng để định dạng các truy vấn SQL tìm thấy trong log, tài liệu hoặc đoạn mã được chia sẻ. Với mã production, hãy dùng trình định dạng tích hợp trong IDE hoặc công cụ dòng lệnh có thể tích hợp vào pre-commit hook và pipeline CI/CD. Các công cụ quản trị cơ sở dữ liệu thường có sẵn trình định dạng tích hợp hiểu schema cơ sở dữ liệu cụ thể của bạn. Công cụ trình duyệt phù hợp cho định dạng ad-hoc, trong khi giải pháp dựa trên mã cung cấp tính nhất quán, tự động hóa và tích hợp với kiểm soát phiên bản. Với codebase lớn, định dạng SQL tự động đảm bảo phong cách nhất quán trên mọi truy vấn cơ sở dữ liệu.