1. 程式人生 > >Oracle查詢資料表結構/欄位/型別/大小

Oracle查詢資料表結構/欄位/型別/大小

Oracle資料庫字典Oracle的絕大多數資料字典檢視中都有象DBA_TABLES,ALL_TABLESUSER_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資料字典,利用OracleDDL

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

資料庫表名[TABLE_TEST]

欄位名

資料型別

長度

預設值

允許空

主鍵

註釋

NAME

VARCHAR2

40

N

Y

姓名

***

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,
    *** 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.*** 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

姓名

***

VARCHAR2

1

N

性別

BIRTHDAY

DATE

7

N

生日

HEIGHT

NUMBER

22

3

2

Y

身高

WEIGHT

NUMBER

22

3

2

Y

體重

MEMO

BLOB

4000

Y

備註

這樣,我們在進行程式設計時,通過一條簡單的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''''

得到結果如下:

欄位名

資料型別

長度

整數位

小數位

允許空值

預設值

備註

索引次數

BIRTHDAY

DATE

7

N

生日

HEIGHT

NUMBER

22

3

2

Y

身高

MEMO

BLOB

4000

Y

備註

NAME

VARCHAR2

40

N

姓名

1

***

VARCHAR2

1

N

性別

WEIGHT

NUMBER

22

3

2

Y

體重

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

相關推薦

Oracle查詢資料結構//型別/大小

Oracle資料庫字典在Oracle的絕大多數資料字典檢視中都有象DBA_TABLES,ALL_TABLES和USER_TABLES這樣的檢視家族。Oracle中有超過100個檢視家族,下表列出了最重要和最常用的檢視家族,需要注意的是每個檢視家族都有一個DBA_,一個ALL_

Oracle查詢資料結構SQL

select     A.column_name  ,A.data_type  ,A.data_length  ,A.data_precision  ,     A.Data_Scale  ,A.nullable  ,A.Data_default  ,B.comments

Informix資料結構分析資料整理之型別說明和查詢SQL語句

查詢所有Informix資料表字段型別SQL語句: select a.tabname,b.colname,b.coltype,case   b.coltype when '0' then 'CHAR' when '1' then 'SMALLINT' when '2' the

oracle資料庫查詢某個資訊

(1)查詢整個資料庫所有表的欄位 select t.column_name from user_col_comments t;(一般建議去執行,因為資料庫表過多執行起來會非常的慢) (2)查詢特定表名的表字段 select t.column_name, t.column_name&nbs

ORACLE——在所有查詢某個字串並輸出名和

什麼都不想說,直接上乾貨 declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from

Django——7 常用的查詢 常用的模型型別 Field的常用引數 關係的實現

Django 常用的查詢 常用的查詢方法 常用的查詢條件 常用欄位對映關係 Field常用引數 表關係的實現     查用的查詢方法 這是需要用到的資料 from django.http import Htt

查詢某個名,型別,長度及說明,查詢主鍵資訊,查詢自增列資訊的儲存過程

create PROCEDURE [dbo].[ziduan] /*  function:查詢某個表的欄位名,欄位型別,長度及欄位說明,並asc排序;查詢主鍵資訊;查詢自增列資訊  */ (@biaoming nvarchar(50) )  ASSET NOCOUNT ON

Oracle修改結構名和長度

新增欄位的語法:alter table tablename add (column datatype [default value][null/not null],….); 修改欄位的語法:al

sqlserver 獲取所有型別等資訊

USE [MultipleAnalysisDataFY] GO /****** Object: View [dbo].[selectfieldtype] Script Date: 2018/11/7 星期三 12:02:27 ******/ SET ANSI_NULLS ON GO SET

Oracle varchar2改成大型別clob

做專案中經常碰到資料庫改欄位問題,給自己做個記錄,下次直接可以拿來用了。Oracle 有些欄位直接修改會報錯ORA-22858: invalid alteration of datatype。不允許修改。不允許修改怎麼辦呢。。總不能把表幹掉重新建欄位吧。這在生產肯定行不通。可以先建個新欄

oracle中操作註釋

1、查詢表註釋 SELECT * FROM USER_TAB_COMMENTS;三列:TABLE_NAME,TABLE_TYPE,COMMENTS 2、查詢欄位註釋 SELECT * FROM USER_COL_COMMENTS;三列:TABLE_NAME,COLUMN_NAME,COM

查詢所有

SELECT USER_TAB_COLS.TABLE_NAME as 表名, UTC.COMMENTS as 表中文名, USER_TAB_COLS.COLUMN_ID as 列序號, USER_TAB_COLS.COLUM

查詢某個被其他作為外來鍵

select c.table_name,         c.constraint_name,         fc.table_name,         fc.

postgresql資料名的獲取

pg庫表名獲取 select * from pg_tables where tablename=‘’ pg庫列名和型別註釋等獲取 –獲取欄位名、型別、註釋、是否為空: SELECT col_description(a.attrelid,a.attnum) as comment,a

SQLServer使用:型別

表的欄位型別: char: 固定長度,儲存ANSI字元,不足的補英文半形空格。 nchar: 固定長度,儲存Unicode字元,不足的補英文半形空格 varchar: 可變長度,儲存ANSI字元,根據資料長度自動變化。 nvarchar: 可變長度,儲存Unicode字元,根據資料長度自

mysql中為使用者設定資料庫,資料(列)的訪問許可權

1、mysql中對指定使用者,授予某些資料庫,資料表或者欄位訪問許可權 語法: GRANT PRIVILEGES ON DATA.TABLE TO USERS; 溫馨提示: 授權後可以使用2中命令進行使用者許可權許可權,也可以直接重啟mysql程序方式進行許可權重新整理。 A

Access sql語句建立型別

建立一張空表: Sql="Create TABLE [表名]" 建立一張有欄位的表: Sql="Create TABLE [表名]([欄位名1] MEMO NOT NULL, [欄位名2] MEMO, [欄位名3] COUNTER NOT NULL, [欄位名4] DA

MySQL中大資料增加,增加索引實現

最近遇到的一個問題,需要在一張1800萬資料量的表中新增加一個欄位並新增索引,但是直接新增會導致mysql崩潰或者鎖表時間太長影響使用者操作,所以需要利用其他的方法進行新增,這篇文章主要給大家介紹了MySQL中大資料表增加欄位,增加索引的實現過程,需要的朋友可以參考借鑑。

YII2 多關聯ar查詢

一對多 a表 id  status 1       1 b表 id  income  aid 1     1000      1 2    &nb

hibernate自動建設定型別為資料庫中為timestamp型別

1:專案需要,欄位應該設計為timestamp型別,但自動建表後總是被設定為datetime(當時用的資料庫為sqlserver) Google後,在配置檔案(Xxx.hbm.xml)中column新增 sql-type="timestamp" default="CUR