Định dạng SQL
Thụt lề một câu truy vấn SQL để bạn đọc được, hoàn toàn trong trình duyệt. Không có gì được thực thi và không có cơ sở dữ liệu nào bị kết nối.
Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên, ghi log hay lưu trữ.
Dán một câu truy vấn đến dưới dạng một dòng dài duy nhất và đọc nó cho đàng hoàng. Việc định dạng diễn ra trong trình duyệt của bạn: câu lệnh, tên các bảng và bất kỳ giá trị nào trong mệnh đề WHERE đều không bao giờ rời khỏi máy của bạn.
Cách hoạt động
Câu lệnh được tách thành các mảnh — chuỗi, chú thích, tên trong dấu nháy, số, từ, toán tử — rồi được viết lại với các chỗ xuống dòng và thụt lề được chọn dựa trên chuỗi mảnh đó. Mỗi mệnh đề bắt đầu một dòng mới, các điều kiện được căn thẳng dưới mệnh đề chứa chúng và một truy vấn con được thụt vào bên trong cặp ngoặc của nó.
Mỗi mảnh được viết lại đúng như khi nó đến. Chỉ có khoảng trắng giữa chúng và kiểu chữ hoa/thường của những từ mà công cụ nhận ra là có thể thay đổi, nghĩa là câu lệnh đi ra chính là câu lệnh đã đi vào. Tính chất này được các bài kiểm thử khẳng định thay vì để cho việc xem xét bằng mắt.
Một cặp ngoặc chứa một câu lệnh riêng sẽ được tách ra nhiều dòng; một lời gọi hàm, một danh sách IN hay một cặp ngoặc chỉ dùng để nhóm một biểu thức được giữ trên một dòng, vì tách chúng ra làm câu truy vấn dài hơn mà không rõ ràng hơn.
Ví dụ
| Trường hợp | Dữ liệu nhập | Kết quả |
|---|---|---|
| Một truy vấn trên một dòng | select id, name from users where active = 1 order by name | SELECT id, name FROM users WHERE active = 1 ORDER BY name |
Câu hỏi thường gặp
Câu truy vấn của tôi có bị gửi đi đâu không?
Không. Công cụ định dạng là JavaScript chạy trên trang này. Không có gì được tải lên, ghi log hay lưu trữ: bạn có thể ngắt mạng và công cụ vẫn hoạt động.
Nó có kiểm tra SQL của tôi có hợp lệ không?
Không, và cần nói rõ điều này. Việc nó làm là sắp xếp lại khoảng trắng. Nó không có lược đồ, không có ngữ pháp của phương ngữ SQL nào, cũng không có cơ sở dữ liệu, nên nó sẽ vui vẻ thụt lề cả một câu lệnh mà không máy chủ nào chấp nhận. Thứ duy nhất nó từ chối là một chuỗi hoặc một chú thích không được đóng, vì điều đó khiến nó không phân biệt được mã với văn bản.
Nó hiểu phương ngữ SQL nào?
Nó nhận ra các kiểu đặt trong dấu nháy của những phương ngữ phổ biến nhất — dấu nháy đơn cho chuỗi, và dấu nháy kép, dấu backtick hoặc ngoặc vuông cho tên — nên nó sẽ không làm hỏng MySQL, PostgreSQL, SQLite hay SQL Server. Nó không kiểm tra ngữ pháp của phương ngữ, vì nó không phân tích cú pháp.
Tùy chọn dấu gạch chéo ngược dùng để làm gì?
MySQL coi dấu gạch chéo ngược bên trong chuỗi là ký tự thoát, nên 'it\'s' là một chuỗi duy nhất. SQL chuẩn — và PostgreSQL, SQLite, SQL Server, Oracle — thì không, nên ở đó cùng đoạn văn bản ấy là một chuỗi theo sau là thứ khác. Không có cách nào biết được chỉ từ câu truy vấn, và đoán thì sẽ làm hỏng phương ngữ này hoặc phương ngữ kia, nên đây là một công tắc. Hãy để tắt trừ khi bạn làm việc với MySQL.
Vì sao tên cột của tôi bị đổi chữ hoa/thường?
Vì nó được viết giống một từ khóa. Tùy chọn chữ hoa/thường tác động lên những từ mà công cụ nhận ra, và nó không phân biệt được một cột tên “key” với từ khóa. Những tên đứng ngay sau TABLE, INTO, FROM, JOIN hoặc UPDATE được giữ nguyên, vì đó là những vị trí mà chữ hoa/thường của một tên có thể có ý nghĩa. Nếu bạn muốn không có gì bị thay đổi, hãy đặt tùy chọn từ khóa thành giữ nguyên như đã viết, hoặc đặt tên đó trong dấu nháy.
Cần biết
- Không có gì trên trang này thực thi SQL hay kết nối tới cơ sở dữ liệu. Câu lệnh là văn bản và được xử lý như văn bản.
- Bố cục mang tính tất định: cùng một câu lệnh với cùng các tùy chọn luôn cho cùng một kết quả, và định dạng một câu lệnh đã được định dạng sẽ không thay đổi gì.
- Biểu thức CASE, các phép join, truy vấn con và danh sách cột của CREATE TABLE đều có quy tắc riêng. Mọi thứ nằm ngoài các quy tắc được để nguyên trên dòng của nó thay vì đoán.