首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL DESCRIBE 命令詳解:查看表結構、列信息、判斷欄位存在性

     編輯:MySQL 資料庫相關知識

前言

DESCRIBE(可縮寫 DESC)是 MySQL 查看表結構最常用的命令,等同於 SHOW COLUMNS FROM。本文系統整理其用法、輸出欄位含義、進階過濾技巧、程式化判斷欄位是否存在。

一、基本用法

1. 查看整表結構

DESCRIBE guestbook;
-- 或
DESC guestbook;

2. 查看指定欄位

DESCRIBE guestbook id;
DESC ol_user username;

3. 通配符過濾

DESCRIBE tbl_name 'col_%';  -- 匹配 col_ 開頭的欄位
DESCRIBE tbl_name 'id%';    -- 匹配 id 開頭

支援 %(任意字符)和 _(單字符)通配符,無需引號。

二、輸出欄位詳細含義

mysql> DESC ol_user username\G
*************************** 1. row ***************************
Field: UserName          -- 欄位名
Type: varchar(100)       -- 數據類型及長度
Null: NO                 -- 是否允許 NULL(NO/YES)
Key: MUL                 -- 索引類型:PRI=主鍵、UNI=唯一、MUL=非唯一索引
Default:                 -- 默認值(無則為空)
Extra:                   -- 額外信息:auto_increment、on update CURRENT_TIMESTAMP 等
1 row in set (0.02 sec)

Key 值對照表

Key 值含義
PRIPrimary Key(主鍵)
UNIUnique Index(唯一索引)
MULNon-unique Index(普通索引,允許重複值)
(空)無索引

三、等價命令:SHOW COLUMNS

SHOW COLUMNS FROM tbl_name [FROM db_name];
SHOW COLUMNS FROM db_name.tbl_name;

功能完全相同,DESCRIBE 為標準 SQL 簡寫,更常用。

四、程式化判斷欄位是否存在

PHP 範例

mysql_connect('localhost', 'root', 'root');
mysql_select_db('demo');

$result = mysql_query('DESCRIBE cdb_posts first');
$row = mysql_fetch_array($result);

if ($row && $row[0] === 'first') {
  echo "欄位 first 存在";
} else {
  echo "欄位 first 不存在";  // $row 為 false 或 $row[0] 為 NULL
}

原理:DESCRIBE 若欄位不存在返回空結果集,mysql_fetch_array 返回 false。

五、實用技巧

  • DESCRIBE tbl_name\G:垂直顯示,適合欄位多的表
  • SHOW CREATE TABLE tbl_name:查看完整建表 SQL(含引擎、字元集、分區、外鍵等)
  • SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='db' AND TABLE_NAME='tbl':程式化獲取豐富元數據
  • 搭配 grep 過濾:mysql -e "DESC db.tbl" | grep -i 'pri\|uni' 快速找主鍵/唯一鍵
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved