丫丫小强的个人博客

查询所有表、索引、视图信息的SQL语句-Oracle

一、查询所有表,视图的基本信息,字段信息,索引信息

在数据字典与识图中可以找到相应的视图,来查询数据库基本信息;详细字段信息需要到视图中的查看里都有描述


在DBA_TAB_COLS视图中中有详细的表的描述下面是字段信息

  •     TABLE_NAME      是表名,视图名或者集群名;

  •     COLUMN_NAME      是'列名';

  •     DATA_TYPE      是“列的数据类型”;

  •     DATA_TYPE_MOD      是'列的数据类型修饰符';

  •     DATA_TYPE_OWNER      是“列的数据类型的所有者”;

  •     DATA_LENGTH      是'列的长度,以字节为单位';

  •     DATA_PRECISION      是'长度:十进制数字(数字)或二进制数字(浮点数)';

  •     DATA_SCALE      是“数字小数点右侧的数字”;

  •     NULLABLE      是'列允许空值吗?';

  •     COLUMN_ID      是'创建的列的序列号';

  •     DEFAULT_LENGTH      是'列的默认值的长度';

  •     DATA_DEFAULT            是'列的默认值';

  •     NUM_DISTINCT      是'列中不同值的个数';

  •     LOW_VALUE      是'列中的低值';

  •     HIGH_VALUE      是'列中的高值';

  •     密度为“柱的密度”;

  •     NUM_NULLS            是' null的数量在列';

  •     NUM_BUCKETS      是'该列柱状图中的桶数';

  •     LAST_ANALYZED      是'The date of The last time this column was analyzed';

  •     SAMPLE_SIZE      是“用于分析本列的样本大小”;

  •     CHARACTER_SET_NAME      是'字符集名称';

  •     CHAR_COL_DECL_LENGTH      是'声明长度字符类型列';

  •     GLOBAL_STATS      是“统计数据在没有合并基础分区的情况下计算吗?”;

  •     USER_STATS      是'是用户直接输入的数据吗?';

  •     AVG_COL_LEN      是“列的平均长度(以字节为单位)”;

  •     CHAR_LENGTH      是'列的最大字符长度';

  •     CHAR_USED为'C if width was specified in characters, B if in bytes';

  •     V80_FMT_IMAGE is ' is column data in 8.0 image format?';

  •     data_updated is '列数据是否已升级到最新的类型版本格式?';

  •     HIDDEN_COLUMN      是'这是一个隐藏的列吗?';

  •     VIRTUAL_COLUMN      是“这是一个虚拟列吗?”;

  •     SEGMENT_COLUMN_ID      是‘在段中的列的序列号’;

  •     INTERNAL_COLUMN_ID      是'列的内部序列号';

  •     QUALIFIED_COL_NAME      是'限定列名';



!!!在这里遇到了问题:查询所有出来的结果只有固定的一小部分,都是数据字典表,进入视图去看原数据也是,但是用条件查询还是可以查出来

条件查询可以查出来,但是上面的查询结果中不包含TESTS_1表 


数据字典表(Data dictionary table)用以存储表、索引、约束以及其它数据库结构的信息,这些对象通常以“$”结尾(例如:TAB$、OBJ$、TS$等),在创建数据库的时候通过运行$ORACLE_HOME/rdbms/admin/sql.bsq脚本来创建。sql.bsq是一个非常重要的文件,其中包含了数据字典表的定义及注释说明,应仔细阅读研究。


方法一 

//当前用户的表 table_name,tablespace_name,last_analyzed等
select table_name from user_tables;       

//所有用户的表 ower,table_name,tablespace_name,last_analyzed等 
select table_name from all_tables;  

//包括系统表 ower,table_name,tablespace_name,last_analyzed等       
select table_name from dba_tables;

--实例:

select table_name from dba_tables where owner='用户名'


列名:

ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等

如遇到一个庞大的数据核心系统,而并不知道主键关联的情况,可以用以下脚本查询该主键所有对应的表,随后进行筛选关联:

select table_name,column_name from user_tab_columns where column_name like '%主键名%';


方法二:

oracle 查询全部表和对应表结构:

SELECT
        T .database_name AS database_name,    --
        T .table_name AS table_name,
        T .column_name AS column_name,
        T .column_type AS column_type,
        T .data_length AS data_length,
        T .column_comment AS column_comment,
        b.constraint_type AS constraint_type
FROM
(
SELECT
        UB.tablespace_name AS database_name,
        UTC.table_name AS table_name,
        UTC.column_name AS column_name,
        UTC.data_type AS column_type,
        utc.data_length AS data_length,
        ucc.comments AS column_comment
FROM
user_tables ub
LEFT JOIN user_tab_columns utc ON ub.table_name = UTC.table_name
LEFT JOIN user_col_comments ucc ON utc.column_name = ucc.column_name
AND utc.table_name = ucc.table_name
) T
LEFT JOIN (
        SELECT
                UCC.table_name AS table_name,
                ucc.column_name AS column_name,
                wm_concat (UC.constraint_type) AS constraint_type
        FROM
        user_cons_columns ucc
LEFT JOIN user_constraints uc ON UCC.constraint_name = UC.constraint_name
GROUP BY
        UCC.table_name,
        ucc.column_name
) b ON T .table_name = b.TABLE_NAME
AND T .column_name = b.column_name


数据字典与视图:


https://blog.csdn.net/huangleijay/article/details/11568265


Oracle提供了很方便的视图,直接查询便可


实例:

select * from ALL_USERS;--查询所有用户
select * from DBA_INDEXES;--查询所有索引信息


数据字典与视图:

        视  图  名

说   明

ALL_CATALOG

为用户可存取的全部表、视图和序列

ALL_COL_COMMENTS

为用户可存取的表和视图列上的注释

ALL_COL_PRIVS

在列上授权,该用户或PUBLIC是被授与者

ALL_COL_PRIVS_MADE

在列上授权,该用户为持有者或授与者

ALL_COL_PRIVS_RECD

在列上授权,该用户或PUBLIC是被授与者

ALL_CONSTRAINTS

在可存取表上的约束定义

ALL_CONS_COLUMN

关于在约束定义中可存取列的信息

ALL_DB_LINKS

用户可存取的数据库链

ALL_DBF_AUDIT_OPTS

在对象建立时,所应用的缺省对象审计选择

ALL_DEPENDENCIES

用户可存取的对象之间的从属关系

ALL_ERROES

在用户可存取对象上的当前错误

ALL_INDEXES

在用户可存取的表上的索引说明

ALL_IND_COLUMNS

在可存取的表上的索引列

ALL_OBJECTS

用户可存取的对象

ALL_SEQUENCES

用户可存取的序列说明

ALL_SNAPSHOTS

用户可存取的全部快照

ALL_SOURCE

用户可存取的全部存储对象文本源程序

ALL_SYNONYM

用户可存取的全部同义词

ALL_TABLES

用户可存取的表的说明

ALL_TAB_COLUMNS

用户可存取的表、视图、聚集的列

ALL_TAB_COMMENTS

用户可存取的表或视图上的注释。

ALL_TAB_PRIVS

在对象上授权,该用户或PUBLIC被授与者

ALL_TAB_PRIVS_MADE

在对象上的授权或用户授权

ALL_TAB_PRIVS_RECD

在对象上授权,该用户或PUBLIC是被授与者

ALL_TRIGGERS

用户可存取的触发器

ALL_TRIGGER_COLS

显示用户持有的表中的列和用户所持有的触发器中列的使用,或者用户具有CREATE ANY TRIGGER特权时在所有触发器上列的使用

ALL_USERS

关于数据库是所有用户的信息

ALL_VIEW

用户可存取的视图文本

AUDIT_ACTIONS

审计跟踪动作类型代码描述表

CAT

为USER_CATALOG的同义词

CHAINED_ROWS

ANALYZE CHAINED ROWS命令的缺省值

CLU

为USER_CLUSTERS的同义词

COLS

为USER_TAB_COLUMNS的同义词

COLUMN_PRIVILEGES

在列上授权,用户是其授权者,被授与权者、持有者或授与PUBLIC

DBA_2PC_NEIGHBORS

关于悬挂事务入和出连接的信息

DBA_2PC_PENDING

关于在PREPARED状态时失败的分式事务信息

DBA_AUDIT_EXISTS

由AUDIT EXISTS命令建立的审计跟踪记录

DBA_AUDIT_OBJECT

系统中全部对象的审计跟踪记录

DBA_AUDIT_SESSION

系统中涉及CONNECT和DISCONNECT的全部审计跟踪记录

DBA_AUDIT_STATEMENT

系统中涉及GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM语句的全部审计记录

DBA_AUDIT_TRAIL

为系统中全部审计记录的集合

DBA_BLOCKERS

为会话集,它们具有别的会话正等待的一封锁,而它们本身不等待封锁

DBA_CATALAOG

为全部数据库表、视图、同义词和序列

DBA_CLUSTERS

数据库中全部聚集的说明

DBA_CLU_CLOUMNS

表列对聚集列的映射

DBA_COL_COMMENTS

在所有表和视图的列上的注释

DBA_COL_PRIVS

在数据库列上的全部授权

DBA_CONSTRAINTS

在数据库全部表上的约束定义

DBA_CONS_CLOUMNS

关于约束定义中全部列的信息

DBA_DATA_FILES

关于数据文件的信息

DBA_ DB_LINKS

在数据库中的全部数据链

DBA_ DDL_LOCKS

数据库中当前所有全部DDL封锁和所有未完成的DML封锁请求

DBA_ DEPENDENCIES

全部对象之间的从属关系

DBA_DML_LOCKS

数据库中当前所持有DDL封锁和所有未完成的DML封锁请求

DBA_ERRORS

数据库中全部存储对象上的当前错误

DBA_EXP_FILES

输出文件说明

DBA_EXP_OBJECTS

已有增量输出的对象

DBA_EXP_VERSION

最后的输出会话的版本

DBA_EXTENTS

数据库中全部段的范围

DBA_FREE_SPACE

在所有表空间中未用的范围

DBA_INDEXES

数据库中全部索引的说明

DBA_IND_COLUMN

全部表和聚集上的索引列

DBA_LOCKS

在数据库中持有的全部封锁和未完成请求的封锁(包括DML和DDL封锁)

DBA_OBJECT

在数据库中定义的全部聚集、数据库链、索引、包、包体、序列、同义词、表和视图

DBA_OBJECT_SIZE

数据库中的全部PL/SQL对象

DBA_OBJ_AUDIT_OPTS

为全部表和视图的审计选择

DBA_PRIV_AUDIT_OPTS

特权审计选择

DBA_PROFILES

赋给每个环境文件的资源限制

DBA_ROLES

在数据库中已有的全部角色

DBA_ROLE_PRIVS

授权给用户或角色的角色的说明

DBA_ROLLBACK_SEGS

回滚段的说明

DBA_SEGMENTS

分配给全部数据库段的存储

DBA_SEQUENCES

在数据库中全部序列的说明

DBA_SNAPSHOTS

在数据库中的全部快照

DBA_SNAPSHOTS_LOGS

在数据库中的全部快照日志

DBA_SOURCE

在数据库中全部存储对象的源文本

DBA_SYNONYMS

在数据库中的全部同义词

DBA_STMT_AUDIT_OPTS

为当前系统审计选择

DBA_SYS_PRIVS

授权给用户或角色的系统特权

DBA_TABLES

在数据库中的全部表的说明

DBA_TABLESSPACES

数据库中的全部表空间的说明

DBA_TAB_CLOUMNS

全部表、视图和聚集中的列

DBA_TAB_COMMENTS

在数据库中全部表和视图上的注释

DBA_TAB_PRIVS

在数据库中对象上的全部授权

DBA_TRIGGERS

在数据库中全部触发器的说明

DBA_TRIGGERS_COLS

显示由用户定义或在任何用户表上的触发器中列的用法

DBA_TS_QUOTAS

为全部用户的表空间份额

DBA_USERS

关于数据库全部用户的信息

DBA_VIEWS

数据库中全部视图的文本

DBA_WAITERS

等待封锁的全部会话和持有该锁的会话

DICT

为DICTIONARY的同义词

DICTIONARY

数据库字典表和视图的说明

DICT_COLUMNS

数据库字典表和视图中的列的说明

EXCEPTIONS

违反完整性约束的信息

GLOBAL_NMAE

当前数据库的全局名

IND

为USER__INDEXES的同义词

INDEX_STATE

存储VAILDATE INDEX命令的信息

OBJ

为USER_ OBJECT的同义词

RESOURCE_COST

每种资源的费用

ROLE_ROLE_PRIVS

授权给其它角色的角色的信息

ROLE_SYS_PRIVS

授权给角色的系统特权的信息

ROLE_TAB_PRVS

授权给角色的表特权的信息

SEQ

为USER_SEQUENCES的同义词

SEESSIONS_PORIVS

用户当前可用的特权

SESSION_ROLES

用户当前已使其使能打角色

SYN

为USER_SYNONYMS的同义词

SYSTEM_PRILEGE_MAP

为系统特权代码的说明表

TABLE_PRIVILEGES

在对象上授权

TABLE_PRIVILEGE_MAP

为存取特权代码的说明表

TABS

为USER_TABLES的同义词

USER_AUDIT_OBJECT

涉及对象审计跟踪记录

USER_AUDIT_SESSION

涉及连接或删除连接的全部审计跟踪记录

USER_AUDIT_STATEMENT

为用户发出的GRANT、REVOKE、AUDIT、NOAUDIT、ALL SYSTEM语句的审计跟踪项

USER_AUDIT_TRAIL

与用户有关的审计跟踪项

USER_CATALOG

为用户所持有的表、视图、同义词和序列

USER_CLUSTERS

为用户持有的聚集的说明

USER_CLU_CLOUMNS

用户的表列到聚集的映射

USER_COL_COMMENTS

在用户的表或视图的列上的注释

USER_COL_PRIVS

在列上的授权,该用户是持有者、授权者或被授与者

USER_COL_PRIVS_MADE

为用户持有的对象的列上的全部授权

USER_COL_PRIVS_RECD

该用户是被授权者的列上的授权

USER_CONSTRAINT

在用户表上的约束定义

USER_CONS_COLUMNS

由用户持有约束定义中的列的信息

USER_DB_LINKS

为用户持有的数据库链

USER_DEPENDENCIES

用户的对象之间的从属关系

USER_ERRORS

用户的存储对象上的当前错误

USER_EXTRNTS

属于用户对象的段的范围

USER_FREE_SPACE

用户可存取的表空间中未用的范围

USRE_INDEXES

用户自己的索引说明

USER_IND_CLOUMNS

用户索引的列或用户表上的列

USER_OBJECTS

用户所持有的对象

USER_OBJECT_SIZE

用户的PL/SQL对象

USER_OBJ_AUDIT_OPTS

为用户的表和审计选择

USER_RESOURCE_LIMITS

为当前用户的资源限制

USER_ROLE_PRIVS

特权给用户的角色

USER_SEGMENT

属于用户对象的数据库段的存储分配

USER_SEQUENCE

用户自己的序列的说明

USER_SNAPSHOTS

用户可查看的快照

USER_SNAPSHOT_LOGS

用户可持有的快照日志

USER_SOURCE

属于用户的全部存储对象的源文本

USER_SYNONYM

用户专用同义词

USER_SYS_PRIVS

特权给用户的系统特权

USER_TABLES

用户持有表的说明

USER_TABLESPACES

可存表空间的说明

USER_TAB_COLUMNSS

用户的表、视图和聚集的列

USER_TAB_COMMENTS

用户所持的表和视图上的注释

USER_TAB_PRIVS

用户为授权者、持有者或被授权者的对象上的授权

USRE_TAB_PRIVS_MADE

用户所持有的对象的全部特权

USER_TAB_PRIVS_RECD

用户为被授权者的对象上授权

USER_TRIGGRS

用户触发器的说明

USER_TRIGGRS_COLS

用户所持有的或在用户表上的触发器中的列的用法

USER_TS_QUOTAS

用户在表空间上的份额

USER_USERS

关于当前用户的信息

USER_VIEWS

用户持有的视图的文本


附录A  动态性能表

表名

说明

V$ACCESS

显示数据库中的对象信息

V$ARCHIVE

数据库系统中每个索引的归档日志方面的信息

V$BACKUP

所有在线数据文件的状态

V$BGPROCESS

描述后台进程

V$CIRCUIT

有关虚拟电路信息

V$DATABASE

控制文件中的数据库信息

V$DATAFILE

控制文件中的数据文件信息

V$DBFILE

构成数据库所有数据文件

V$DB_OBJECT_CACHE

表示库高速缓存中被缓存的数据库对象

V$DISPATCHER

调度进程信息

V$ENABLEDPRIVS

那些特权接通

V$FILESTAT

文件读/写统计信息

V$FIXED_TABLE

显示数据库中所有固定表、视图和派生表

V$INSTANCE

当前实例状态

V$LATCH

每类闩锁的信息

V$LATCHHOLDER

当前闩锁占有者的信息

V$LATCHNAME

在V$LATCH表中表示的闩锁的译码闩锁名

V$LIBRARYCACHE

库高速缓冲存储管理统计

V$LICENSE

许可限制信息

V$LOADCSTAT

SQL*Loader在直接装入执行过程中的编译统计

V$LOCK

有关封锁和资源信息,不包含DDL封锁

V$LOG

控制文件中的日志文件信息

V$LOGFILE

有关日志文件信息

V$LOGHIST

控制文件中的日志历史信息

V$LOGHISTORY

日志历史中所有日志的归档日志名

V$NLS_PARAMETERS

NLS参数的当前值

V$OPEN_CURSOR

每一个用户会话期当前已打开和分析的光标

V$PARAMETER

当前参数值的信息

V$PROCESS

当前活动进程的信息

V$QUEUE

多线索信息队列的信息

V$REVOVERY_LOG

需要完成介质恢复的归档日志

V$RECOVERY_FILE

需要介质恢复的文件状态

V$REQDIST

请求时间直方图,分为12个范围

V$RESOURCE

有关资源信息

V$ROLLNAME

所有在线回滚段的名字

V$ROLLSTAT

所有在线回滚段的统计信息

V$ROWCACHE

数据字典活动的统计信息(每一个包含一个数据字典高速缓存的统计信息)

V$SESSION

每一个当前会话期的会话信息

V$SESSION_WAIT

列出活动会话等待的资源或事件

V$SESSTAT

对于每一个当前会话的当前统计值

V$SESS_IO

每一个用户会话的I/O统计

V$SGA

系统全局区统计信息

V$SGASTAT

系统全局区的详细信息

V$SHARED_SERVER

共享服务器进程信息

V$SQLAREA

共享光标高速缓存区的统计信息,每一个有一个共享光标的统计信息

V$SQLTEXT

属于SGA中的共享SQL光标的SQL语句文本

V$STATNAME

在V$SESSTAT表中表示的统计信息的译码统计名

V$SYSSTAT

表V$SESSETA中当前每个统计的全面的系统值

V$THREAD

从控制文件中得到线索信息

V$TIMER

以百分之一秒为单位的当前时间

V$TRANSACTION

有关事务的信息

V$TYPE_SIZE

各种数据库成分的大小

V$VERSION

ORACLE Server中核心库成员的版本号,每个成员一行

V$WAITSTAT

块竞争统计,当时间统计可能时,才能更新该表


附录B   SQL语言运算符与函数

表1  各种运算符

运算符

含  义

相等

!=或<>

不等于

大于

>=

大于等于

小于

<=

小于等于

IN(列表)

等于列表中的任意值

BETWEEN值1 AND值2

大于等于值1并且小于等于值2

LIKE%或-

模式匹配。“%”匹配0个或任意个字符,“-”匹配一个字符

IS NULL

空值

IS NOT NULL

非空值

NOT

逻辑非

AND

逻辑与

OR

逻辑或

表2  字符函数列表

函数

功能

注释

ASCII(char)

计算char的第一个字符的ASCII值或EBCDIC码值

函数返回值取决于计算机系统采用的字符

CHAR(n)

计算ASCⅡ码值或EBCDIC码值是n的字符

函数n依赖于计算机系统采用的字符集,n的取值为0~127或0~254之间

INITCAP(char)

将char串口的每个单词的首字母变成大写,其余字母变为小写

单词之间用数字、空格、逗号、顿号、冒号、分号、句号、1、@、#、$等字符分隔

INSTR(char1,char[,m[,n]])

求char1中从m位置起char2第n次出现的位置

m,n缺省值为1,当>0时,表示从char1的首部起始(从左向右)正向搜索;n<0时,表示从char1的尾部起始(从右向左)反向搜索

LENGTH(char)

计算字符串char的长度

 

LOWER(char)

将char中所有的字母改成小写

 

LPAD(char1,n[,char2])

从左侧用char2补齐char1至长度n

char2省略时,用空格填充,n<char1的长度时,表示截取char1从左至右侧n个字符

RPAD(char1,n[,char2])

从右侧用char2补齐char1至长度n

char2省略时,用空格填充,n<char1的长度时,表示截取char1右侧n个符

LTRIM(char[,SET])

把char1中最左侧的若干个字符去掉,以使其首字符不在SET中

SET表示单个字符组在的字符集合。SET若被省略时,表示截取char左边的前置空格

RTRIM(char[,SET])

把char中最右侧的若干个字符去掉,以使其尾字符不在SET中

SET表示单个字符组成的字符集合。SET若被省略时,表示截取char右边的后置空格

REPLACE(char1,char2[,char3]

将char1中出现的所有char2用char3来代替

char2和char3同时被省略时,函数返回NULL,仅char3省略时,则表示删除char1中出现的所有char2

SOUNDEX(char)

求与char中一个或多个单词发音相同的字符串

 

SUBSTR(char,m[,n])

返回char中第m个字符起始n个字符长的子串

n省略时,表示截取char中第m个字符后的子串

TRANSLATE(char1,from,to)

将from字符集转换为to字符集,char中以from表达的字符用to中相对应的字符所代替

 

UPPER(char)

将char中所有的字母改变大写

 

表3  数值函数列表

函数

功能

注释

ABS(n)

计算n的绝对值

允许是数值型常数、数值型列名、包含一个有效数值的文字串或包含一个有效数值的字符型列名

CELL(n)

计算大于或等于n的最小整数

数学中的向上取整运算

FLOOR(n)

计算大于或等于n的最大整数

数学中的向下取整运算

MOD(m,n)

计算m除以n的余数n=0时,返回m

MOD(m,1)=0说明m是一个整数

POWER(m,n)

ROUND(m,[,n])

计算m的n次方,n>0时,将m四舍五入到小数点右边n位n<0时,将m四舍五入到小数点左边n位

n要求为整数,否则出错n=0或n被省略表示对m进行取整

SIGN(n)

判断n的正负

如果n>0,函数返回1;n=0,函数反加0,n<0,函数反回

SQRT(n)

TRUNC(m,[,n])

计算n的平方根,n>0时,将m小数点右边n位截断;n<0时,将m小数点左边的n位后各位截断,并添加n个0

n<0时,函数返回NULLn=0或n被省略表示对m进行取整

表4  日期函数列表

函数

功能

注释

ADD_MONTHS(d,n)

计算d加上n个月的日期

n要求为整数,n>0时,返回d之后n个月的日期;n<0时,返回d之前n个月的日期

LAST_DAY(d)

计算d所在月份最后一天的日期

用来确定给定月份中的天数

MONTHS_BETWEEN(d1,d2)

计算d1和d2之间相隔的月数

返加结果>0时,表示d1晚于d2;返回结果<0时,表示d1早于d2

NEXT_DAY(d,s)

计算晚于d的第一个s的日期

s要求是’Sunday’,’Monday’,’Tuesday’,’Wednesday’,’Thursday’,’Friday’或’Saturday’

SYSDATE

求系统当前日期和时间

 

表5  聚组函数列表

函 数

功 能

AVG(e)

计算一组行中e值的平均值

COUNT(e)

计算一组行中e值为非空值的行数

COUNT(*)

计算表中的行数(包括重复值和空值)

MAX(e)

计算一组行中e值的最大值

MIN(e)

计算一组行中e值的最小值

STDDEV(e)

计算一组行中e值的标准差

SUM(e)

计算一组行中e值的总和

VARIANCE(e)

计算一组行中e值的方差


二,获取数据字典定义

获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数 

GET_DDL函数返回创建对象的原数据的DDL语句,

参数说明 

    1、object_type ---需要返回原数据的DDL语句的对象类型 

    2、name --- 对象名称 

    3、schema ---对象所在的Schema,默认为当前用户所在所Schema 

    4、version ---对象原数据的版本 

    5、model ---原数据的类型默认为ORACLE 

    6、transform. - XSL-T transform. to be applied. 

    7、RETURNS: 对象的原数据默认以CLOB类型返回 

其中,我们经常用到的是前三项。 


dbms_metadata包中的get_ddl函数定义: 

FUNCTION get_ddl ( object_type IN VARCHAR2, 
name IN VARCHAR2, 
schema IN VARCHAR2 DEFAULT NULL, 
version IN VARCHAR2 DEFAULT 'COMPATIBLE', 
model IN VARCHAR2 DEFAULT 'ORACLE', 
transform. IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB;

注意: 

    1、如果使用sqlplus需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的SQL 

    2、参数要使用大写,否则会查不到 

        set linesize 400     

        set pages 0 

        set long 10000

1、查看数据库表的定义写法: 

select dbms_metadata.get_ddl('TABLE','TABLENAME','USERNAME') from dual;

2、查看索引的SQL 

select dbms_metadata.get_ddl('INDEX','INDEXNAME','USERNAME') from dual;

3、查看创建主键的SQL 

SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','CONSTRAINTNAME','USERNAME') FROM DUAL;

4、查看创建外键的SQL 

SELECT DBMS_METADATA.GET_DDL('REF_CONSTRAINT','REF_CONSTRAINTNAME','USERNAME') FROM DUAL;

5、查看创建视图的SQL 

SELECT DBMS_METADATA.GET_DDL('VIEW','VIEWNAME','USERNAME') FROM DUAL;

6、查看用户的SQL 

SELECT DBMS_METADATA.GET_DDL('USER','USERNAME') FROM DUAL;

7、查看角色的SQL 

SELECT DBMS_METADATA.GET_DDL('ROLE','ROLENAME') FROM DUAL;

8、查看表空间的SQL 

SELECT DBMS_METADATA.GET_DDL('TABLESPACE','TABLESPACENAME') FROM DUAL;

9、获取物化视图SQL 

select dbms_metadata.get_ddl('MATERIALIZED VIEW','MVNAME') FROM DUAL;

10、获取远程连接定义SQL 

SELECT dbms_metadata.get_ddl('DB_LINK','DBLINKNAME','USERNAME') stmt FROM dual

11、获取用户下的触发器SQL 

SELECT DBMS_METADATA.GET_DDL('TRIGGER','TRIGGERNAME','USERNAME) FROM DUAL;

12、获取用户下的序列 

select DBMS_METADATA.GET_DDL('SEQUENCE','SEQUENCENAME') from  DUAL;

13、获取用户下的函数 

select DBMS_METADATA.GET_DDL('FUNCTION','FUNCTIONNAME','USERNAME') from DUAL

14、获取包的定义 

select DBMS_METADATA.GET_DDL('PACKAGE','PACKAGENAME','USERNAME') from  dual

15、获取存储过程 

select DBMS_METADATA.GET_DDL('PROCEDURE','PROCEDURENAME','USERNAME') from  dual

16、获取包体定义 

select DBMS_METADATA.GET_DDL('PACKAGE BODY','PACKAGEBODYNAME','USERNAME') from  dual

17、获取远程数据库对象的定义 

SELECT DBMS_LOB.SUBSTR@dblinkname(DBMS_METADATA.GET_DDL@dblinkname('TABLE', 'TABLENAME', 'USERNAME')) FROM DUAL@dblinkname

18、获取多个对象的定义 

SELECT DBMS_METADATA.GET_DDL(O.OBJECT_TYPE, O.object_name,O.OWNER) 
FROM DBA_OBJECTS O 
where O.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION') and ONWER = 'ONWERNAME';

实例:

SELECT DBMS_METADATA.GET_DDL('VIEW','DBA_TAB_COLS','SYS') FROM DUAL;


备注:

Q:什么是-元数据-

A:元数据(MetaData),即定义数据的数据。

      打个比方,就好像我们要想搜索一首歌(歌本身是数据),而我们可以通过歌名,作者,专辑等信息来搜索,那么这些歌名,作者,专辑等等就是这首歌的元数据。

      数据库的元数据就是一些注明数据库信息的数据。









————————————————

版权声明:本文为CSDN博主「黑烟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_43912785/article/details/113320068