DESCRIBE guestbook; -- 或 SHOW COLUMNS FROM guestbook;
輸出欄位:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | NULL | ||
| content | text | YES | NULL | ||
| created_at | timestamp | NO | CURRENT_TIMESTAMP |
mysql> DESC ol_user username\G *************************** 1. row *************************** Field: UserName Type: varchar(100) Null: NO Key: MUL Default: NULL Extra: 1 row in set (0.02 sec)
$conn = mysql_connect('localhost', 'root', 'root');
mysql_select_db('demo', $conn);
$result = mysql_query('DESCRIBE cdb_posts first', $conn);
$row = mysql_fetch_assoc($result);
if ($row && $row['Field'] === 'first') {
echo "字段 first 存在";
} else {
echo "字段 first 不存在";
}
原理:DESCRIBE 對不存在的列返回空結果集,不報錯。
SELECT COUNT(*) INTO @exists FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'cdb_posts' AND COLUMN_NAME = 'first'; IF @exists > 0 THEN -- 字段存在邏輯 END IF;
命令 優點 缺點 推薦場景 DESC tbl簡短、記憶易 功能有限 快速查看表結構 SHOW COLUMNS FROM tbl支援 WHERE/LIKE/FULL 較長 腳本篩選、自動化檢查 INFORMATION_SCHEMA.COLUMNS標準 SQL、可 JOIN、元數據豐富 查詢較慢 存儲過程、工具開發、跨庫對比 六、避坑提示
DESCRIBE不支援WHERE子句,複雜篩選用SHOW COLUMNS或INFORMATION_SCHEMA- 字段名含保留字需反引號:
DESCRIBE \`order\` \`group\`- 大表
SHOW FULL COLUMNS可能較慢(需讀取 .frm/元數據),生產環境謹慎頻繁調用