Oracle查詢數據表結構(欄位,類型,大小,備註)

来源:http://www.cnblogs.com/toyz/archive/2017/01/20/6321879.html
-Advertisement-
Play Games

作用:想要生成整個Oracle資料庫所有表結構WORD文檔(資料庫設計說明書) Oracle資料庫字典介紹 Oracle數據字典是有表和視圖組成的,存儲有關資料庫結構信息的一些資料庫對象。資料庫字典描述了實際數據是如何組織的。對它們可以象處理其他資料庫表或視圖一樣進行查詢,但不能進行任何修改。 Or ...


作用:想要生成整個Oracle資料庫所有表結構WORD文檔(資料庫設計說明書)

 

Oracle資料庫字典介紹
    Oracle數據字典是有表和視圖組成的,存儲有關資料庫結構信息的一些資料庫對象。資料庫字典描述了實際數據是如何組織的。對它們可以象處理其他資料庫表或視圖一樣進行查詢,但不能進行任何修改。
    Oracle資料庫字典通常是在創建和安裝資料庫時被創建的,Oracle數據字典是Oracle資料庫系統工作的基礎,沒有數據字典的支持,Oracle資料庫系統就不能進行任何工作。
    在Oracle資料庫字典中,許多視圖都有三個不同的實例,它們的首碼分別為"USER_"、"ALL_"及"DBA_"。"USER_"為首碼的資料庫字典視圖通常記錄執行查詢的帳戶所擁有的對象的信息,"ALL_"為首碼的資料庫字典視圖通常記錄包括執行查詢的帳戶所擁有的對象的信息及授權至PUBLIC的帳戶用戶所擁有的對象的信息,"DBA_"為首碼的資料庫字典視圖則包含所有資料庫對象的信息,而不管其所有者。其他的字典視圖中主要的是V$視圖,之所以這樣叫是因為他們都是以V$或GV$開頭的。V$視圖是基於X$虛擬視圖的。V$視圖是SYS用戶所擁有的,在預設狀況下,只有SYS用戶和擁有DBA系統許可權的用戶可以看到所有的視圖,沒有DBA許可權的用戶可以看到USER_和ALL_視圖,但不能看到DBA_視圖。與DBA_,ALL,和USER_視圖中面向資料庫信息相反,這些視圖可視的給出了面向實例的信息。
    在Oracle的絕大多數數據字典視圖中都有象DBA_TABLES,ALL_TABLES和USER_TABLES這樣的視圖家族。Oracle中有超過100個視圖家族,下表列出了最重要和最常用的視圖家族,需要註意的是每個視圖家族都有一個DBA_,一個ALL_一個USER_視圖。

視圖家族

描述

COL_PRIVS

包含了表的列許可權,包括授予者、被授予者和許可權

EXTENTS

數據範圍信息,比如數據文件,數據段名(segment_name)和大小

INDEXES

索引信息,比如類型、唯一性和被涉及的表

IND_COLUMNS

索引列信息,比如索引上的列的排序方式

OBJECTS

對象信息,比如狀態和DDL time

ROLE_PRIVS

角色許可權,比如GRANT和ADMIN選項

SEGMENTS

表和索引的數據段信息,比如tablespace和storage

SEQUECNCES

序列信息,比如序列的cache、cycle和ast_number

SOURCE

除觸發器之外的所有內置過程、函數、包的源代碼

SYNONYMS

別名信息,比如引用的對象和資料庫鏈接db_link

SYS_PRIVS

系統許可權,比如grantee、privilege、admin選項

TAB_COLUMNS

表和視圖的列信息,包括列的數據類型

TAB_PRIVS

表許可權,比如授予者、被授予者和許可權

TABLES

表信息,比如表空間(tablespace),存儲參數(storage parms)和數據行的數量

TRIGGERS

觸發器信息,比如類型、事件、觸發體(trigger body)

USERS

用戶信息,比如臨時的和預設的表空間

VIEWS

視圖信息,包括視圖定義


    在Oracle中還有一些不常用的數據字典表,但這些表不是真正的字典家族,他們都是一些重要的單一的視圖。這些視圖見下表:

視圖名稱

描述

USER_COL_PRIVS_MADE

用戶授予他人的列許可權

USER_COL_PRIVS_RECD

用戶獲得的列許可權

USER_TAB_PRIVS_MADE

用戶授予他人的表許可權

USER_TAB_PRIVS_RECD

用戶獲得的表許可權

Oracle資料庫字典的應用
  
藉助Oracle數據字典,利用Oracle的DDL語句,我們可以做很多事情,幾乎所有的Oracle開發輔助工具都是利用這一點進行設計的。作者將通過如何取得資料庫表欄位信息來說明。
首先我們定義一個資料庫表,資料庫表結構如下:

資料庫表名[TABLE_TEST]

欄位名

數據類型

長度

預設值

允許空

主鍵

註釋

NAME

VARCHAR2

40

 

N

Y

姓名

SEX

VARCHAR2

1

''''Y''''

N

 

性別

BIRTHDAY

DATE

0

 

Y

 

生日

HEIGHT

NUMBER

3,1

 

Y

 

身高

WEIGHT

NUMBER

3,1

 

Y

 

體重

MEMO

BLOB

0

 

Y

 

備註

創建表的SQL語句如下
-- 創建數據表
create table TABLE_TEST
(
    NAME varchar2(40) not null,
    SEX varchar2(1) default ''''Y'''' not null,
    BIRTHDAY date not null,
    HEIGHT number(3,2),
    WEIGHT number(3,2),
    MEMO blob
);
-- 給列添加備註
  comment on column TABLE_TEST.NAME is ''''姓名'''';
  comment on column TABLE_TEST.SEX is ''''性別'''';
  comment on column TABLE_TEST.BIRTHDAY is ''''生日'''';
  comment on column TABLE_TEST.HEIGHT is ''''身高'''';
  comment on column TABLE_TEST.WEIGHT is ''''體重'''';
  comment on column TABLE_TEST.MEMO is ''''備註'''';
-- 創建約束關係 主鍵 外鍵 其他
  alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (NAME);

數據表創建完畢,執行下列SQL語句:
select
    A.column_name 欄位名,A.data_type 數據類型,A.data_length 長度,A.data_precision 整數位,
    A.Data_Scale 小數位,A.nullable 允許空值,A.Data_default 預設值,B.comments 備註
from
    user_tab_columns A,user_col_comments B
where
    A.Table_Name = B.Table_Name
    and A.Column_Name = B.Column_Name
    and A.Table_Name = ''''TABLE_TEST''''

我們可以得出一下結果:

欄位名
數據類型
長度
整數位
小數位
允許空值
預設值
備註
NAME
VARCHAR2
40
   
N
<Long>
姓名
SEX
VARCHAR2
1
   
N
<Long>
性別
BIRTHDAY
DATE
7
   
N
<Long>
生日
HEIGHT
NUMBER
22
3
2
Y
<Long>
身高
WEIGHT
NUMBER
22
3
2
Y
<Long>
體重
MEMO
BLOB
4000
   
Y
<Long>
備註

這樣,我們在進行程式設計時,通過一條簡單的SQL語句,然好通過Ole調用Word,便可為最終用戶導出完整的資料庫表字典文檔。
再執行下列SQL語句:
select
    INDEX_NAME 索引名,INDEX_TYPE 索引類型,UNIQUENESS 索引類別
from
    user_indexes
where
    TABLE_NAME = ''''TABLE_TEST''''

得到結果如下(註:SYS_IL0000031226C00006$$索引為系統在創建資料庫表時自動創建的,用於資料庫表內容的維護):

 
索引名
索引類型
索引類別
1
SYS_IL0000031226C00006$$
LOB
UNIQUE
2
TB_TEST_P_NAME
NORMAL
UNIQUE

 

執行下列SQL語句,我們將得到更多的關於資料庫表結構的信息:
select
    A.column_name 欄位名,A.data_type 數據類型,A.data_length 長度,A.data_precision 整數位,
    A.Data_Scale 小數位,A.nullable 允許空值,A.Data_default 預設值,B.comments 備註,
    C.IndexCount 索引次數
from
    user_tab_columns A,
    user_col_comments B,
    (select count(*) IndexCount,Column_Name from User_Ind_Columns where Table_Name = ''''TABLE_TEST'''' group by Column_Name) C
where
    A.Table_Name = B.Table_Name
    and A.Column_Name = B.Column_Name
    and A.Column_Name = C.Column_Name(+)
    and A.Table_Name = ''''TABLE_TEST''''

關註流行國外網站

facebook:http://www.fb-on.com

facebook官網:http://www.facebookzh.com

facebook:http://www.cn-face-book.com

youtube:http://www.youtubezh.com

twitter:http://www.twitterzh.com

得到結果如下:

欄位名
數據類型
長度
整數位
小數位
允許空值
預設值
備註
索引次數
BIRTHDAY
DATE
7
   
N
<Long>
生日
 
HEIGHT
NUMBER
22
3
2
Y
<Long>
身高
 
MEMO
BLOB
4000
   
Y
<Long>
備註
 
NAME
VARCHAR2
40
   
N
<Long>
姓名
1
SEX
VARCHAR2
1
   
N
<Long>
性別
 
WEIGHT
NUMBER
22
3
2
Y
<Long>
體重
 

 

    當然Oracle數據字典的應用遠不止這些,通過Oracle資料庫字典的支持,我們可以得到Oracle資料庫結構的所有信息,著名的資料庫開發工具PL/SQL Developer完全就是基於Oracle的資料庫字典實現的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 打開Eclipse以後,一直在Android sdk content loader 0%,等了很長時間都沒有變,解決的方法是Project->Clean->Clean all projects,等一會兒就正常了。 ...
  • 由[OpenDigg](http://www.opendigg.com/) 出品的iOS開源項目周報第五期來啦。我們的iOS開源周報集合了OpenDigg一周來新收錄的優質的[iOS開源項目](http://www.opendigg.com/tags/ios),方便iOS開發人員便捷的找到自己需要的... ...
  • iOS開發中,我們經常遇到獲取拍照、相冊中圖片的功能,就必然少不了UIImagePickerController,但是我們發現當我們使用它的時候,它的頁面是英文的,看著很彆扭,國人還是比較喜歡看中文界面,下麵來看看我們怎麼把它變成中文界面的吧! 只需下麵兩步就可以了: Project-->Info- ...
  • LinearGradient 線性漸變渲染器 LinearGradient中文翻譯過來就是線性漸變的意思。線性漸變通俗來講就是給起點設置一個顏色值如#faf84d,終點設置一個顏色值如#CC423C,然後在一個區域內繪圖,這個圖像的顏色將呈現非常美妙的效果,顏色會從起點顏色到終點顏色過渡。給一張圖, ...
  • 示例地址 GitHub : https://github.com/ZhangGaoxing/xamarin-android-demo/tree/master/ControlsDemo ...
  • v$session中Command的數字含義。 1 CREATE TABLE 2 INSERT 3 SELECT 4 CREATE CLUSTER 5 ALTER CLUSTER 6 UPDATE 7 DELETE 8 DROP CLUSTER 9 CREATE INDEX 10 DROP INDE ...
  • 當使用 sp_attach_db 系統存儲過程附加資料庫時- - Tag: 當使用 sp_attach_db 系統存儲過程附加資料庫時 //附加資料庫 sp_attach_db 當使用 sp_attach_db 系統存儲過程附加資料庫時。 sp_attach_db:將資料庫附加到伺服器。 語法 sp ...
  • 1.ASCII 返回與指定的字元對應的十進位數; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE 65 97 48 32 2. CHR 給出整數,返回對應的字元; SQL ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...