Oracle查询数据库中的所有表

SELECT A.TABLE_NAME 表英文名,
      
A.TAB_COMMENTS 表中文名,
       A.COLUMN_ID
序号,
       A.COLUMN_NAME
英文名,
       A.COMMENTS
中文名,
       B.PRIMARY_KEY
主键,
      
substr(A.DATA_TYPE,1,instr(A.DATA_TYPE,‘(‘)-1)
数据类型,
       case when
substr(A.DATA_TYPE,1,instr(A.DATA_TYPE,‘(‘)-1) = ‘TIMESTAMP‘ then ‘‘ when
substr(A.DATA_TYPE,1,instr(A.DATA_TYPE,‘(‘)-1) = ‘DATATIME‘ then ‘‘ else 
substr(A.DATA_TYPE,instr(A.DATA_TYPE,‘(‘)+1,length(A.DATA_TYPE)-instr(A.DATA_TYPE,‘(‘)-1)
end 长度,
       ‘‘
单位,
       A.NULLABLE
是否可空,
       ‘‘
缺省,
       ‘‘
上限,
       ‘‘
下限
      
  FROM (SELECT
X.TABLE_NAME,
              
Z.COMMENTS
TAB_COMMENTS,
              
X.COLUMN_ID,
              
X.COLUMN_NAME,
              
X.DATA_TYPE
||
              
DECODE(X.DATA_TYPE,
                     
‘NUMBER‘,
                     
DECODE(SIGN(X.DATA_SCALE),
                            
0,
                            
‘(‘
||
                            
DECODE(LENGTH(TO_CHAR(X.DATA_PRECISION)),
                                   
1,
                                   
TO_CHAR(X.DATA_PRECISION),
                                   
TO_CHAR(X.DATA_PRECISION, ‘FM00‘)) ||
‘)‘,
                            
1,
                            
‘(‘
||
                            
DECODE(LENGTH(TO_CHAR(X.DATA_PRECISION)),
                                   
1,
                                   
TO_CHAR(X.DATA_PRECISION),
                                   
TO_CHAR(X.DATA_PRECISION, ‘FM00‘)) || ‘,‘
||
                            
TO_CHAR(X.DATA_SCALE, ‘FM0‘) ||
‘)‘,
                            
‘‘),
                     
‘(‘ ||
DECODE(LENGTH(TO_CHAR(X.DATA_LENGTH)),
                                   
1,
                                   
TO_CHAR(X.DATA_LENGTH),
                                   
TO_CHAR(X.DATA_LENGTH, ‘FM9900‘)) || ‘)‘) AS
DATA_TYPE,
              
X.NULLABLE,
              
Y.COMMENTS
          FROM
USER_TAB_COLUMNS X, USER_COL_COMMENTS Y, USER_TAB_COMMENTS
Z
         WHERE X.TABLE_NAME =
Y.TABLE_NAME
           AND
X.COLUMN_NAME =
Y.COLUMN_NAME
          
AND X.TABLE_NAME = Z.TABLE_NAME) A,
      
(SELECT X.TABLE_NAME
TABLE_NAME,
              
X.COLUMN_NAME
COLUMN_NAME,
              
MAX(DECODE(Y.CONSTRAINT_TYPE,
                         
‘P‘,
                         
‘PK‘ || TO_CHAR(X.POSITION,
‘FM9‘),
                         
‘‘))
PRIMARY_KEY,
              
MAX(DECODE(Y.CONSTRAINT_TYPE,
                         
‘R‘,
                         
‘FK‘ || TO_CHAR(X.POSITION,
‘FM9‘),
                         
‘‘)) FOREIGN_KEY
          FROM
USER_CONS_COLUMNS X, USER_CONSTRAINTS
Y
         WHERE X.TABLE_NAME =
Y.TABLE_NAME
           AND
X.CONSTRAINT_NAME =
Y.CONSTRAINT_NAME
          
AND Y.CONSTRAINT_TYPE <>
‘C‘
         GROUP BY X.TABLE_NAME,
X.COLUMN_NAME) B
 WHERE A.TABLE_NAME = B.TABLE_NAME(+)
  
AND A.COLUMN_NAME = B.COLUMN_NAME(+)
   /*AND A.table_name =
upper(‘tp_planmonth‘)*/
 ORDER BY A.TABLE_NAME, A.COLUMN_ID

时间: 2024-08-09 02:17:46

Oracle查询数据库中的所有表的相关文章

SQL 中怎么查询数据库中具有的表、存储过程、试图数目、总触发器数、作业数

用户表:select count(*) 总表数 from sysobjects where xtype='u' 刚才那个是用户表,下面这个是系统表加用户表: select count(*) 总表数 from sysobject s where xtype in('u','s') 总视图数:select count(*) 总视图数 from sysobjects where xtype='v' 总存储过程数:select count(*) 总存储过程数 from sysobjects where

Oracle查询数据库中所有表的记录数

首先建立一个计算函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>create or

—查询数据库中所有的表名字段名说明 详细信息

——直接放在需要查询的库中执行即可. SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识, (case when (SELECT count(*) FROM sysobjects WHERE (name in (S

MySQL查询数据库中所有数据表的数据条数

select table_name,table_rows from information_schema.tables where TABLE_SCHEMA = '数据库名称' order by table_rows desc; 原文地址:https://www.cnblogs.com/yulongcode/p/11395928.html

mysql、oracle、sqlserver查询某数据库中对应的表的个数

1.oracle查询数据库中表的个数: select count(*) from user_tables 这个操作的前提是,登录成功 2.mysql查询数据库中表的个数: SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = '数据库' GROUP BY table_schema;把数据库这三个字修改成自己对应的数据库的名字3.sqlserver中查询某一个数据中表的个数:

ORACLE查询数据库的锁表情况

  查询数据库的锁表情况语句如下: SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name FROM v$process p,v$session a, v$locked_object b,all_objects c WHERE p.addr=a.paddr AND a.process=b.process AND c.object_id=b.object_id 如果表因为某些情况出现死

MySql 查询数据库中所有表名

查询数据库中所有表名select table_name from information_schema.tables where table_schema='csdb' and table_type='base table'; 查询指定数据库中指定表的所有字段名column_nameselect column_name from information_schema.columns where table_schema='csdb' and table_name='users'

查询数据库中所有表的记录数,所占空间,索引使用空间

常用 --查询数据库中所有表的记录数,所占空间,索引使用空间 exec sp_MSForEachTable @precommand=N'create table ##(表名 sysname,记录数 int,保留空间 Nvarchar(20),使用空间 varchar(20),索引使用空间 varchar(20),未用空间 varchar(20))', @command1=N'insert ## exec sp_spaceused ''?''', @postcommand=N'select * f

SqlServer查询出数据库中所有的表及其字段属性

代码如下所示: /********************************* SqlServer查询出数据库中所有的表及其字段属性 *********************************/ SELECT ( CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ) AS 表名 ,--如果表名相同就返回空 a.colorder AS 字段序号 , a.name AS 字段名 , ( CASE WHEN COLUMNPROPERTY(a