Định dạng SQL
Định dạng và nén SQL cho tám phương ngữ, thụt lề dễ đọc.
Việc định dạng chạy ngay trong trình duyệt. Câu truy vấn của bạn, kể cả tên bảng và giá trị trong đó, không bao giờ được tải lên.
SQL đến tay ta ở dạng không đọc nổi thường xuyên hơn là ở dạng đọc được. Nó chui ra từ một ORM thành một dòng khổng lồ, chui ra từ nhật ký với khoảng trắng đã bị nén hết, hoặc từ tin nhắn của đồng nghiệp dán lại từ một chỗ nào đó nuốt mất dấu xuống dòng. Muốn suy nghĩ được về một câu truy vấn thì trước hết phải nhìn ra hình dạng của nó.
Tìm hiểu thêm về Định dạng SQL
Trình định dạng này đặt mỗi mệnh đề lên một dòng riêng và thụt lề những gì thuộc về nó, nhờ vậy `SELECT`, `FROM`, `WHERE`, `GROUP BY` và `ORDER BY` thẳng hàng, còn các phép join nằm ở chỗ bạn đếm được. Đọc một câu truy vấn chạy chậm thường bắt đầu từ việc nhận ra nó có năm phép join chứ không phải ba như mình nhớ, và điều đó dễ nhận ra hơn nhiều khi chúng xếp chồng lên nhau.
Phương ngữ có ý nghĩa thật, nên đây là một lựa chọn chứ không phải một phỏng đoán. PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, BigQuery và Oracle PL/SQL đều có cú pháp mà những cái còn lại từ chối — ép kiểu, cách đặt dấu nháy, hàm, gợi ý tối ưu. Định dạng nhầm phương ngữ thì hoặc là báo lỗi trên SQL hợp lệ, hoặc lặng lẽ nắn lại thứ nó hiểu sai, nên hãy chọn đúng cơ sở dữ liệu bạn đang chạy.
SQL không hợp lệ sẽ được báo chứ không bị nắn bừa. Một trình định dạng cứ thế định dạng lại thứ nó không phân tích nổi sẽ cho ra kết quả trông có vẻ hợp lý mà không tương đương với thứ bạn đưa vào, và như vậy còn tệ hơn là báo lỗi rõ ràng. Khi phân tích thất bại, bạn nhận được vị trí nó thất bại.
Câu truy vấn của bạn ở lại trong trang này. Truy vấn mang theo tên bảng, tên cột và thường là cả giá trị thật lấy từ hệ thống chạy thật, đúng loại thứ không nên dán vào một trang web có tải dữ liệu lên.
- Định dạng mỗi mệnh đề một dòng, thụt lề nhất quán
- Tám phương ngữ, do bạn chọn rõ chứ không phải máy đoán
- Từ khoá viết hoa, viết thường hoặc giữ nguyên như bạn gõ
- Độ rộng thụt lề từ một đến tám khoảng trắng, hoặc dùng tab
- Nén về một dòng để nhúng vào mã nguồn hoặc vào nhật ký
- SQL không hợp lệ được báo kèm vị trí thay vì bị nắn lại âm thầm
- Chuỗi ký tự giữ nguyên tuyệt đối, kể cả từ khoá nằm bên trong
Cách sử dụng
- 1Dán câu SQL của bạn vào ô nhập.
- 2Chọn đúng phương ngữ mà bạn thực sự chạy câu lệnh trên đó.
- 3Chỉnh thụt lề và kiểu chữ từ khoá nếu mặc định không hợp quy ước của nhóm bạn.
- 4Đọc kết quả đã định dạng, hoặc chuyển sang nén để có một dòng duy nhất.
- 5Sao chép hoặc tải kết quả về.
Câu hỏi thường gặp
Định dạng có làm đổi ý nghĩa câu truy vấn không?
Không: nó chỉ đổi khoảng trắng, dấu xuống dòng và cách viết hoa từ khoá. Chuỗi ký tự được giữ nguyên tuyệt đối, nên một từ khoá nằm trong dấu nháy sẽ không bị đụng tới.
Vì sao nó từ chối câu SQL mà cơ sở dữ liệu của tôi vẫn chạy?
Gần như luôn là do phương ngữ: lựa chọn chung khắt khe hơn mọi cơ sở dữ liệu thật. Hãy chọn đúng phương ngữ bạn đang chạy thì cú pháp riêng của nó sẽ được nhận ra.
Từ khoá có nên viết hoa không?
Đó là quy ước chứ không bắt buộc, nhưng viết hoa quả thật giúp nhìn ra ranh giới các mệnh đề nhanh hơn. Tuỳ chọn này có ở đây vì khá nhiều dự án đã thống nhất theo hướng ngược lại.
Chế độ nén làm gì?
Nó gộp câu lệnh về một dòng, tiện khi cần nhúng truy vấn vào mã nguồn hay vào một dòng nhật ký. Nó định dạng trước, nên câu lệnh không phân tích được sẽ bị báo lỗi chứ không bị ép phẳng.
Nó có định dạng được cả một tệp nhiều câu lệnh không?
Được, nhiều câu lệnh ngăn nhau bằng dấu chấm phẩy sẽ được định dạng cùng lúc. Tệp quá lớn thì bị giới hạn, vì trình định dạng chạy ngay trong trang và để nó chạy quá đà sẽ làm treo thẻ trình duyệt.