Chuyển đến nội dung chính

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.
Trình soạn thảo SQL

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 ý
Tự động hoàn thành

Những gì được gợi ý

Ngữ cảnhGợi ý
Sau SELECTTên cột, *, các hàm
Sau FROMTên bảng, tên schema
Sau JOINTên bảng
Sau WHERETê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ệnhTừ 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ácPhím tắtMô tả
Thực thi truy vấnCmd+EnterChạ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ấnOption+Cmd+EHiể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ệuCú pháp được sử dụng
MySQL / MariaDBEXPLAIN <truy vấn>
PostgreSQLEXPLAIN <truy vấn>
SQLiteEXPLAIN 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:
  1. Thông báo lỗi xuất hiện bên dưới trình soạn thảo
  2. Số dòng có thể được tô sáng nếu lỗi tham chiếu đến một dòng cụ thể
  3. Đọc thông báo lỗi để biết chi tiết về những gì đã xảy ra sai
Lỗi truy vấn

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 đặtTùy chọnMặc định
Font FamilySystem Mono, SF Mono, Menlo, Monaco, Courier NewSystem Mono
Font Size11-18 pt13 pt

Cài đặt Hiển thị

Cài đặtMô tảMặc định
Show Line NumbersHiển thị số dòngBật
Highlight Current LineTô sáng nhẹ dòng có con trỏBật
Word WrapTự động xuống dòng cho dòng dàiTắt

Cài đặt Thụt lề

Cài đặtTùy chọnMặc định
Tab Width2, 4, 8 khoảng trắng4
Auto IndentTự độ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ácPhím tắt
Thực thi truy vấnCmd+Enter
Giải thích truy vấnOption+Cmd+E
Chọn tất cảCmd+A
CắtCmd+X
Sao chépCmd+C
DánCmd+V
Hoàn tácCmd+Z
Làm lạiCmd+Shift+Z
Tìm kiếmCmd+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