一、查询所有表,视图的基本信息,字段信息,索引信息
在数据字典与识图中可以找到相应的视图,来查询数据库基本信息;详细字段信息需要到视图中的查看里都有描述
在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