SQL Autocomplete
TablePro cung cấp autocomplete SQL thông minh, nhận biết ngữ cảnh, hiểu schema database, cú pháp SQL và ngữ cảnh query của bạn. Điều này giúp bạn viết query nhanh hơn và ít lỗi hơn.
Cách Autocomplete Hoạt Động
Hệ thống autocomplete phân tích:
- Vị trí hiện tại của bạn trong query
- Ngữ cảnh cú pháp SQL (SELECT, FROM, WHERE, v.v.)
- Các bảng được tham chiếu và alias của chúng
- Schema database của bạn (bảng, cột, hàm)
Điều này cho phép nó chỉ gợi ý các completion phù hợp dựa trên những gì có ý nghĩa tại mỗi điểm trong query của bạn.
Kích Hoạt Autocomplete
Tự động
Autocomplete xuất hiện tự động khi bạn gõ:
- Sau khi gõ 1-2 ký tự
- Sau khi gõ
. (dấu chấm) để truy cập cột
- Sau một số từ khóa nhất định (SELECT, FROM, JOIN, v.v.)
Thủ công
Bắt buộc hiển thị popup autocomplete:
- Bắt đầu gõ và đợi một chút
- Popup xuất hiện với các gợi ý phù hợp
Đóng
- Nhấn
Escape để đóng popup
- Tiếp tục gõ để lọc gợi ý
- Click bên ngoài popup
Các Loại Completion
Từ Khóa SQL
Từ khóa được gợi ý dựa trên ngữ cảnh cú pháp SQL:
SEL| -- Gợi ý: SELECT
FROM users WH| -- Gợi ý: WHERE
SELECT * FROM users WHERE name LIKE '%test%' ORD| -- Gợi ý: ORDER
Các từ khóa được gợi ý bao gồm:
| Danh mục | Từ khóa |
|---|
| Câu lệnh | SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP |
| Mệnh đề | FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, HAVING, LIMIT |
| Toán tử | AND, OR, NOT, IN, LIKE, BETWEEN, IS NULL, EXISTS |
| Join | INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN |
Tên Bảng
Các bảng được gợi ý sau các từ khóa mong đợi tham chiếu bảng:
SELECT * FROM | -- Gợi ý tất cả các bảng
SELECT * FROM us| -- Gợi ý các bảng bắt đầu bằng "us": users, user_roles
SELECT * FROM users JOIN | -- Gợi ý tất cả các bảng
Tên Cột
Các cột được gợi ý dựa trên các bảng được tham chiếu:
SELECT | FROM users -- Gợi ý các cột từ bảng users
SELECT u.| FROM users u -- Gợi ý các cột với prefix "u."
SELECT * FROM users WHERE | -- Gợi ý các cột từ users
Sau Table Alias
Khi bạn sử dụng table alias, gõ alias theo sau bởi . sẽ hiển thị các cột của bảng đó:
SELECT
u.| -- Hiển thị: id, name, email, created_at (từ users)
FROM users u
JOIN orders o ON u.id = o.| -- Hiển thị: id, user_id, total (từ orders)
Hàm
Các hàm SQL được gợi ý trong ngữ cảnh phù hợp:
SELECT | -- Gợi ý: COUNT, SUM, AVG, MAX, MIN, v.v.
SELECT COUNT(| -- Gợi ý các cột và *
WHERE date_column > | -- Gợi ý: NOW(), CURRENT_DATE, v.v.
Các hàm được gợi ý thường gặp:
| Danh mục | Hàm |
|---|
| Tổng hợp | COUNT, SUM, AVG, MAX, MIN |
| Chuỗi | CONCAT, SUBSTRING, UPPER, LOWER, TRIM |
| Ngày | NOW, CURRENT_DATE, DATE_FORMAT, DATEADD |
| Toán học | ROUND, ABS, CEIL, FLOOR |
| Điều kiện | COALESCE, NULLIF, CASE, IF |
Tên Schema
Đối với database có nhiều schema (PostgreSQL):
SELECT * FROM | -- Gợi ý: public, schema1, schema2
SELECT * FROM public.| -- Gợi ý các bảng trong schema public
Gợi Ý Nhận Biết Ngữ Cảnh
Sau SELECT
Ngay sau SELECT:
- Tên cột từ các bảng trong mệnh đề FROM
* cho tất cả các cột
- Modifier
DISTINCT
- Hàm tổng hợp
SELECT |
-- Gợi ý: *, DISTINCT, tên cột, hàm
Sau FROM/JOIN
Sau từ khóa FROM hoặc JOIN:
- Tất cả tên bảng có thể truy cập
- Tên có schema (schema.table)
Sau WHERE
Trong mệnh đề WHERE:
- Tên cột từ các bảng được chọn
- Toán tử so sánh
- Toán tử logic (AND, OR)
Sau ON (điều kiện JOIN)
Trong mệnh đề JOIN ON:
- Các cột từ cả hai bảng được join
- Thường được sử dụng cho quan hệ foreign key
SELECT * FROM users u
JOIN orders o ON |
-- Gợi ý: u.id, o.user_id, v.v.
Sau GROUP BY
- Các cột xuất hiện trong mệnh đề SELECT
- Tên cột không được tổng hợp
Sau ORDER BY
- Tên cột
- Alias được định nghĩa trong SELECT
- Từ khóa ASC/DESC
Sử Dụng Completion
Điều Hướng Bằng Bàn Phím
| Phím | Hành động |
|---|
↓ Mũi tên xuống | Chọn gợi ý tiếp theo |
↑ Mũi tên lên | Chọn gợi ý trước |
Enter | Chấp nhận gợi ý đã chọn |
Tab | Chấp nhận gợi ý đã chọn |
Escape | Đóng popup |
Lọc
Tiếp tục gõ để lọc các gợi ý:
SELECT * FROM user|
-- Hiển thị: users, user_roles, user_preferences
-- Gõ thêm sẽ thu hẹp kết quả
Chấp Nhận Gợi Ý
Khi bạn chấp nhận một gợi ý:
- Văn bản gợi ý được chèn tại con trỏ
- Bất kỳ prefix đã gõ nào được thay thế
- Con trỏ di chuyển đến cuối văn bản đã chèn
Cache Schema
Cách Schema Được Tải
Khi bạn kết nối đến database, TablePro:
- Lấy tất cả tên bảng
- Tải thông tin cột cho mỗi bảng
- Cache thông tin này để autocomplete nhanh
Làm Mới Schema
Nếu bạn thực hiện thay đổi schema (thêm bảng, thay đổi cột):
- Click chuột phải vào kết nối trong sidebar
- Chọn Refresh
Hoặc ngắt kết nối và kết nối lại đến database.
Các thay đổi schema được thực hiện trong TablePro (qua tab Structure) tự động được phản ánh trong autocomplete.
Hiệu Suất
File Lớn
Autocomplete hoạt động trên file SQL với bất kỳ kích thước nào, bao gồm các file dump nhiều megabyte. Đối với file lớn hơn 500 KB, engine tự động trích xuất một cửa sổ cục bộ xung quanh con trỏ và chỉ phân tích câu lệnh gần nhất, vì vậy các gợi ý vẫn xuất hiện ngay lập tức bất kể tổng kích thước file.
Schema Lớn
Đối với database có nhiều bảng (100+):
- Tải schema ban đầu có thể mất một chút thời gian
- Autocomplete vẫn phản hồi nhanh sau khi cache
- Lọc gợi ý bằng cách gõ thêm ký tự
Mẹo Để Có Hiệu Suất Tốt Hơn
- Gõ thêm ký tự: Gõ nhiều hơn để thu hẹp gợi ý nhanh hơn
- Sử dụng table alias: Giảm phạm vi lookup
- Để cache hoạt động: Schema được cache sau lần tải đầu tiên
Giới Hạn
Những Gì Không Được Gợi Ý
- Bảng tạm thời (không có trong schema)
- Alias của subquery
- Tên cột động
- Các cột từ kết nối khác
Độ Phức Tạp Query
Các query rất phức tạp có thể có khả năng nhận biết ngữ cảnh hạn chế:
- Subquery lồng sâu
- CTE phức tạp
- SQL động
Trong những trường hợp này, gợi ý từ khóa và bảng cơ bản vẫn hoạt động.
Cấu Hình
Autocomplete được bật theo mặc định mà không cần cấu hình.
Các thiết lập trong tương lai có thể bao gồm:
- Bật/tắt autocomplete
- Độ trễ kích hoạt autocomplete
- Tùy chọn phân biệt chữ hoa chữ thường
Thực Hành Tốt Nhất
Sử Dụng Table Alias
Alias làm cho autocomplete chính xác hơn:
-- Tốt: Rõ ràng mỗi cột đến từ bảng nào
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
-- Kém rõ ràng hơn nếu không có alias
SELECT users.name, orders.total
FROM users
JOIN orders ON users.id = orders.user_id
Bắt Đầu Với FROM
Viết FROM trước giúp autocomplete biết các bảng của bạn:
-- Cách tiếp cận này giúp autocomplete
FROM users u
JOIN orders o ON u.id = o.user_id
SELECT u.| -- Bây giờ biết về các bảng u và o
Để Gợi Ý Hướng Dẫn Bạn
Nếu bạn không chắc chắn tên cột chính xác:
- Gõ table alias và dấu chấm:
u.
- Duyệt các gợi ý
- Chọn cột đúng
Khắc Phục Sự Cố
Không Xuất Hiện Gợi Ý
- Kiểm tra kết nối: Đảm bảo bạn đã kết nối đến database
- Làm mới schema: Click chuột phải vào kết nối > Refresh
- Đợi cache: Schema lớn có thể mất thời gian để tải
Gợi Ý Sai
- Kiểm tra table alias: Đảm bảo alias được định nghĩa đúng
- Kiểm tra mệnh đề FROM: Bảng phải được tham chiếu để gợi ý cột
- Làm mới nếu schema thay đổi: Thay đổi schema cần refresh
Gợi Ý Chậm
- Gõ thêm ký tự: Thu hẹp không gian tìm kiếm
- Sử dụng alias: Giới hạn phạm vi tìm kiếm cột
- Kiểm tra kết nối database: Độ trễ mạng ảnh hưởng đến tải schema
Các Bước Tiếp Theo