Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Loại trừ cột khỏi SHOW COLUMNS trong MySQL với WHERE

MySQL cho phép lọc kết quả SHOW COLUMNS bằng mệnh đề WHERE để ẩn các cột không cần thiết.

Cú pháp

SHOW COLUMNS FROM tên_bảng WHERE Field NOT IN ('cột1', 'cột2', ...);

Ví dụ minh họa

Tạo bảng demo 5 cột:

mysql> CREATE TABLE excludeCertainColumnsDemo (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(100),
    -> StudentAge INT,
    -> StudentMarks INT,
    -> StudentAddress VARCHAR(200)
    -> );
Query OK, 0 rows affected (0.50 sec)

Xem đầy đủ cấu trúc (DESC = SHOW COLUMNS):

mysql> DESC excludeCertainColumnsDemo;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| StudentId      | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentName    | varchar(100) | YES  |     | NULL    |                |
| StudentAge     | int(11)      | YES  |     | NULL    |                |
| StudentMarks   | int(11)      | YES  |     | NULL    |                |
| StudentAddress | varchar(200) | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+

Loại trừ cột StudentAge và StudentMarks:

mysql> SHOW COLUMNS FROM excludeCertainColumnsDemo 
    -> WHERE Field NOT IN ('StudentAge', 'StudentMarks');
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| StudentId      | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentName    | varchar(100) | YES  |     | NULL    |                |
| StudentAddress | varchar(200) | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+

Các điều kiện WHERE hữu ích khác

Điều kiệnVí dụKết quả
Field LIKE 'pattern'WHERE Field LIKE 'Student%'Chỉ cột bắt đầu bằng Student
Type = 'int'WHERE Type = 'int(11)'Chỉ cột kiểu INT
Key = 'PRI'WHERE Key = 'PRI'Chỉ khóa chính
Extra LIKE '%auto%'WHERE Extra LIKE '%auto_increment%'Chỉ cột auto_increment

Cách khác: Truy vấn INFORMATION_SCHEMA.COLUMNS

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'tên_db' AND TABLE_NAME = 'tên_bảng'
  AND COLUMN_NAME NOT IN ('StudentAge', 'StudentMarks');

Cách này linh hoạt hơn, dễ tích hợp vào ứng dụng.