tigtools

Trình định dạng SQL

Dán truy vấn, chọn biến thể SQL của cơ sở dữ liệu và nhận đoạn SQL gọn gàng, thụt lề nhất quán. Không có dữ liệu nào được gửi lên máy chủ.

Chạy ngay trên trình duyệt Không cần đăng ký

Thụt lề

Cách sử dụng

  1. Dán một hoặc nhiều câu lệnh SQL, hoặc nhấn “Dùng thử ví dụ”.
  2. Chọn biến thể SQL của cơ sở dữ liệu để nhận diện đúng từ khóa, cách đặt tên trong dấu trích dẫn và toán tử.
  3. Chọn kiểu chữ của từ khóa và mức thụt lề. Truy vấn đã định dạng sẽ xuất hiện ở bên phải khi bạn nhập.
  4. Nhấn Thu gọn để tạo phiên bản một dòng, sau đó sao chép kết quả hoặc tải xuống dưới dạng tệp .sql.

Cách hoạt động

Công cụ định dạng sử dụng thư viện mã nguồn mở sql-formatter. Thư viện phân tách truy vấn thành các token theo quy tắc của biến thể SQL bạn chọn, đặt mỗi mệnh đề chính (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) trên một dòng riêng, thụt lề danh sách cột và điều kiện, rồi áp dụng kiểu chữ hoa/thường cho từ khóa bạn chọn. Công cụ chỉ thay đổi khoảng trắng và, nếu bạn yêu cầu, kiểu chữ hoa/thường của từ khóa; tên định danh, chuỗi ký tự và chú thích được giữ nguyên. Việc chọn đúng biến thể SQL rất quan trọng: chẳng hạn, MySQL dùng dấu huyền để đặt tên trong dấu trích dẫn, SQL Server dùng dấu ngoặc vuông, còn PostgreSQL dùng $$ để mở đầu phần thân hàm.

Công cụ định dạng chỉ sắp xếp bố cục, không phải cơ sở dữ liệu. Công cụ không kiểm tra bảng hoặc cột có tồn tại hay không và không xác thực toàn bộ ngữ pháp, vì vậy một số câu lệnh SQL không hợp lệ vẫn được định dạng mà không báo lỗi. Khi không thể phân tích đầu vào, chẳng hạn như gặp dấu ngoặc chưa đóng, công cụ sẽ báo dòng và cột nơi quá trình bị dừng.

Thu gọn hoạt động theo cách khác: công cụ giữ nguyên mọi token, chỉ gộp mỗi chuỗi khoảng trắng thành một dấu cách và xóa chú thích (các gợi ý tối ưu hóa như /*+ INDEX(t) */ và chú thích MySQL /*! … */ được giữ lại vì chúng làm thay đổi hành vi). Chuỗi ký tự, tên định danh đặt trong dấu trích dẫn và phần thân được đặt trong dấu đô-la đều được sao chép nguyên trạng. Nếu dấu trích dẫn hoặc chú thích chưa được đóng, công cụ sẽ dừng và báo lỗi thay vì tự đoán.

Ví dụ

Đọc truy vấn từ nhật ký

Nhật ký truy vấn chậm hiển thị một dòng dài 400 ký tự. Khi chọn biến thể MySQL và viết hoa từ khóa, truy vấn sẽ được chuyển thành một khối dễ đọc, trong đó mỗi điều kiện JOIN và WHERE nằm trên dòng riêng, giúp dễ dàng phát hiện chỉ mục còn thiếu.

Thống nhất kiểu định dạng khi duyệt mã

Một nhóm định dạng mọi migration bằng biến thể PostgreSQL, từ khóa viết thường và thụt lề 4 dấu cách trước khi commit, nhờ đó các khác biệt chỉ thể hiện những thay đổi thực sự.

Nhúng SQL vào mã

Thu gọn chuyển truy vấn báo cáo nhiều dòng có chú thích thành một dòng, chẳng hạn SELECT id, name FROM users WHERE active = 1 ORDER BY name, sẵn sàng để chèn vào chuỗi trong tập lệnh.

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

Công cụ hỗ trợ những cơ sở dữ liệu nào?

Standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark SQL, Hive, Trino/Presto, DuckDB, IBM Db2, SingleStoreDB, TiDB và Couchbase N1QL.

Việc định dạng có làm thay đổi chức năng của truy vấn không?

Không nên: chỉ có khoảng trắng và, nếu được chọn, kiểu chữ hoa/thường của từ khóa bị thay đổi. Trong SQL, kiểu chữ hoa/thường của từ khóa không ảnh hưởng. Tuy vậy, hãy xem lại kết quả trước khi chạy trên dữ liệu production, nhất là khi dùng các tính năng khác thường của biến thể SQL.

Vì sao tôi nhận được thông báo “không thể định dạng”?

Trình phân tích token gặp phải nội dung không thể xử lý, thường là dấu ngoặc hoặc dấu trích dẫn chưa đóng, hoặc cú pháp thuộc một biến thể SQL khác. Kiểm tra dòng và cột trong thông báo, đồng thời đảm bảo biến thể SQL đã chọn khớp với cơ sở dữ liệu của bạn.

Công cụ có xác thực SQL của tôi không?

Không. Công cụ không kết nối với cơ sở dữ liệu và không biết lược đồ của bạn. Truy vấn vẫn có thể được định dạng nhưng gặp lỗi khi chạy.

Quyền riêng tư

SQL của bạn được định dạng bằng JavaScript ngay trong trình duyệt. Nội dung không được tải lên, lưu trữ hay đưa vào dữ liệu phân tích; công cụ cũng không bao giờ kết nối với cơ sở dữ liệu.