Đọ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.
