Oracle查看表結(jié)構(gòu)的多種方法詳解
Oracle提供了多種查看表結(jié)構(gòu)的方法:
- 1. 使用DESCRIBE命令快速查看列名和類型;
- 2. 查詢USER_TAB_COLUMNS獲取詳細列信息;
- 3. 通過USER_COL_COMMENTS查看列注釋;
- 4. 使用USER_CONSTRAINTS查詢約束信息;
- 5. 調(diào)用DBMS_METADATA.GET_DDL獲取完整建表語句。
相比MySQL的DESC命令,Oracle的數(shù)據(jù)字典視圖提供了更全面的表結(jié)構(gòu)信息,包括列屬性、約束、注釋等。
開發(fā)人員可根據(jù)需求選擇不同方法,從簡單查看列名到獲取完整DDL語句。
Oracle 沒有像 MySQL 的 DESC 或 SHOW COLUMNS 那樣簡單的命令,但有多種方式可以查看表結(jié)構(gòu)。
一、使用 DESCRIBE(最常用)
DESC actor; -- 或 DESCRIBE actor;
輸出示例:
Name Null? Type ------------ ----- ------------- ACTOR_ID NOT NULL NUMBER(5) FIRST_NAME NOT NULL VARCHAR2(45) LAST_NAME NOT NULL VARCHAR2(45) LAST_UPDATE NOT NULL DATE CREATE_DATE NOT NULL DATE
二、查詢數(shù)據(jù)字典視圖(最詳細)
2.1 查看列信息
-- 查看指定表的所有列
SELECT
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
NULLABLE,
DATA_DEFAULT
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'ACTOR'
ORDER BY COLUMN_ID;2.2 查看詳細列信息(含注釋)
SELECT
a.COLUMN_NAME,
a.DATA_TYPE,
a.DATA_LENGTH,
a.NULLABLE,
b.COMMENTS
FROM USER_TAB_COLUMNS a
LEFT JOIN USER_COL_COMMENTS b
ON a.TABLE_NAME = b.TABLE_NAME
AND a.COLUMN_NAME = b.COLUMN_NAME
WHERE a.TABLE_NAME = 'ACTOR'
ORDER BY a.COLUMN_ID;三、數(shù)據(jù)字典視圖對比
| 視圖 | 作用 | 說明 |
|---|---|---|
USER_TAB_COLUMNS | 當(dāng)前用戶擁有的表列信息 | 最常用 |
ALL_TAB_COLUMNS | 當(dāng)前用戶可訪問的所有表列 | 權(quán)限范圍更廣 |
DBA_TAB_COLUMNS | 數(shù)據(jù)庫所有表的列 | 需要 DBA 權(quán)限 |
USER_COL_COMMENTS | 當(dāng)前用戶表的列注釋 | 查看 COMMENT |
USER_CONSTRAINTS | 當(dāng)前用戶表的約束信息 | 查看主鍵、外鍵等 |
USER_IND_COLUMNS | 當(dāng)前用戶表的索引列 | 查看索引信息 |
四、綜合查詢示例
查看表完整結(jié)構(gòu)(列+約束+注釋)
-- 列信息 + 注釋
SELECT
t.COLUMN_ID,
t.COLUMN_NAME,
t.DATA_TYPE,
t.DATA_LENGTH AS "LENGTH",
t.NULLABLE,
c.COMMENTS
FROM USER_TAB_COLUMNS t
LEFT JOIN USER_COL_COMMENTS c
ON t.TABLE_NAME = c.TABLE_NAME AND t.COLUMN_NAME = c.COLUMN_NAME
WHERE t.TABLE_NAME = UPPER('actor')
ORDER BY t.COLUMN_ID;查看主鍵信息
SELECT
a.COLUMN_NAME,
a.CONSTRAINT_NAME
FROM USER_CONS_COLUMNS a
JOIN USER_CONSTRAINTS b
ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE b.TABLE_NAME = 'ACTOR'
AND b.CONSTRAINT_TYPE = 'P';五、MySQL vs Oracle 查看表結(jié)構(gòu)對比
| 操作 | MySQL | Oracle |
|---|---|---|
| 簡單查看 | DESC actor; | DESC actor; |
| 查看列詳情 | SHOW COLUMNS FROM actor; | SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='ACTOR'; |
| 查看建表語句 | SHOW CREATE TABLE actor; | SELECT DBMS_METADATA.GET_DDL('TABLE','ACTOR') FROM DUAL; |
| 查看注釋 | SHOW FULL COLUMNS FROM actor; | SELECT * FROM USER_COL_COMMENTS; |
| 查看索引 | SHOW INDEX FROM actor; | SELECT * FROM USER_IND_COLUMNS; |
| 查看約束 | 用 SHOW CREATE TABLE | SELECT * FROM USER_CONSTRAINTS; |
六、獲取建表語句(DDL)
-- Oracle 特有方式
SELECT DBMS_METADATA.GET_DDL('TABLE', 'ACTOR') FROM DUAL;
-- 如果表屬于其他用戶(如 SCOTT)
SELECT DBMS_METADATA.GET_DDL('TABLE', 'ACTOR', 'SCOTT') FROM DUAL;輸出示例:
CREATE TABLE "SCOTT"."ACTOR" (
"ACTOR_ID" NUMBER(5) NOT NULL ENABLE,
"FIRST_NAME" VARCHAR2(45) NOT NULL ENABLE,
"LAST_NAME" VARCHAR2(45) NOT NULL ENABLE,
"LAST_UPDATE" DATE NOT NULL ENABLE,
"CREATE_DATE" DATE DEFAULT TO_DATE('2020-10-01','YYYY-MM-DD') NOT NULL ENABLE,
PRIMARY KEY ("ACTOR_ID") ENABLE
)七、常用快捷命令總結(jié)
| 命令/查詢 | 用途 |
|---|---|
DESC 表名 | 快速查看列名和類型 |
SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='表名'; | 查看列詳細信息 |
SELECT * FROM USER_COL_COMMENTS WHERE TABLE_NAME='表名'; | 查看列注釋 |
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='表名'; | 查看約束 |
SELECT DBMS_METADATA.GET_DDL('TABLE','表名') FROM DUAL; | 獲取完整建表語句 |
到此這篇關(guān)于Oracle查看表結(jié)構(gòu)的多種方法的文章就介紹到這了,更多相關(guān)Oracle查看表結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Navicat連接Oracle數(shù)據(jù)庫的詳細步驟與注意事項
Navicat是一套可創(chuàng)建多個連接的數(shù)據(jù)庫管理工具,用以方便管理各種數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于Navicat連接Oracle數(shù)據(jù)庫的詳細步驟與注意事項,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04
Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法
今天在使用應(yīng)用程序連接Oracle時碰到了"ORA-12638:身份證明檢索失敗"錯誤,給大家總結(jié)解決方法,這篇文章主要給大家介紹了關(guān)于Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法,需要的朋友可以參考下2023-10-10
Oracle?Scheduler任務(wù)故障診斷方法實戰(zhàn)指南
Oracle數(shù)據(jù)庫作為企業(yè)級應(yīng)用中最常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,偶爾會遇到各種故障和問題,這篇文章主要介紹了Oracle?Scheduler任務(wù)故障診斷方法的相關(guān)資料,需要的朋友可以參考下2025-09-09

