Phương pháp 1: Lệnh DESC (Descibe)
Cách nhanh nhất, hiển thị đầy đủ thông tin cột:
DESC ten_bang;
Hoặc viết tắt:
SHOW COLUMNS FROM ten_bang;
Phương pháp 2: Truy vấn information_schema.COLUMNS
Linh hoạt hơn, có thể lọc, sắp xếp, join:
SELECT column_name FROM information_schema.columns WHERE table_name = 'ten_bang' AND table_schema = 'ten_database';
Ví dụ với bảng ExtractCommentDemo1
Dùng DESC
mysql> DESC ExtractCommentDemo1;
+----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | UserId | int(11) | YES | | NULL | | | UserName | varchar(200) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
Dùng information_schema
mysql> SELECT column_name -> FROM INFORMATION_SCHEMA.COLUMNS -> WHERE table_name = 'ExtractCommentDemo1';
+-------------+ | COLUMN_NAME | +-------------+ | UserId | | UserName | +-------------+ 2 rows in set (0.00 sec)
Truy vấn nâng cao từ information_schema
Lấy đầy đủ thông tin cột
SELECT
column_name,
data_type,
character_maximum_length,
numeric_precision,
is_nullable,
column_default,
column_key,
extra
FROM information_schema.columns
WHERE table_schema = 'ten_database' AND table_name = 'ten_bang'
ORDER BY ordinal_position;
Chỉ lấy tên cột để dùng trong dynamic SQL
SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema = 'ten_database' AND table_name = 'ten_bang';
Tìm cột theo kiểu dữ liệu
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'ten_database' AND data_type IN ('varchar', 'text', 'char');
So sánh 2 phương pháp
| Tiêu chí | DESC / SHOW COLUMNS | information_schema.COLUMNS |
|---|---|---|
| Tốc độ | Rất nhanh | Nhanh |
| Thông tin | Đầy đủ cấu trúc | Tùy chọn cột cần thiết |
| Lọc/Sắp xếp | Không | Có (WHERE, ORDER BY) |
| Chương trình | Khó parse | Dễ xử lý (result set chuẩn) |
| Cross-database | Phải USE database trước | Chỉ định table_schema |
Khuyến nghị
- DBA/Dev handbook: Dùng
DESCcho nhanh - Ứng dụng/Script: Dùng
information_schema - Luôn chỉ định
table_schemađể tránh nhầm database