Công cụ định dạng SQL
Enter SQL on the left to start formatting
Công cụ định dạng SQL GeekFormat nhanh chóng làm đẹp và sắp xếp các câu lệnh truy vấn SQL lộn xộn. Hỗ trợ 20 phương ngữ cơ sở dữ liệu bao gồm MySQL, PostgreSQL, SQLite, SQL Server, Oracle, v.v., với các tùy chọn định dạng có thể tùy chỉnh như chữ hoa chữ thường từ khóa, kiểu thụt lề, vị trí xuống dòng toán tử, độ rộng biểu thức. Cung cấp 4 kiểu cài sẵn một cú nhấp chuột với chức năng nén SQL và xác thực cú pháp tích hợp, hỗ trợ tải lên/tải xuống tệp, chia sẻ URL, phím tắt. Cung cấp tô sáng cú pháp và bố cục bảng điều khiển có thể điều chỉnh dựa trên trình soạn thảo CodeMirror 6 với định dạng tự động thời gian thực sau khi nhập. Tất cả xử lý diễn ra cục bộ trong trình duyệt của bạn—câu lệnh SQL không bao giờ được tải lên máy chủ.
Đề xuất Liên quan
Về Định dạng SQL
Định dạng SQL (SQL Formatting / SQL Beautification) đề cập đến việc điều chỉnh các ký tự khoảng trắng (xuống dòng, thụt lề, khoảng trắng) và chữ hoa chữ thường từ khóa của câu lệnh SQL thông qua các công cụ tự động để tạo cho chúng cấu trúc bố cục nhất quán, dễ đọc cao. Là một ngôn ngữ truy vấn khai báo, một truy vấn SQL phức tạp thường liên quan đến nhiều mệnh đề như JOIN nhiều bảng, truy vấn con lồng nhau, nhiều điều kiện WHERE, nhóm GROUP BY, lọc HAVING, sắp xếp ORDER BY, v.v. Nếu không được định dạng, tất cả nội dung nhồi vào một dòng hoặc với thụt lề hỗn loạn sẽ ảnh hưởng nghiêm trọng đến khả năng đọc và hiệu quả bảo trì. SQL đã định dạng đặt mỗi mệnh đề trên dòng riêng của nó thông qua xuống dòng và thụt lề hợp lý, thể hiện các mức lồng nhau thông qua thụt lề, cho phép người đọc nhanh chóng hiểu cấu trúc truy vấn.
Tại sao định dạng SQL lại quan trọng? Trong môi trường hợp tác nhóm, các nhà phát triển khác nhau có sở thích kiểu mã hóa khác nhau—một số thích từ khóa chữ hoa, những người khác thích chữ thường; một số sử dụng thụt lề 2 khoảng trắng, những người khác sử dụng 4 khoảng trắng hoặc Tab; một số đặt AND ở đầu dòng, những người khác ở cuối dòng. Bản thân những khác biệt về kiểu này không ảnh hưởng đến việc thực thi SQL nhưng tạo ra lượng diff lớn vô nghĩa trong quá trình Đánh giá mã (Code Review), yêu cầu người xem phân biệt giữa thay đổi logic thực sự và chỉ điều chỉnh định dạng. Tiêu chuẩn định dạng SQL thống nhất và các công cụ định dạng tự động loại bỏ các cuộc tranh luận về kiểu, cho phép các nhóm tập trung vào logic nghiệp vụ bản thân.
Các quy tắc cốt lõi của định dạng SQL thường bao gồm các khía cạnh sau: Thứ nhất, chữ hoa chữ thường từ khóa—các từ dành riêng SQL như SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, HAVING, LIMIT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP thường được viết hoa để phân biệt với định danh (hoặc viết thường thống nhất theo tiêu chuẩn nhóm); Thứ hai, xuống dòng mệnh đề—mỗi mệnh đề chính (SELECT/FROM/WHERE/GROUP BY/ORDER BY, v.v.) trên dòng riêng; Thứ ba, căn chỉnh tên cột—nhiều tên cột trong danh sách SELECT mỗi tên chiếm một dòng và căn chỉnh theo chiều dọc; Thứ tư, mức thụt lề—truy vấn con, điều kiện JOIN, biểu thức CASE lồng nhau, v.v., phản ánh phân cấp thông qua tăng thụt lề; Thứ năm, vị trí toán tử—các toán tử logic như AND/OR được đặt thống nhất ở đầu hoặc cuối dòng.
Định dạng SQL cho các phương ngữ cơ sở dữ liệu khác nhau có những đặc thù của nó. MySQL sử dụng dấu backtick (`) để trích dẫn định danh, PostgreSQL sử dụng dấu ngoặc kép ("), SQL Server sử dụng dấu ngoặc vuông ([]); MySQL sử dụng LIMIT để phân trang, PostgreSQL hỗ trợ LIMIT/OFFSET, SQL Server sử dụng TOP hoặc OFFSET/FETCH, Oracle sử dụng ROWNUM; PostgreSQL có toán tử ép kiểu ::, MySQL có thoát dấu backtick, SQL Server có định danh dấu ngoặc vuông. Những khác biệt phương ngữ này yêu cầu trình định dạng nhận dạng các yếu tố cú pháp cụ thể cho cơ sở dữ liệu cụ thể, nếu không cú pháp đặc biệt có thể bị đánh giá sai là lỗi hoặc từ khóa bị tách không chính xác. Công cụ này được triển khai dựa trên thư viện sql-formatter, cung cấp hỗ trợ cú pháp chuyên biệt cho 20 phương ngữ SQL chính thống.
Nén SQL (SQL Minification) là hành động ngược lại của định dạng và rất hữu ích trong một số tình huống nhất định. SQL được in trong nhật ký ứng dụng, SQL được tạo bởi khung ORM (như Hibernate, MyBatis, Django ORM, SQLAlchemy), SQL được thu bởi các công cụ giám sát hiệu suất cơ sở dữ liệu—những thứ này thường ở định dạng nén một dòng không có xuống dòng, rất không thân thiện cho việc khắc phục sự cố—cần định dạng trước để đọc. Ngược lại, khi cần nhúng SQL vào chuỗi mã (như nối chuỗi trong Java/Python/JavaScript), ghi vào tệp cấu hình, truyền qua tham số URL hoặc chia sẻ trong các công cụ trò chuyện không hỗ trợ văn bản nhiều dòng, nén thành một dòng tránh các vấn đề định dạng do xuống dòng và thụt lề gây ra.
Việc chọn kiểu định dạng phù hợp đòi hỏi xem xét tiêu chuẩn nhóm và tình huống sử dụng. Kiểu từ khóa chữ hoa là quy ước truyền thống của SQL—trong thời kỳ in ấn, từ khóa chữ hoa làm cho SQL viết tay hoặc đánh máy dễ đọc hơn, và nhiều nhóm và tổ chức vẫn sử dụng nó ngày nay. Kiểu từ khóa chữ thường ngày càng phổ biến trên các nền tảng mã hiện đại như GitHub vì chữ thường mềm mại hơn về mặt trực quan và, với tô sáng cú pháp trong các trình soạn thảo hiện đại, không còn yêu cầu chữ hoa chữ thường để phân biệt từ khóa. Độ rộng thụt lề 2 khoảng trắng phổ biến hơn trong các nhà phát triển frontend, 4 khoảng trắng phổ biến hơn trong các nhà phát triển backend Java/C#. Thụt lề Tab cho phép các nhà phát triển khác nhau tùy chỉnh độ rộng hiển thị trong trình soạn thảo. Đặt các toán tử logic AND/OR ở đầu dòng làm cho việc quét từng điều kiện dễ dàng hơn khi đọc danh sách điều kiện dài; đặt ở cuối dòng phù hợp hơn với thói quen đọc tiếng Anh.
Nguyên tắc triển khai của các công cụ định dạng SQL chủ yếu dựa trên phân tích từ vựng (Tokenization) và phân tích cú pháp. Các thư viện như sql-formatter trước tiên phân tách chuỗi SQL thành một loạt token (từ khóa, định danh, giá trị ký tự, toán tử, dấu câu, chú thích, v.v.), sau đó sắp xếp lại các token này theo quy tắc cú pháp (các phương ngữ khác nhau có bộ quy tắc khác nhau), chèn xuống dòng và thụt lề ở các vị trí thích hợp. Không giống như các trình định dạng mã chung (như Prettier), trình định dạng SQL cần hiểu các cấu trúc ngữ pháp cụ thể của SQL (như điều kiện JOIN...ON, biểu thức CASE WHEN...END, lồng ngoặc truy vấn con) để thụt lề chính xác, không chỉ dựa vào khớp dấu ngoặc nhọn hoặc dấu ngoặc đơn.
Cần lưu ý các điểm sau khi sử dụng công cụ định dạng SQL: Thứ nhất, định dạng không xác minh tính đúng đắn ngữ nghĩa của SQL—SQL có cú pháp chính xác nhưng lỗi logic (như điều kiện JOIN sai, điều kiện WHERE bị thiếu) vẫn không chính xác sau khi định dạng; định dạng chỉ cải thiện bố cục, không cải thiện logic; Thứ hai, các công cụ định dạng có thể trong các trường hợp cạnh hiếm gặp tạo ra kết quả khác với SQL gốc trong các tình huống nhạy cảm với khoảng trắng (như khoảng trắng trong hằng số chuỗi, vị trí chú thích cụ thể); khuyến nghị xác minh đơn giản sau khi định dạng; Thứ ba, đừng thực thi SQL được tạo bởi công cụ định dạng trực tiếp trong sản xuất mà không kiểm tra, đặc biệt là SQL chứa tham số động; Thứ tư, đối với SQL chứa dữ liệu nhạy cảm (mật khẩu, khóa, PII), hãy sử dụng công cụ định dạng cục bộ (như công cụ này) thay vì công cụ trực tuyến để tránh rủi ro rò rỉ dữ liệu.
Trường hợp sử dụng
- Sắp xếp các thủ tục lưu trữ SQL lớn không được định dạng và truy vấn JOIN phức tạp khi tiếp nhận dự án kế thừa để hiểu logic nghiệp vụ nhanh chóng
- Chuẩn hóa kiểu SQL trước khi đánh giá mã nhóm để loại bỏ nhiễu diff do sở thích định dạng cá nhân gây ra và tập trung vào đánh giá logic
- Định dạng SQL một dòng nén được sao chép từ nhật ký hoặc bảng điều khiển để đọc và khắc phục sự cố dễ dàng hơn
- Định dạng các ví dụ SQL khi viết tài liệu kỹ thuật và blog để tăng tính chuyên nghiệp và khả năng đọc khi nhúng vào tài liệu
- Định dạng lại SQL được xuất từ máy khách cơ sở dữ liệu với định dạng lộn xộn thành kiểu chuẩn của nhóm trước khi commit mã
- Định dạng các câu lệnh trình diễn SQL để sử dụng trong PPT và giải thích bảng trắng khi chuẩn bị cho phỏng vấn hoặc trình bày kỹ thuật
- Định dạng các truy vấn con lồng nhau lộn xộn để xác định các vấn đề cấu trúc như dấu ngoặc không khớp hoặc từ khóa bị thiếu khi khắc phục lỗi SQL
- Nhật ký SQL được tạo bởi khung ORM thường ở định dạng nén không có xuống dòng; định dạng chúng để phân tích các truy vấn thực tế thực thi dễ dàng hơn
- Định dạng các câu lệnh CREATE TABLE và INSERT để cải thiện khả năng bảo trì khi phát triển tập lệnh di chuyển dữ liệu
- Chuẩn hóa định dạng trước khi so sánh các phiên bản SQL trên các phiên bản khác nhau để tránh sự khác biệt định dạng thuần túy can thiệp vào đánh giá mã
- Định dạng các truy vấn mẫu khi học SQL để hiểu mối quan hệ phân cấp của JOIN, truy vấn con và GROUP BY thông qua thụt lề và xuống dòng rõ ràng
- Định dạng các đoạn mã SQL trước khi chia sẻ với đồng nghiệp qua liên kết URL—người nhận thấy kết quả định dạng giống hệt nhau ngay lập tức khi mở
Cách Sử dụng
- Chọn phương ngữ cơ sở dữ liệu (mặc định là MySQL, hỗ trợ 20 phương ngữ SQL) để đảm bảo trình định dạng nhận dạng cú pháp chính xác
- Dán các câu lệnh SQL cần định dạng vào khu vực soạn thảo bên trái, hoặc nhấp nút tải lên để nhập tệp .sql/.txt, hoặc tải SQL mẫu từ menu mẫu
- Nhấp nút định dạng (Shift+Cmd/Ctrl+F) hoặc chờ định dạng tự động (tự động kích hoạt 800ms sau khi nhập), với kết quả định dạng hiển thị tức thì ở bên phải
- Để điều chỉnh định dạng, nhấp nút cài đặt để mở rộng bảng điều khiển cấu hình, điều chỉnh các tùy chọn như chữ hoa chữ thường từ khóa, thụt lề, xuống dòng, hoặc chọn kiểu cài sẵn; để nén một dòng, nhấp nút nén
- Nhấp nút sao chép để sao chép kết quả, hoặc nhấp nút tải xuống để lưu dưới dạng tệp .sql, hoặc nhấp nút chia sẻ để tạo liên kết URL chứa nội dung SQL
Tính năng
- Tương thích 20 phương ngữ cơ sở dữ liệu: Hỗ trợ nhận dạng cú pháp và định dạng cho 20 phương ngữ SQL bao gồm Standard SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, PL/SQL (Oracle), T-SQL (SQL Server), Spark SQL, Hive, Trino, ClickHouse, DuckDB và nhiều hơn nữa
- Kiểm soát chữ hoa chữ thường từ khóa: Ba chế độ cho từ khóa như SELECT/FROM/WHERE/JOIN: chữ hoa (UPPER), chữ thường (lower) hoặc giữ nguyên (preserve), với cấu hình riêng cho kiểu dữ liệu và tên hàm
- Kiểm soát chữ hoa chữ thường định danh: Định danh như tên bảng, tên cột, bí danh hỗ trợ chữ hoa, chữ thường hoặc giữ nguyên, thích ứng với tiêu chuẩn mã hóa của các nhóm khác nhau
- Kiểu thụt lề có thể lựa chọn: Ba kiểu thụt lề có sẵn: thụt lề tiêu chuẩn, căn trái dạng bảng (tabularLeft), căn phải dạng bảng (tabularRight) để phù hợp với sở thích đọc khác nhau
- Cấu hình thụt lề linh hoạt: Chọn độ rộng thụt lề từ 2 khoảng trắng, 4 khoảng trắng hoặc ký tự Tab; đặt số dòng trống giữa các câu lệnh truy vấn thành 0/1/2 dòng
- Xuống dòng toán tử logic: Cấu hình xem toán tử logic như AND/OR xuống dòng trước (before) hoặc sau (after) toán tử để khớp với kiểu mã của nhóm bạn
- Kiểm soát độ rộng biểu thức: Ngưỡng độ rộng dòng có thể điều chỉnh để ngắt dòng biểu thức (20-200 ký tự), tự động ngắt dòng vượt quá độ rộng này để kiểm soát độ dài mã một dòng
- Chế độ toán tử dày đặc: Khi bật, không có khoảng trắng thừa xung quanh toán tử cho kết quả định dạng nhỏ gọn hơn, phù hợp cho các tình huống SQL nhúng
- Xuống dòng trước dấu chấm phẩy: Tùy chọn chèn xuống dòng trước dấu chấm phẩy kết thúc câu lệnh, đặt dấu chấm phẩy trên dòng riêng để xác định ranh giới câu lệnh nhanh chóng
- 4 kiểu cài sẵn: Chuyển đổi một cú nhấp chuột giữa cài sẵn Mặc định (từ khóa UPPER + thụt lề 2 khoảng trắng), Chữ thường (tất cả từ khóa chữ thường), Nhỏ gọn (căn chỉnh bảng + toán tử dày đặc), Rộng rãi (thụt lề 4 khoảng trắng + dòng trống kép) mà không cần điều chỉnh thủ công
- Chức năng nén SQL: Nén SQL thành một dòng một cú nhấp chuột, tự động xóa chú thích, khoảng trắng thừa và xuống dòng—lý tưởng cho xuất nhật ký, nối mã và nhúng tài liệu
- Chức năng xác thực cú pháp: Xác thực cú pháp SQL cơ bản, hiển thị thông báo lỗi khi định dạng thất bại để giúp xác định vấn đề cú pháp
- SQL mẫu tích hợp: Cung cấp bốn bộ SQL mẫu: truy vấn cơ bản, truy vấn JOIN phức tạp, lô nhiều câu lệnh, câu lệnh CREATE TABLE để trải nghiệm định dạng nhanh chóng
- Tải lên/tải xuống tệp: Tải lên tệp .sql/.txt để nhập SQL trực tiếp; tải xuống kết quả định dạng dưới dạng tệp .sql để lưu
- Chia sẻ URL: Mã hóa SQL vào hash URL bằng nén LZ-String—sao chép liên kết để chia sẻ cấu hình định dạng và nội dung SQL
- Định dạng tự động thời gian thực: Tự động định dạng với debounce 800ms sau khi nhập SQL, hiển thị kết quả tức thì mà không cần nhấp nút lặp lại
- Phím tắt: Shift+Cmd/Ctrl+F để định dạng, Shift+Cmd/Ctrl+C để nén, Shift+Cmd/Ctrl+V để xác thực, Shift+Cmd/Ctrl+O để tải lên, Shift+Cmd/Ctrl+D để tải xuống, Shift+Cmd/Ctrl+K để xóa
- Trình soạn thảo CodeMirror: Trình soạn thảo tô sáng cú pháp SQL dựa trên CodeMirror 6 với điều chỉnh độ rộng bảng điều khiển trái/phải có thể kéo thả, điều chỉnh kích thước phông chữ và bảng điều khiển lịch sử
- Sao chép kết quả một cú nhấp chuột: Sao chép SQL đã định dạng hoặc nén vào bộ nhớ tạm một cú nhấp chuột để dán trực tiếp vào máy khách cơ sở dữ liệu hoặc mã
- Xử lý hoàn toàn cục bộ trên trình duyệt: Tất cả định dạng SQL hoàn thành trong JavaScript trình duyệt dựa trên thư viện sql-formatter; câu lệnh SQL không bao giờ được tải lên bất kỳ máy chủ nào, đảm bảo an toàn dữ liệu
Câu hỏi Thường gặp
Định dạng SQL có thay đổi logic truy vấn không? SQL đã định dạng có thể thực thi trực tiếp không?
Nó không thay đổi logic truy vấn. Định dạng SQL chỉ điều chỉnh ký tự khoảng trắng (xuống dòng, thụt lề, khoảng trắng) và chữ hoa chữ thường từ khóa; nó không sửa đổi định danh, giá trị, toán tử, lệnh gọi hàm hoặc cấu trúc truy vấn trong SQL. SQL đã định dạng tương đương về mặt ngữ nghĩa với SQL gốc và có thể được sao chép trực tiếp vào các máy khách cơ sở dữ liệu như MySQL Workbench, pgAdmin, DBeaver, Navicat để thực thi. Tuy nhiên, nên xác minh trong môi trường thử nghiệm trước khi thực thi trong sản xuất.
Những phương ngữ cơ sở dữ liệu nào được hỗ trợ? Còn sự khác biệt cú pháp SQL giữa các cơ sở dữ liệu thì sao?
Hỗ trợ 20 phương ngữ SQL: Standard SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, DB2i, PL/SQL (Oracle), T-SQL (SQL Server), Spark SQL, Hive, Trino, ClickHouse, SingleStoreDB, DuckDB, N1QL (Couchbase). Các cơ sở dữ liệu khác nhau có sự khác biệt về cú pháp phân trang (LIMIT so với LIMIT/OFFSET so với TOP so với ROWNUM), nối chuỗi, hàm ngày tháng, trích dẫn định danh (dấu backtick so với dấu ngoặc kép so với dấu ngoặc vuông), v.v. Chọn phương ngữ chính xác đảm bảo trình định dạng xác định chính xác từ khóa và tên hàm và tránh định dạng sai các hàm đặc thù của phương ngữ.
Nén SQL là gì? Nó khác với định dạng như thế nào?
Nén SQL (Minify) là hành động ngược lại của định dạng: xóa tất cả chú thích (bao gồm chú thích nhiều dòng /* */ và chú thích một dòng --), hợp nhất các ký tự khoảng trắng liên tiếp thành khoảng trắng đơn, xóa khoảng trắng thừa xung quanh dấu ngoặc đơn/dấu phẩy/dấu chấm phẩy/toán tử, xuất ra SQL một dòng nhỏ gọn. Nén phù hợp cho các tình huống như nhúng SQL vào chuỗi mã, ghi vào tệp nhật ký, truyền qua tham số URL, chia sẻ trong cửa sổ trò chuyện để tránh nhầm lẫn xuống dòng. Mặt khác, định dạng thêm xuống dòng và thụt lề thích hợp để cải thiện khả năng đọc.
Khi nào định dạng tự động kích hoạt? Nó có thể bị tắt không?
Sau khi nhập hoặc sửa đổi SQL trong khu vực soạn thảo bên trái, định dạng sẽ tự động kích hoạt sau độ trễ debounce 800ms (với điều kiện định dạng trước đó không có lỗi cú pháp). Điều này là để hiển thị kết quả định dạng tức thì sau khi bạn ngừng gõ. Nếu bạn thích điều khiển thủ công, chỉ cần nhấp nút định dạng trong thanh công cụ mà không cần chờ kích hoạt tự động. Hiện tại không có công tắc riêng để tắt định dạng tự động, nhưng nó sẽ không kích hoạt lặp lại miễn là nội dung nhập không được sửa đổi.
Phải làm gì khi định dạng thất bại với thông báo lỗi cú pháp?
Trình định dạng báo cáo lỗi khi gặp cú pháp SQL không thể phân tích. Các nguyên nhân phổ biến bao gồm: 1) Dấu ngoặc không khớp—kiểm tra xem số lượng dấu ngoặc trái và phải có khớp không; 2) Chuỗi không đóng—kiểm tra xem dấu nháy đơn/dấu nháy kép có xuất hiện theo cặp không, dấu nháy trong chuỗi cần thoát (như '' hoặc \'); 3) Chọn sai phương ngữ cơ sở dữ liệu—ví dụ: sử dụng cú pháp ép kiểu :: đặc thù của PostgreSQL nhưng chọn phương ngữ MySQL; 4) Đoạn SQL không hoàn chỉnh—ví dụ: chỉ có điều kiện WHERE mà không có SELECT FROM. Thông báo lỗi hiển thị vị trí và lý do vấn đề được báo cáo bởi trình phân tích, có thể được sử dụng để xác định vấn đề. Bạn cũng có thể nhấp nút xác thực (Shift+Cmd/Ctrl+V) trước để kiểm tra cú pháp.
Làm thế nào để chọn giữa các chế độ chữ hoa, chữ thường và giữ nguyên chữ hoa chữ thường từ khóa?
Từ khóa chữ hoa (UPPER) là kiểu mã SQL truyền thống và phổ biến nhất—từ khóa chữ hoa như SELECT/FROM/WHERE/JOIN tạo ra sự khác biệt trực quan với tên bảng/tên cột, cho phép xác định nhanh cấu trúc SQL trong cơ sở mã lớn. Từ khóa chữ thường phù hợp hơn cho môi trường IDE hiện đại (các trình soạn thảo hiện đại có tô sáng cú pháp, không còn dựa vào sự khác biệt chữ hoa chữ thường) với giao diện trực quan đồng nhất hơn. Giữ nguyên (preserve) giữ nguyên chữ hoa chữ thường bạn nhập, phù hợp cho điều chỉnh định dạng tối thiểu đối với mã hiện có. Chiến lược chữ hoa chữ thường cho từ khóa, định danh (tên bảng/tên cột), kiểu dữ liệu (VARCHAR/INT/BIGINT) và tên hàm (COUNT/SUM/COALESCE) có thể được cấu hình độc lập.
Sự khác biệt giữa chế độ căn chỉnh Tabular và thụt lề tiêu chuẩn là gì?
Thụt lề tiêu chuẩn (standard) sử dụng thụt lề phân cấp truyền thống với số lượng khoảng trắng cố định cho mỗi mệnh đề. Chế độ căn trái/phải dạng bảng căn chỉnh tên cột trong danh sách SELECT, biểu thức trong điều kiện WHERE, v.v., theo cột, tạo hiệu ứng trực quan giống như bảng. Ví dụ, nhiều tên cột sau SELECT được căn chỉnh theo chiều dọc, và bí danh AS cũng được căn chỉnh đến cùng vị trí cột. Chế độ này rất trực quan khi đọc truy vấn nhiều cột trên màn hình rộng nhưng có thể dẫn đến các dòng quá dài trên màn hình hẹp.
Làm thế nào để chuyển đổi nhanh chóng giữa kiểu SQL chuẩn của nhóm và sở thích cá nhân?
Sử dụng các nút cài sẵn trong bảng điều khiển cài đặt: Mặc định (từ khóa UPPER + thụt lề tiêu chuẩn 2 khoảng trắng), Chữ thường (tất cả từ khóa chữ thường), Nhỏ gọn (căn chỉnh tabularLeft + toán tử dày đặc), Rộng rãi (thụt lề 4 khoảng trắng + dòng trống kép giữa các truy vấn). Nếu nhóm của bạn có tiêu chuẩn cụ thể, hãy điều chỉnh thủ công các tùy chọn và định dạng. Việc lưu cài sẵn tùy chỉnh hiện không được hỗ trợ, nhưng với số lượng tùy chọn cấu hình hạn chế, điều chỉnh nhanh chóng rất thuận tiện.
SQL đã định dạng có bị mất chú thích không?
Hoạt động Định dạng (Format) giữ lại chú thích—cả chú thích một dòng -- và chú thích nhiều dòng /* */ đều được giữ lại gần vị trí ban đầu của chúng (vị trí cụ thể phụ thuộc vào logic xử lý chú thích của thư viện sql-formatter). Tuy nhiên, hoạt động Nén (Compress) xóa tất cả chú thích để tạo ra SQL một dòng nhỏ gọn nhất; hãy sao chép kết quả định dạng trước nếu cần giữ lại chú thích trước khi nén.
Những phím tắt nào được hỗ trợ? Sự khác biệt giữa Mac và Windows/Linux là gì?
Hỗ trợ các phím tắt sau (sử dụng phím Cmd trên Mac, phím Ctrl trên Windows/Linux, tất cả yêu cầu giữ Shift đồng thời): Shift+Cmd/Ctrl+F Định dạng; Shift+Cmd/Ctrl+C Nén; Shift+Cmd/Ctrl+V Xác thực cú pháp; Shift+Cmd/Ctrl+O Tải tệp lên; Shift+Cmd/Ctrl+D Tải tệp xuống; Shift+Cmd/Ctrl+K Xóa nội dung. Nhấp vào biểu tượng dấu chấm hỏi trong thanh công cụ để xem danh sách phím tắt bất cứ lúc nào.
Có giới hạn kích thước cho việc tải tệp SQL lên không? Những định dạng tệp nào được hỗ trợ?
Hỗ trợ tải lên các tệp văn bản ở định dạng .sql và .txt. Về mặt lý thuyết không có giới hạn cứng về kích thước tệp, nhưng việc trình duyệt xử lý các tệp rất lớn (ví dụ: tệp kết xuất SQL vượt quá 1MB) có thể có vấn đề về hiệu suất. Khuyến nghị xử lý các truy vấn riêng lẻ hoặc tệp tập lệnh quy mô nhỏ. Đối với các tệp SQL rất lớn (ví dụ: kết xuất cơ sở dữ liệu hoàn chỉnh), hãy chia thành các phân đoạn nhỏ hơn trước khi định dạng. Nội dung tệp được đọc qua API FileReader của trình duyệt và không bao giờ được tải lên máy chủ.
Chức năng chia sẻ URL có an toàn không? Máy chủ có thể thấy nội dung SQL không?
Chức năng chia sẻ URL nén nội dung SQL bằng LZ-String và mã hóa nó vào phần hash của URL (nội dung sau #). Phần hash URL có đặc điểm là nó không bao giờ được gửi đến máy chủ với các yêu cầu HTTP và chỉ được xử lý cục bộ trong trình duyệt. Khi bạn sao chép liên kết chia sẻ cho người khác, trình duyệt của họ phân tích hash và giải nén nó để hiển thị nội dung SQL—SQL không bao giờ đi qua bất kỳ máy chủ nào trong suốt quá trình. Tuy nhiên, lưu ý rằng các liên kết chia sẻ chứa nội dung SQL hoàn chỉnh; nếu SQL chứa thông tin nhạy cảm (như mật khẩu, khóa, dữ liệu cá nhân), đừng chia sẻ liên kết trong các kênh công khai.
Có thể định dạng các tập lệnh chứa nhiều câu lệnh SQL không?
Có. Công cụ hỗ trợ định dạng hàng loạt nhiều câu lệnh SQL (ví dụ: nhiều câu lệnh SELECT/INSERT/UPDATE/CREATE TABLE được phân tách bằng dấu chấm phẩy). Bạn có thể kiểm soát khoảng cách giữa các câu lệnh (0/1/2 dòng) thông qua tùy chọn "Số dòng trống giữa các truy vấn" trong bảng điều khiển cài đặt. Tải SQL mẫu "Nhiều câu lệnh" để trải nghiệm định dạng nhiều câu lệnh. Mỗi câu lệnh được thụt lề và định dạng độc lập, phân tách giữa các câu lệnh theo số lượng dòng trống đã cấu hình.
Kích thước câu lệnh SQL nào gây ra độ trễ?
Dựa trên triển khai JavaScript thuần túy của thư viện sql-formatter, việc xử lý SQL trong vài trăm dòng thường phản hồi theo mili giây trong các trình duyệt hiện đại mà không có độ trễ đáng chú ý. Ngay cả các thủ tục lưu trữ hoặc truy vấn phức tạp hàng nghìn dòng cũng hoàn thành trong vòng 1 giây. Tất cả các phép tính hoàn thành trên luồng chính của trình duyệt; các tệp rất lớn (ví dụ: kết xuất SQL vượt quá 10.000 dòng) có thể gây ra đóng băng giao diện ngắn—khuyến nghị xử lý hàng loạt.
Công cụ có yêu cầu truy cập internet không? Dữ liệu SQL có an toàn không?
Hoạt động ngoại tuyến sau khi trang được tải; định dạng, nén và xác thực SQL tất cả hoàn thành trong JavaScript cục bộ của trình duyệt mà không gửi các câu lệnh SQL bạn nhập đến bất kỳ máy chủ bên ngoài nào. Không sử dụng theo dõi Cookie hoặc thu thập nội dung SQL do người dùng nhập. Được triển khai dựa trên thư viện sql-formatter mã nguồn mở trưởng thành với logic mã minh bạch và có thể kiểm toán.
Xử lý sự cố
Phải làm gì về lỗi định dạng "Parse error" hoặc "Định dạng SQL thất bại"?
Trình định dạng thực hiện phân tích SQL dựa trên thư viện sql-formatter và báo cáo lỗi khi gặp cú pháp không được nhận dạng. Các nguyên nhân và giải pháp phổ biến: 1) Dấu ngoặc không khớp—kiểm tra xem số lượng dấu ngoặc trái và phải có khớp không, sử dụng tính năng tô sáng khớp ngoặc của trình soạn thảo để hỗ trợ kiểm tra; 2) Dấu nháy chuỗi không đóng—kiểm tra xem dấu nháy đơn, dấu nháy kép có xuất hiện theo cặp không, dấu nháy trong chuỗi cần thoát (như '' hoặc \'); 3) Chọn sai phương ngữ cơ sở dữ liệu—ví dụ: sử dụng toán tử :: của PostgreSQL nhưng chọn phương ngữ MySQL, chuyển sang phương ngữ chính xác; 4) Câu lệnh SQL không hoàn chỉnh—ví dụ: chỉ có mệnh đề WHERE mà không có SELECT FROM; 5) Sử dụng cú pháp đặc thù cơ sở dữ liệu rất đặc biệt (như luồng điều khiển thủ tục lưu trữ nhất định), thử chuyển sang phương ngữ gần nhất, hoặc đơn giản hóa các đoạn SQL trước khi định dạng.
Ký tự tiếng Trung hoặc ký tự đặc biệt bị lỗi sau khi định dạng?
Công cụ này hoàn toàn hỗ trợ mã hóa UTF-8; ký tự tiếng Trung và Unicode không thay đổi trong quá trình định dạng. Nếu xuất hiện ký tự lỗi, thường là do SQL bạn dán bản thân nó đến từ các tệp có mã hóa không chính xác (như sao chép từ tệp mã hóa GBK). Đảm bảo các tệp nguồn được lưu bằng mã hóa UTF-8, hoặc chuyển đổi tệp thành mã hóa UTF-8 trước khi dán. Trình soạn thảo CodeMirror phía trình duyệt mặc định là UTF-8 và không giới thiệu chuyển đổi mã hóa.
Không có phản hồi hoặc hiển thị trống sau khi tải tệp SQL lên?
Tải tệp lên chỉ hỗ trợ các tệp văn bản có phần mở rộng .sql và .txt. Nếu tệp là định dạng nhị phân (như tệp cơ sở dữ liệu .sqlite, tài liệu .doc), chúng hiển thị ký tự lỗi hoặc trống sau khi tải lên. Ngoài ra, một số trình duyệt có hạn chế bảo mật về việc đọc tệp cục bộ qua JavaScript—đảm bảo bạn chọn tệp bằng cách chủ động nhấp vào nút tải lên thay vì kéo thả (tải lên kéo thả hiện không được hỗ trợ). Kích thước tệp khuyến nghị không vượt quá 1MB; vượt quá có thể gây ra phân tích trình duyệt chậm.
Một số từ khóa trở thành chữ thường/chữ hoa sau khi định dạng, không nhất quán với đầu vào gốc?
Đây là hành vi định dạng bình thường. Tùy chọn chữ hoa chữ thường từ khóa (keywordCase) mặc định là UPPER, chuyển đổi thống nhất các từ khóa SQL thành chữ hoa. Nếu bạn muốn giữ nguyên chữ hoa chữ thường gốc, hãy đặt các tùy chọn chữ hoa chữ thường cho từ khóa, định danh, kiểu dữ liệu, hàm thành "giữ nguyên (preserve)" trong bảng điều khiển cài đặt—theo cách này trình định dạng chỉ điều chỉnh xuống dòng và thụt lề mà không thay đổi bất kỳ chữ hoa chữ thường nào của chữ cái.
Thuật ngữ
- Phương ngữ SQL (SQL Dialect)
- Phần mở rộng và biến thể của SQL chuẩn bởi các hệ quản trị cơ sở dữ liệu (DBMS) khác nhau. Ví dụ, LIMIT của MySQL, ép kiểu :: của PostgreSQL, TOP của SQL Server, ROWNUM của Oracle đều là cú pháp đặc thù của phương ngữ. Việc chọn phương ngữ chính xác trong quá trình định dạng đảm bảo phân tích cú pháp chính xác.
- Chữ hoa chữ thường từ khóa (Keyword Case)
- Chiến lược chữ hoa chữ thường cho các từ dành riêng SQL (SELECT/FROM/WHERE/JOIN, v.v.). Chữ hoa (UPPER) là kiểu truyền thống, chữ thường (lower) ngày càng phổ biến trong phát triển hiện đại, giữ nguyên (preserve) cho các thay đổi tối thiểu.
- Định danh (Identifier)
- Tên đối tượng cơ sở dữ liệu trong SQL, bao gồm tên cơ sở dữ liệu, tên bảng, tên cột, bí danh, tên chỉ mục, tên dạng xem, tên thủ tục lưu trữ, v.v. Các cơ sở dữ liệu khác nhau trích dẫn định danh khác nhau: MySQL sử dụng dấu backtick, PostgreSQL sử dụng dấu ngoặc kép, SQL Server sử dụng dấu ngoặc vuông.
- Kiểu thụt lề (Indent Style)
- Kiểm soát căn chỉnh thụt lề trong quá trình định dạng SQL. Thụt lề tiêu chuẩn sử dụng tiến trình phân cấp; tabularLeft/tabularRight căn chỉnh tên cột và bí danh ở dạng bảng, khả năng đọc tốt hơn trên màn hình rộng nhưng có thể tạo ra các dòng dài hơn.
- Xuống dòng toán tử logic (Logical Operator Newline)
- Vị trí xuống dòng của các toán tử logic như AND/OR trong các điều kiện nhiều dòng. before có nghĩa là toán tử ở đầu dòng tiếp theo, after có nghĩa là toán tử ở cuối dòng hiện tại. Các nhóm khác nhau có sở thích khác nhau.
- Độ rộng biểu thức (Expression Width)
- Ngưỡng số ký tự một dòng kích hoạt ngắt dòng (20-200 ký tự). Các biểu thức vượt quá độ rộng này được ngắt dòng, tương tự như cài đặt printWidth/ruler trong trình soạn thảo mã.
- Toán tử dày đặc (Dense Operators)
- Một tùy chọn định dạng, khi bật, không để lại khoảng trắng thừa xung quanh các toán tử (=, <, >, +, -, v.v.), chẳng hạn như `WHERE id=1 AND status='active'` thay vì `WHERE id = 1 AND status = 'active'`, tạo ra đầu ra nhỏ gọn hơn.
- Số dòng trống giữa các truy vấn (Lines Between Queries)
- Số dòng trống giữa nhiều câu lệnh SQL. 0 có nghĩa là sắp xếp liền kề, 1 có nghĩa là phân tách một dòng trống (phổ biến), 2 có nghĩa là hai dòng trống (kiểu rộng rãi), ảnh hưởng đến khả năng đọc của các tập lệnh nhiều câu lệnh.
- Nén SQL (SQL Minify/Compress)
- Xóa tất cả chú thích và khoảng trắng thừa khỏi SQL đã định dạng, hợp nhất thành định dạng nhỏ gọn một dòng. Phù hợp cho xuất nhật ký, nhúng mã, truyền URL, v.v.—hoạt động ngược lại của định dạng.
- In đẹp (Pretty Print)
- Đầu ra mã hoặc dữ liệu ở định dạng dễ đọc cao thông qua thụt lề và xuống dòng tự động. SQL Pretty Print là làm đẹp định dạng SQL, ngược lại với Nén (Minify).
- CodeMirror
- Thành phần trình soạn thảo mã phía trình duyệt (phiên bản 6) được sử dụng bởi công cụ này, cung cấp tô sáng cú pháp SQL, hiển thị số dòng, gấp mã và các cải tiến chỉnh sửa khác—giải pháp trình soạn thảo mã Web được sử dụng rộng rãi trong ngành.
- sql-formatter
- Thư viện định dạng SQL mã nguồn mở được sử dụng tại cốt lõi của công cụ này, hỗ trợ phân tích từ vựng và đầu ra định dạng cho nhiều phương ngữ SQL—một trong những thư viện định dạng SQL phổ biến nhất trong hệ sinh thái frontend.
Danh sách phương ngữ SQL được hỗ trợ
Công cụ hỗ trợ 20 phương ngữ cơ sở dữ liệu SQL—việc chọn phương ngữ khớp với cơ sở dữ liệu của bạn mang lại kết quả định dạng tối ưu:
| Phương ngữ | Cơ sở dữ liệu | Mô tả |
|---|---|---|
| Standard SQL | SQL chuẩn | Cú pháp chuẩn ANSI SQL, phù hợp cho các tình huống chung và phương ngữ không xác định |
| MySQL | MySQL / TiDB | Cơ sở dữ liệu quan hệ mã nguồn mở phổ biến nhất, định danh dấu backtick, phân trang LIMIT |
| MariaDB | MariaDB | Nhánh của MySQL, cú pháp tương thích MySQL với các hàm mở rộng |
| PostgreSQL | PostgreSQL | Cơ sở dữ liệu mã nguồn mở giàu tính năng, định danh dấu ngoặc kép, ép kiểu :: |
| SQLite | SQLite | Cơ sở dữ liệu nhẹ nhúng, thường được sử dụng trong ứng dụng di động và trình duyệt |
| T-SQL | SQL Server / Azure | Transact-SQL của Microsoft SQL Server, định danh dấu ngoặc vuông, phân trang TOP |
| PL/SQL | Oracle | Mở rộng SQL thủ tục của Oracle, phân trang ROWNUM, các gói tích hợp phong phú |
| BigQuery | Google BigQuery | Kho dữ liệu đám mây Google, hỗ trợ các loại lồng nhau như STRUCT/ARRAY |
| Snowflake | Snowflake | Kho dữ liệu đám mây gốc với khả năng xử lý dữ liệu bán cấu trúc mạnh mẽ |
| Redshift | AWS Redshift | Kho dữ liệu của Amazon Web Services, dựa trên PostgreSQL nhưng với cú pháp độc quyền |
So sánh kiểu cài sẵn định dạng
4 kiểu cài sẵn một cú nhấp chuột cho các tình huống sử dụng khác nhau:
| Cài sẵn | Từ khóa | Thụt lề | Toán tử | Khoảng cách truy vấn |
|---|---|---|---|---|
| Mặc định | UPPER | 2 khoảng trắng Tiêu chuẩn | Khoảng cách bình thường | 1 dòng trống |
| Chữ thường | lower | 2 khoảng trắng Tiêu chuẩn | Khoảng cách bình thường | 1 dòng trống |
| Nhỏ gọn | UPPER | Căn trái Tabular | Chế độ dày đặc | 1 dòng trống |
| Rộng rãi | UPPER | 4 khoảng trắng Tiêu chuẩn | Khoảng cách bình thường | 2 dòng trống |
Tổng quan phím tắt
Tất cả các phím tắt yêu cầu giữ phím bổ trợ + Shift + phím chữ tương ứng đồng thời:
| Hành động | Mac | Windows/Linux | Mô tả |
|---|---|---|---|
| Định dạng | ⇧⌘F | Shift+Ctrl+F | Làm đẹp câu lệnh SQL, thêm xuống dòng và thụt lề |
| Nén | ⇧⌘C | Shift+Ctrl+C | Nén SQL thành một dòng, xóa chú thích và khoảng trắng |
| Xác thực | ⇧⌘V | Shift+Ctrl+V | Kiểm tra tính đúng đắn cú pháp SQL |
| Tải lên | ⇧⌘O | Shift+Ctrl+O | Tải .sql/.txt từ tệp cục bộ |
| Tải xuống | ⇧⌘D | Shift+Ctrl+D | Lưu kết quả dưới dạng tệp .sql |
| Xóa | ⇧⌘K | Shift+Ctrl+K | Xóa nội dung nhập và xuất |
Privacy & Security
Tất cả các hoạt động của công cụ định dạng SQL này được hoàn thành hoàn toàn cục bộ trong trình duyệt của bạn: các câu lệnh SQL bạn nhập, phương ngữ đã chọn và cấu hình định dạng tất cả được xử lý trong JavaScript trình duyệt thông qua thư viện sql-formatter mà không gửi bất kỳ nội dung SQL hoặc cấu hình nào đến các máy chủ bên ngoài qua mạng. Tải tệp lên đọc nội dung tệp cục bộ qua API HTML5 FileReader mà không truyền mạng. Chức năng chia sẻ URL mã hóa SQL đã nén trong phần hash URL (nội dung sau # không bao giờ được gửi đến máy chủ với các yêu cầu HTTP), chỉ được giải nén và hiển thị cục bộ trong trình duyệt. Không sử dụng theo dõi Cookie hoặc thu thập nội dung SQL do người dùng nhập hoặc dữ liệu hành vi sử dụng. Sau khi đóng hoặc làm mới trang, nội dung nhập và trạng thái cấu hình tự động đặt lại (lịch sử chỉ được lưu trong localStorage cục bộ).
Authoritative References
- GitHubTài liệu chính thức sql-formatter
- codemirror.netTrang web chính thức CodeMirror 6
- WikipediaWikipedia - Cú pháp SQL
- Trình mô phỏng mù màu
- Công cụ chuyển đổi màu
- Công cụ chuyển đổi .htaccess sang Nginx
- Trình chuyển đổi SQL
- Trinh phan tich Cookie
- Trình tạo biểu thức Cron
- Trình xác thực biểu thức Cron
- Định dạng CSS
- Nén CSS
- CSV sang Excel
- Trình chuyển đổi tiền tệ
- Trình kiểm tra khác biệt
- Trình tạo biểu tượng trang web
- Định dạng XML
- Bộ chuyển đổi Thập lục phân
- Định dạng HTML
- Nén HTML
- HTML sang Markdown
- Chuyển Markdown sang HTML
- Trình định dạng JavaScript
- Nén JS
- Công cụ định dạng JSX
- Nén JSX
- Phân cụm từ khóa
- Trình tạo Lorem Ipsum
- Trình tạo bảng Markdown
- Công cụ tạo Meta Tag
- Trình tạo mật khẩu
- Công cụ kiểm tra độ mạnh mật khẩu
- Trình tạo QR Code/Barcode
- Công cụ kiểm tra Regex
- Trình tạo Slug
- Trình tạo SQL
- Công cụ định dạng SQL
- Đếm Từ
- Công cụ thời gian
- Định dạng TS
- Nén TS
- Định dạng TSX
- Nén TSX
- Công cụ chuyển đổi Unix Timestamp
- Trình tạo UUID
- Định dạng YAML
- Chuyển đổi trường hợp