Công cụ định dạng SQL

Định dạng SQL trực tuyến

Biến câu truy vấn dài thành các khối dễ đọc. Chọn phương ngữ của cơ sở dữ liệu để theo dõi cột, điều kiện nối và truy vấn lồng nhau.

Trình soạn thảo truy vấnXử lý trong trình duyệt · không chạy SQL
Tải ví dụ
213 / 50.000 ký tự

02 SQL đã định dạng

Câu truy vấn gốc được giữ nguyên

Đọc lại SQL từ nhật ký ứng dụng

SQL lấy từ ORM hoặc nhật ký ứng dụng thường nằm trên một dòng dài. Công cụ định dạng SQL ngắt dòng các mệnh đề và thụt lề phần lồng nhau, giúp bạn tìm danh sách cột, điều kiện JOIN và bộ lọc nhanh hơn khi rà soát mã.

Dán truy vấn, chọn phương ngữ rồi đặt thụt lề bằng hai dấu cách, bốn dấu cách hoặc tab. Chọn cách viết từ khóa và nhấn Định dạng SQL. Kết quả nằm ở ô riêng để đối chiếu với bản gốc. Khi sửa đầu vào hoặc tùy chọn, kết quả cũ sẽ bị xóa; hãy định dạng lại trước khi sao chép.

Chọn phương ngữ theo cơ sở dữ liệu nguồn

Bạn có thể chọn SQL tiêu chuẩn, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle SQL, BigQuery hoặc Snowflake. Phương ngữ phù hợp giúp nhận diện cú pháp riêng và cách bao tên định danh, chẳng hạn dấu backtick trong MySQL.

Việc đổi lựa chọn không chuyển truy vấn từ hệ quản trị này sang hệ quản trị khác. Công cụ không thay hàm hay điều chỉnh cấu trúc bảng. Tùy chọn Oracle SQL cũng không đồng nghĩa với hỗ trợ mọi thủ tục lưu trữ.

Dễ đọc hơn để kiểm tra kỹ hơn

Tách WHERE khỏi HAVING giúp phân biệt điều kiện lọc từng dòng với điều kiện lọc nhóm. Thụt lề cho CTE và truy vấn con làm rõ các tầng xử lý. Tuy nhiên, hình thức gọn gàng không đảm bảo truy vấn thực hiện đúng yêu cầu.

Tùy chọn chữ hoa và chữ thường chỉ tác động đến từ khóa được nhận diện. Tên định danh, tên hàm và kiểu dữ liệu giữ nguyên cách viết; tham số không được điền giá trị. Chú thích được giữ lại nhưng có thể thay đổi vị trí hoặc khoảng trắng. Hãy kiểm tra kết quả trong ngữ cảnh cơ sở dữ liệu trước khi dùng.

Ví dụ SQL sau khi định dạng

Các ví dụ dùng dữ liệu giả định, từ khóa viết hoa và thụt lề hai dấu cách. Khi tải ví dụ trong trình soạn thảo, phương ngữ tương ứng cũng được chọn.

JOIN và tổng hợp

Tổng hợp đơn đã thanh toán theo khách hàng rồi lọc tổng tiền. Điều kiện nối, lọc dòng và lọc nhóm được thể hiện riêng.

SELECT
  c.id,
  c.name,
  count(o.id) AS order_count,
  sum(o.total) AS revenue
FROM
  customers c
  JOIN orders o ON o.customer_id = c.id
WHERE
  o.status = 'paid'
GROUP BY
  c.id,
  c.name
HAVING
  sum(o.total) > 1000
ORDER BY
  revenue DESC;
Quay lại công cụ

CTE và hàm cửa sổ

Ví dụ PostgreSQL dùng CTE cùng ROW_NUMBER để xếp thứ tự đơn của từng khách hàng. Xem cách SELECT lồng nhau được trình bày.

WITH
  ranked_orders AS (
    SELECT
      id,
      customer_id,
      total,
      row_number() OVER (
        PARTITION BY
          customer_id
        ORDER BY
          created_at DESC
      ) AS position
    FROM
      orders
    WHERE
      created_at >= date '2024-01-01'
  )
SELECT
  customer_id,
  id,
  total
FROM
  ranked_orders
WHERE
  position = 1
ORDER BY
  customer_id;
Quay lại công cụ

INSERT và chú thích

Ví dụ MySQL có tên định danh bao bằng backtick, chú thích và dấu chấm phẩy trong chuỗi. Ký tự trong chuỗi vẫn là dữ liệu.

-- Fictional seed data
INSERT INTO
  `products` (`sku`, `name`, `price`)
VALUES
  ('DEMO-01', 'Desk lamp; warm light', 29.95),
  ('DEMO-02', 'Reader''s notebook', 8.50);
Quay lại công cụ

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

Lưu kết quả bằng cách nào?

Nhấn Sao chép hoặc tải tệp formatted.sql. Bạn cũng có thể bắt đầu định dạng bằng Ctrl+Enter hoặc Command+Enter trên macOS.

Truy vấn có được gửi lên máy chủ không?

Việc định dạng diễn ra trong Web Worker của trình duyệt. Công cụ không gửi truy vấn tới API định dạng, không kết nối cơ sở dữ liệu, không lưu đầu vào lâu dài và không đưa SQL vào URL.

Công cụ có sửa lỗi hoặc tăng tốc truy vấn không?

Không. Công cụ sắp xếp khoảng trắng, ngắt dòng và kiểu chữ từ khóa. Nó không kiểm tra bảng, cột, kiểu dữ liệu, quyền truy cập hay kế hoạch thực thi. Hãy dùng công cụ của hệ quản trị để kiểm tra và phân tích hiệu năng.

Có thể nhập nhiều câu lệnh không?

Có, với các câu lệnh SQL thông thường phân cách bằng dấu chấm phẩy. Dấu chấm phẩy trong chuỗi được nhận diện vẫn là dữ liệu. Dấu phân cách tùy chỉnh, thủ tục và tập lệnh riêng của phần mềm khách không thuộc phạm vi hỗ trợ.

Vì sao định dạng thất bại?

Hãy kiểm tra phương ngữ và các cặp dấu nháy, dấu ngoặc. Cú pháp mẫu hay nội suy mã ứng dụng có thể không được nhận diện. Giới hạn đầu vào là 50.000 ký tự và tác vụ dừng sau mười giây. Nên chia tập lệnh dài thành phần nhỏ.

Chú thích và chỗ giữ chỗ có bị xóa không?

Chú thích vẫn được giữ lại, nhưng bố cục có thể thay đổi. Công cụ không thay chỗ giữ chỗ được phương ngữ hỗ trợ bằng giá trị. Chú thích vô hiệu hóa định dạng có thể khiến một đoạn giữ nguyên bố cục ban đầu.

SQL Formatter · GitHub

Quay lại công cụ