Oracle、达梦:☆获取数据库对象、获取对象的DDL定义语句(达梦)
一、获取数据库对象(Oracle、达梦)
- 以下方式在达梦DM数据库中都能跑通,Oracle未测试所有的方式。
1、获取所有对象——所有模式下的
- 数据库所有对象表:包括表、视图、物化视图、函数、存储过程……等
①、ALL_OBJECTS视图方式
-- 查询所有对象
SELECT * from ALL_OBJECTS
-- 筛选条件 - OWENR:哪个数据库。- OBJECT_TYPE 类型:
SELECT OBJECT_NAME,OBJECT_TYPE from ALL_OBJECTS
WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'
OBJECT_TYPE解释:
- oracle的ALL_OBJECTS中的OBJECT_TYPE表示:
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:函数。
- 达梦的ALL_OBJECTS中的OBJECT_TYPE表示:
TABLE:表示表,这是用于存储和管理数据库中数据的主要结构。VIEW:表示视图,它是一个虚拟表,基于一个或多个表的列的查询结果生成。PROCEDURE:表示存储过程,它是一组预编译的SQL语句,用于执行特定的操作或逻辑。FUNCTION:表示函数,它是一组可调用的代码块,用于执行特定的操作或计算结果。SEQUENCE:表示序列,它是一个数据库对象,用于生成唯一的序列号。INDEX:表示索引,它可以帮助提高查询的性能,通过创建单独的表来存储查询中使用的列的值。MATERIALIZED VIEW:表示物化视图,它是基于一个或多个表的查询结果预先计算并存储的视图。PACKAGE:表示包,这是用于封装和组织相关过程和类型的逻辑单元。TYPE:表示自定义类型,这是用户定义的数据类型。
②获取所有对象的其他方式
-- 方式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
- 如果只查询登陆模式下的对象,建议这种方式
SELECT * FROM USER_OBJECTS;
3、获取其他对象
- ps:包括所有模式、当前模式。当前模式一般是把all换成user
3.1、表
-- 获取表——所有模式
select * from all_tables;
-- 获取表——当前登陆模式
select * from user_tables;
3.2、字段
- 包括表、视图、物化视图的字段
-- 获取所有模式下的所有字段,where可以指定模式
select * from all_tab_columns where owner = 'APP1';
-- 获取当前登陆模式的字段
select * from user_tab_columns;
3.3、视图
-- 获取视图——所有模式
select * from all_views;
-- 获取视图——当前登陆模式
select * from user_views;
3.4、索引
-- 获取索引——所有模式
select * from all_indexes where owner = 'APP1';
-- 获取索引——当前登陆模式
select * from user_indexes;
- 获取索引列——索引指定的列
-- 获取索引列——所有模式
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:外键
- 约束还包括:检查……等
-- 获取约束——所有模式
select * from all_constraints where owner = 'APP1';
-- 获取约束——当前登陆模式
select * from user_constraints;
- 查询约束所在的列
-- 查询约束列(列上有约束)——所有模式
select * from all_cons_columns where owner = 'APP1';
-- 查询约束列(列上有约束)——当前登陆模式
select * from user_cons_columns;
3.6、物化视图——Oracle
- 也可以使用《一》中的ALL_OBJECTS进行查询
-- 整个数据库的物化视图
select * from DBA_MVIEWS where OWNER = 'MIDDLE'
-- 当前用户的物化视图
SELECT * FROM USER_MVIEWS WHERE MVIEW_NAME = 'V2'
-- 创建物化日志
create materialized view log on "Z_ZZX" with rowid, sequence (ID_CPM_JH, CODE) including new values;
-- 查询物化视图的日志
select * from MLOG$_Z_ZZX
-- 查询物化视图日志表
SELECT * from ALL_OBJECTS WHERE OWNER = 'MIDDLE' and OBJECT_NAME LIKE '%MLOG$%'
-- 查询物化视图
SELECT * from ALL_OBJECTS
WHERE OWNER = 'MIDDLE' AND OBJECT_TYPE = 'MATERIALIZED VIEW'
-- 查询物化视图需要的表
select REFERENCED_NAME from ALL_DEPENDENCIES WHERE OWNER = 'MIDDLE' AND TYPE = 'MATERIALIZED VIEW' AND NAME = 'WH_LOG' AND REFERENCED_NAME <> 'WH_LOG'
-- 连表查询物化视图以及使用到的表
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'
二、获取对象的DDL-数据定义语言(达梦)
- 语法:SELECT dbms_metadata.get_ddl('对象类型','对象名称') FROM DUAL
- 对象类型见:类型(OBJECT_TYPE)达梦
-- 获取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
…… 还可以获取建表等的语句。
Oracle、达梦:☆获取数据库对象、获取对象的DDL定义语句(达梦)的更多相关文章
- Oracle获取数据库中的对象创建语句
使用dbms_metadata.get_ddl()函数可以做到. 实验环境:Oracle 11.2.0.4 以获取jingyu用户下的T1表为例: SQL> conn jingyu/jingyu ...
- oracle查询在当前数据库下当前用户拥有的表语句
1.查询表的数目: select count(*) from tabs select count(*) from user_tables 2.查询用户拥有哪些表: select * from tabs ...
- MySQL提供了以下三种方法用于获取数据库对象的元数据
MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...
- Android 获取对象列表中的某一列 / 所有对象的某一字段,Realm数据库可获取某一字段所有值
现在项目用的数据库是Realm,所以想要获取数据库中某一字段的数据没有一句直接的语句进行获取,就像MySQL一样的select name from User,从User表里获取所有的name. 所以只 ...
- EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象
最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久.功能要求包括: (1)底图使用百度地图: (2)可以在地图上叠加显示ech ...
- 获取$(this)子节点对象的方法
获取$(this)子节点对象的方法: 1.children()方法: children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 2.find()方法: fi ...
- MVC-通过对象获取整个表单内容
-------- 在MVC的Controller(控制器)里面定义相同的方法时,我们需要解决重载问题: 解决方案一:在参数中定义一个FormCollection类型,解决问题 [HttpSet] pu ...
- resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found.
resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found. 代码: String sql="SELECT d.co ...
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...
- 快捷获取浏览器(navigator对象)的全部属性
理论: navigator对象包含关于web浏览器的信息,浏览器的类型,版本信息都可以从该对象获取. 属性 说明 appCodeName 浏览器代码说明 appName 浏览器名称 appVe ...
随机推荐
- 如何使用 JavaScript 导入和导出 Excel
前言 在现代的Web应用开发中,与Excel文件的导入和导出成为了一项常见而重要的任务.无论是数据交换.报告生成还是数据分析,与Excel文件的交互都扮演着至关重要的角色.本文小编将为大家介绍如何在熟 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
一.GridRow/GridCol 1.概述 栅格布局是一种通用的辅助定位工具,可以帮助开发人员解决多尺寸多设备的动态布局问题.通过将页面划分为等宽的列数和行数,栅格布局提供了可循的规律性结构,方便开 ...
- 探寻UUID的起源与奥秘:从时间戳到唯一标识
1. UUID起源与原理 UUID(Universally Unique Identifier)是一种唯一标识符,最初由Apollo计算机公司的软件工程师Roedy Green在1987年提出.其原理 ...
- KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
本次部署未使用securecmd/kbha工具,无需普通用户到root用户的互信. 一.环境准备 1.创建OS用户 建立系统数据库安装用户组及用户,在所有的节点执行. root用户登陆服务器,创建用户 ...
- MyBatis 简介、优缺点
40)谈谈 MyBatis Mybatis 是一个半自动化的 ORM 框架,它对 jdbc 的操作数据库的过程进行封装,使得开发者只需要专注于 SQL 语句本身,而不用去关心注册驱动,创建 conne ...
- #构造#B 连通子图
题目 给定正整数\(k\),构造一棵树,使得包含了\(1\)号点的连通子图个数恰好为\(k\). 连通子图就是点集的一个子集(可以为全集),使得该点集中任意两个点均可以经过该点集中的点相互到达. 分析 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Menu)
一.Menu组件 Menu组件是一种常见的用户界面(UI)控件,用于在移动应用程序中显示可选项列表.它通常由一系列链接或按钮组成,以帮助用户导航和选择所需的操作.Menu组件可以在水平或垂直方向上呈现 ...
- mysql 必知必会整理—组合查询与全文搜索[九]
前言 简单整理一下组合查询与全文搜索. 正文 什么是组合查询,就是我们常说的交并补集. 直接上例子. 举一个例子,假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的 ...
- c# .net缓存(旧)
前言 是迁移以前的blog. 关于c# 缓存在web应用中的一个引导,能够建立起一个缓存的基本思路. System.Web.Caching 这个真的是老生常谈了,我们只需要key和iv,然后我们就可以 ...
- 重新整理数据结构与算法(c#)—— 顺序存储二叉树[十九]
前言 二叉树顺序存bai储是二叉树的一种存储方式.将二du叉树存储在一zhi个数组中,通过存储元素的下dao标反映元素之间的父子关系. 正文 这个概念比较简单,比如一个节点的在数组的index是x,那 ...