一、获取数据库对象(Oracle、达梦)
- 以下方式在达梦DM数据库中都能跑通,Oracle未测试全部的方式。
1、获取全部对象——全部模式下的
- 数据库全部对象表:包括表、视图、物化视图、函数、存储过程……等
①、ALL_OBJECTS视图方式
- [/code] [table][tr][td][/td][td]-- 查询全部对象[/td][/tr][tr][td][/td][td]SELECT * from ALL_OBJECTS[/td][/tr][tr][td][/td][td]-- 筛选条件 - OWENR:哪个数据库。- OBJECT_TYPE 类型:[/td][/tr][tr][td][/td][td]SELECT OBJECT_NAME,OBJECT_TYPE from ALL_OBJECTS[/td][/tr][tr][td][/td][td]WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'[/td][/tr][/table] OBJECT_TYPE解释:
-
- [list]
- [*]oracle的ALL_OBJECTS中的OBJECT_TYPE表示:
- [/list] [list=1]
- [*]TABLE:表示表,这是用于存储和管理数据库中数据的主要结构。
- [*]VIEW:表示视图,它是一个虚拟表,基于一个或多个表的列的查询结果天生。
- [*]PROCEDURE:表示存储过程,它是一组预编译的SQL语句,用于执行特定的操纵或逻辑。
- [*]SEQUENCE:表示序列,它是一个数据库对象,用于天生唯一的序列号。
- [*]INDEX:表示索引,它可以资助进步查询的性能,通过创建单独的表来存储查询中利用的列的值。
- [*]MATERIALIZED VIEW:表示物化视图,它是基于一个或多个表的查询结果预先盘算并存储的视图。
- [*]JAVA SOURCE:表示Java源代码,这是存储在数据库中的Java类或接口的源代码。
- [*]JAVA CLASS:表示Java类,这是编译后的Java类,存储在数据库中。
- [*]JAVA RESOURCE:表示Java资源,这可以是任何类型的资源,如属性文件、文本文件等。
- [*]JAVA DATA:表示Java数据对象,这是存储在数据库中的Java对象。
- [*]XML TABLE:表示XML表,这是将XML文档作为表举行存储和处理的方式。
- [*]TYPE:表示自定义类型,这是用户定义的数据类型。
- [*]PACKAGE:表示包,这是用于封装和构造相关过程和类型的逻辑单元。
- [*]JAVA RESOURCE:表示Java资源,这可以是从文件中导入的任何类型的资源。
- [*]DATA FILE:表示数据文件,这是存储数据库数据的物理文件。
- [*]FUNCTION:函数。
- [/list]
- [list]
- [*]达梦的ALL_OBJECTS中的OBJECT_TYPE表示:
- [/list] [list=1]
- [*]TABLE:表示表,这是用于存储和管理数据库中数据的主要结构。
- [*]VIEW:表示视图,它是一个虚拟表,基于一个或多个表的列的查询结果天生。
- [*]PROCEDURE:表示存储过程,它是一组预编译的SQL语句,用于执行特定的操纵或逻辑。
- [*]FUNCTION:表示函数,它是一组可调用的代码块,用于执行特定的操纵或盘算结果。
- [*]SEQUENCE:表示序列,它是一个数据库对象,用于天生唯一的序列号。
- [*]INDEX:表示索引,它可以资助进步查询的性能,通过创建单独的表来存储查询中利用的列的值。
- [*]MATERIALIZED VIEW:表示物化视图,它是基于一个或多个表的查询结果预先盘算并存储的视图。
- [*]PACKAGE:表示包,这是用于封装和构造相关过程和类型的逻辑单元。
- [*]TYPE:表示自定义类型,这是用户定义的数据类型。
- [/list] [size=2]②获取全部对象的其他方式[/size]
- [code]
复制代码 | -- 方式1--------------------- | | select * from DBA_OBJECTS where OWNER = 'APP1'; | | | | -- 方式2--------------------- | | -- 不能区分:函数、存储过程 | | select * from SYS.SYSOBJECTS where SCHID = '150996004'; | | | | -- 方式3--------------------- | | select * from ALL_OBJECTS where owner = 'APP1'; |
2、获取全部对象——当前登陆模式下的
- 就是把前面的ALL,改成USER
- 假如只查询登陆模式下的对象,发起这种方式
- [/code] [table][tr][td][/td][td]SELECT * FROM USER_OBJECTS;[/td][/tr][/table]
- [size=3]3、获取其他对象[/size]
-
- [list]
- [*]ps:包括全部模式、当前模式。当前模式一般是把all换成user
- [/list] [size=2]3.1、表[/size]
- [code]
复制代码 | -- 获取表——全部模式 | | select * from all_tables; | | -- 获取表——当前登陆模式 | | select * from user_tables; | 3.2、字段
- [/code] [table][tr][td][/td][td]-- 获取全部模式下的全部字段,where可以指定模式[/td][/tr][tr][td][/td][td]select * from all_tab_columns where owner = 'APP1';[/td][/tr][tr][td][/td][td]-- 获取当前登陆模式的字段[/td][/tr][tr][td][/td][td]select * from user_tab_columns;[/td][/tr][/table] [size=2]3.3、视图[/size]
- [code]
复制代码 | -- 获取视图——全部模式 | | select * from all_views; | | -- 获取视图——当前登陆模式 | | select * from user_views; | 3.4、索引
- [/code] [table][tr][td][/td][td]-- 获取索引——全部模式[/td][/tr][tr][td][/td][td]select * from all_indexes where owner = 'APP1';[/td][/tr][tr][td][/td][td]-- 获取索引——当前登陆模式[/td][/tr][tr][td][/td][td]select * from user_indexes;[/td][/tr][/table]
- [list]
- [*]获取索引列——索引指定的列
- [/list] [code]
复制代码 | -- 获取索引列——全部模式 | | select * from all_ind_columns where index_owner = 'APP1'; | | -- 获取索引列——当前登陆模式 | | select * from user_ind_columns; | | -- 获取当前登陆模式下的索引列——按索引名字去重并统计数量 | | select count(DISTINCT INDEX_NAME) from user_ind_columns; | 3.5、约束——包括主键、外键
- CONSTRAINT_TYPE:P:主键、R:外键
- 约束还包括:查抄……等
- [/code] [table][tr][td][/td][td]-- 获取约束——全部模式[/td][/tr][tr][td][/td][td]select * from all_constraints where owner = 'APP1';[/td][/tr][tr][td][/td][td]-- 获取约束——当前登陆模式[/td][/tr][tr][td][/td][td]select * from user_constraints;[/td][/tr][/table]
- [list]
- [*]查询约束所在的列
- [/list] [code]
复制代码 | -- 查询约束列(列上有约束)——全部模式 | | select * from all_cons_columns where owner = 'APP1'; | | -- 查询约束列(列上有约束)——当前登陆模式 | | select * from user_cons_columns; | 3.6、物化视图——Oracle
- 也可以利用《一》中的ALL_OBJECTS举行查询
- [/code] [table][tr][td][/td][td]-- 整个数据库的物化视图[/td][/tr][tr][td][/td][td]select * from DBA_MVIEWS where OWNER = 'MIDDLE'[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 当前用户的物化视图[/td][/tr][tr][td][/td][td]SELECT * FROM USER_MVIEWS WHERE MVIEW_NAME = 'V2'[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 创建物化日志[/td][/tr][tr][td][/td][td]create materialized view log on "Z_ZZX" with rowid, sequence (ID_CPM_JH, CODE) including new values;[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 查询物化视图的日志[/td][/tr][tr][td][/td][td]select * from MLOG$_Z_ZZX[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 查询物化视图日志表[/td][/tr][tr][td][/td][td]SELECT * from ALL_OBJECTS WHERE OWNER = 'MIDDLE' and OBJECT_NAME LIKE '%MLOG$%'[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 查询物化视图[/td][/tr][tr][td][/td][td]SELECT * from ALL_OBJECTS[/td][/tr][tr][td][/td][td]WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 查询物化视图必要的表[/td][/tr][tr][td][/td][td]select REFERENCED_NAME from ALL_DEPENDENCIES WHERE OWNER = 'MIDDLE' AND TYPE = 'MATERIALIZED VIEW' AND NAME = 'WH_LOG' AND REFERENCED_NAME <> 'WH_LOG'[/td][/tr][tr][td][/td][td][/td][/tr][tr][td][/td][td]-- 连表查询物化视图以及利用到的表[/td][/tr][tr][td][/td][td]SELECT * FROM user_mviews um left join SYS.ALL_DEPENDENCIES ad on ad.NAME = um.MVIEW_NAME WHERE ad.OWNER = 'MIDDLE' AND ad.TYPE = 'MATERIALIZED VIEW' AND ad.NAME = 'WH_LOG' AND ad.REFERENCED_NAME <> 'WH_LOG'[/td][/tr][tr][td][/td][td][/td][/tr][/table] 回到顶部
- [size=4]二、获取对象的DDL-数据定义语言(达梦)[/size]
-
- [list]
- [*]语法:SELECT dbms_metadata.get_ddl('对象类型','对象名称') FROM DUAL
- [*]对象类型见:类型(OBJECT_TYPE)达梦
- [/list] [code]
复制代码 | -- 获取DDL语句(根据不同类型) | | SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW','WH_LOG') FROM DUAL | | | | -- 获取DDL-物化视图日志 | | SELECT dbms_metadata.get_ddl('TABLE','MLOG$_Z_ZZX') FROM DUAL | | -- 获取DDL-物化视图 | | SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW','CS_COMMIT_COMPLETE') FROM DUAL | | SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW_LOG','MLOG$_Z_ZZX') FROM DUAL | | | | -- 获取DDL-视图 | | SELECT dbms_metadata.get_ddl('VIEW','V1') FROM DUAL |
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |