Trình soạn thảo SQL
Trình soạn thảo SQL là trung tâm của TablePro, cung cấp môi trường mạnh mẽ để viết và thực thi các truy vấn SQL với tô sáng cú pháp, tự động hoàn thành thông minh và hỗ trợ nhiều truy vấn.
Tính năng của Trình soạn thảo
Tô sáng cú pháp
Trình soạn thảo cung cấp tô sáng cú pháp theo thời gian thực cho:
- Từ khóa:
SELECT, FROM, WHERE, JOIN, v.v. (màu hồng)
- Chuỗi: Chuỗi trong dấu nháy đơn và nháy kép (màu xanh lá)
- Số: Các giá trị số (màu xanh dương)
- Chú thích: Chú thích một dòng (
--) và nhiều dòng (/* */) (màu xám)
- Hàm: Các hàm SQL có sẵn
- Định danh: Tên bảng và cột
Số dòng
Số dòng được hiển thị mặc định, giúp dễ dàng:
- Tham chiếu các dòng cụ thể trong thông báo lỗi
- Điều hướng các truy vấn lớn
- Giao tiếp về code với người khác
Bật/tắt số dòng trong Settings > Editor > Show Line Numbers.
Tô sáng dòng hiện tại
Dòng hiện tại được tô sáng nhẹ nhàng để giúp bạn theo dõi vị trí con trỏ, đặc biệt hữu ích trong các truy vấn dài.
Viết truy vấn
Truy vấn đơn
Viết và thực thi một truy vấn đơn:
SELECT * FROM users WHERE active = true;
Nhấn Cmd+Enter để thực thi.
Nhiều truy vấn
Viết nhiều truy vấn được phân tách bằng dấu chấm phẩy:
SELECT * FROM users LIMIT 10;
SELECT COUNT(*) FROM orders;
SELECT name, email FROM customers WHERE country = 'US';
Đặt con trỏ trong bất kỳ câu lệnh nào và nhấn Cmd+Enter để thực thi chỉ câu lệnh đó.
Chọn và thực thi
Chọn văn bản trong trình soạn thảo và nhấn Cmd+Enter để chỉ thực thi phần đã chọn.
Nếu phần đã chọn chứa nhiều câu lệnh (phân tách bằng dấu chấm phẩy), chúng sẽ được thực thi tuần tự trong một transaction:
- Các câu lệnh chạy theo thứ tự, từng câu một
- Nếu bất kỳ câu lệnh nào thất bại, quá trình thực thi dừng lại và tất cả thay đổi được rollback
- Thông báo lỗi cho biết câu lệnh nào thất bại (ví dụ: “Statement 3/5 failed: …”)
- Kết quả từ câu lệnh
SELECT cuối cùng được hiển thị trong bảng dữ liệu
- Mỗi câu lệnh được ghi lại riêng trong lịch sử truy vấn
Điều này hữu ích khi chạy SQL dump, migration hoặc các nhóm câu lệnh liên quan:
DROP TABLE IF EXISTS users;
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');
SELECT * FROM users;
Tự động hoàn thành
TablePro cung cấp tự động hoàn thành SQL thông minh hiểu schema cơ sở dữ liệu của bạn.
Kích hoạt tự động hoàn thành
Tự động hoàn thành xuất hiện tự động khi bạn gõ, hoặc bạn có thể kích hoạt thủ công:
- Bắt đầu gõ từ khóa, tên bảng hoặc tên cột
- Nhấn
Escape để đóng popup
- Sử dụng phím mũi tên để điều hướng các gợi ý
- Nhấn
Enter hoặc Tab để chấp nhận gợi ý
Những gì được gợi ý
| Ngữ cảnh | Gợi ý |
|---|
Sau SELECT | Tên cột, *, các hàm |
Sau FROM | Tên bảng, tên schema |
Sau JOIN | Tên bảng |
Sau WHERE | Tên cột từ các bảng đã chọn |
Sau . (dấu chấm) | Các cột từ bảng được chỉ định |
| Đầu câu lệnh | Từ khóa SQL |
Hoàn thành nhận biết Schema
Tự động hoàn thành nhận biết ngữ cảnh và hiểu schema của bạn:
SELECT u. -- Hiển thị các cột từ bảng 'users' có alias là 'u'
FROM users u
JOIN orders o ON u.id = o. -- Hiển thị các cột từ bảng 'orders'
Từ khóa SQL
Các từ khóa SQL phổ biến được gợi ý dựa trên ngữ cảnh:
- Sau
SELECT: DISTINCT, TOP, ALL
- Sau
FROM: JOIN, LEFT JOIN, INNER JOIN, WHERE
- Sau
WHERE: AND, OR, NOT, IN, LIKE, BETWEEN
Thực thi truy vấn
Chạy truy vấn
| Thao tác | Phím tắt | Mô tả |
|---|
| Thực thi truy vấn | Cmd+Enter | Chạy truy vấn tại con trỏ, hoặc tất cả câu lệnh đã chọn |
| Giải thích truy vấn | Option+Cmd+E | Hiển thị kế hoạch thực thi cho truy vấn tại con trỏ |
Kết quả truy vấn
Kết quả xuất hiện trong bảng dữ liệu bên dưới trình soạn thảo:
- Số lượng dòng và thời gian thực thi được hiển thị
- Kết quả được phân trang cho các tập dữ liệu lớn
- Nhấp vào tiêu đề cột để sắp xếp
Giải thích Truy vấn
Sử dụng tính năng Explain Query để xem kế hoạch thực thi cho truy vấn của bạn, giúp bạn hiểu cách cơ sở dữ liệu sẽ thực thi và xác định các điểm nghẽn hiệu suất.
Để giải thích truy vấn:
- Nhấp nút Explain trong thanh công cụ editor, hoặc
- Nhấn
Option+Cmd+E, hoặc
- Sử dụng menu: Query > Explain Query
TablePro tự động sử dụng cú pháp đúng cho cơ sở dữ liệu của bạn:
| Cơ sở dữ liệu | Cú pháp được sử dụng |
|---|
| MySQL / MariaDB | EXPLAIN <truy vấn> |
| PostgreSQL | EXPLAIN <truy vấn> |
| SQLite | EXPLAIN QUERY PLAN <truy vấn> |
Kết quả kế hoạch thực thi xuất hiện trong bảng dữ liệu bên dưới editor, hiển thị việc sử dụng index, chiến lược join và số hàng ước tính.
Chạy Explain trước khi thực thi các truy vấn tốn kém để xác minh chúng sử dụng đúng index và chiến lược join mong đợi.
Xử lý lỗi
Khi một truy vấn thất bại:
- Thông báo lỗi xuất hiện bên dưới trình soạn thảo
- Số dòng có thể được tô sáng nếu lỗi tham chiếu đến một dòng cụ thể
- Đọc thông báo lỗi để biết chi tiết về những gì đã xảy ra sai
Cài đặt Trình soạn thảo
Tùy chỉnh trình soạn thảo trong Settings > Editor:
Cài đặt Font
| Cài đặt | Tùy chọn | Mặc định |
|---|
| Font Family | System Mono, SF Mono, Menlo, Monaco, Courier New | System Mono |
| Font Size | 11-18 pt | 13 pt |
Cài đặt Hiển thị
| Cài đặt | Mô tả | Mặc định |
|---|
| Show Line Numbers | Hiển thị số dòng | Bật |
| Highlight Current Line | Tô sáng nhẹ dòng có con trỏ | Bật |
| Word Wrap | Tự động xuống dòng cho dòng dài | Tắt |
Cài đặt Thụt lề
| Cài đặt | Tùy chọn | Mặc định |
|---|
| Tab Width | 2, 4, 8 khoảng trắng | 4 |
| Auto Indent | Tự động thụt lề | Bật |
Mẹo và Thủ thuật
Định dạng truy vấn
Để dễ đọc hơn, định dạng các truy vấn phức tạp với thụt lề:
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01'
AND u.status = 'active'
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC
LIMIT 100;
Sử dụng chú thích
Thêm chú thích để ghi chú các truy vấn của bạn:
-- Lấy người dùng đang hoạt động với đơn hàng gần đây
SELECT u.name, COUNT(o.id) as orders
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = true
AND o.created_at > CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.name;
/*
* Chú thích nhiều dòng
* Hữu ích cho các giải thích dài hơn
*/
Khám phá bảng nhanh
Để nhanh chóng khám phá cấu trúc và dữ liệu của bảng:
-- Xem cấu trúc bảng (MySQL)
DESCRIBE users;
-- Xem cấu trúc bảng (PostgreSQL)
\d users
-- Dữ liệu mẫu
SELECT * FROM users LIMIT 10;
-- Số lượng dòng
SELECT COUNT(*) FROM users;
Sử dụng Alias
Sử dụng alias bảng cho truy vấn sạch hơn, dễ đọc hơn:
-- Không có alias (dài dòng)
SELECT users.name, orders.total
FROM users
JOIN orders ON users.id = orders.user_id;
-- Với alias (sạch hơn)
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id;
Phím tắt
| Thao tác | Phím tắt |
|---|
| Thực thi truy vấn | Cmd+Enter |
| Giải thích truy vấn | Option+Cmd+E |
| Chọn tất cả | Cmd+A |
| Cắt | Cmd+X |
| Sao chép | Cmd+C |
| Dán | Cmd+V |
| Hoàn tác | Cmd+Z |
| Làm lại | Cmd+Shift+Z |
| Tìm kiếm | Cmd+F |
| Tìm và Thay thế | Cmd+Option+F |
Thực hành tốt
Luôn sử dụng LIMIT
Khi khám phá dữ liệu, luôn sử dụng LIMIT để tránh tải hàng triệu dòng:
SELECT * FROM large_table LIMIT 100;
Kiểm tra DELETE/UPDATE với SELECT trước
Trước khi chạy các truy vấn phá hủy, xác minh bằng SELECT:
-- Đầu tiên, xác minh những gì sẽ bị ảnh hưởng
SELECT * FROM users WHERE last_login < '2023-01-01';
-- Sau đó chạy delete thực tế
DELETE FROM users WHERE last_login < '2023-01-01';
Sử dụng Transaction để an toàn
Bọc các thao tác nguy hiểm trong transaction:
BEGIN;
DELETE FROM important_table WHERE condition;
-- Xác minh kết quả
SELECT COUNT(*) FROM important_table;
-- Nếu đúng:
COMMIT;
-- Nếu sai:
ROLLBACK;
Các bước tiếp theo