注:所有查询默认在管理员用户下进行

----------------------------------Mysql中--------------------------------------------

一、查询数据库内所有表的基本信息

在Mysql中information_schema.TABLES表存储了数据表的元数据信息,下面对常用的字段进行介绍:

  • TABLE_SCHEMA         记录数据库名
  • TABLE_NAME             记录数据表名
  • ENGINE                      存储引擎
  • TABLE_ROWS             关于表的粗略行估计;
  • DATA)LENGTH           记录表的大小(单位字节);
  • INDEX_LENGTH         记录表的索引的大小
  • ROW_FORMAT          可以查看数据表是否压缩过;

对应sql语句:

全部属性查询

SELECT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库名';

1.14日下午,我想抓取数据库所有表的建表语句失败

对应版:

SELECT

     TABLE_CATALOG as '表目录',

     TABLE_SCHEMA as '数据库名',

     TABLE_NAME as '表名',

     TABLE_TYPE as '表类型',

     ENGINE as '存储引擎',

     VERSION as '版本',

     ROW_FORMAT as '表存储格式',

     TABLE_ROWS as '表现有行数',

     AVG_ROW_LENGTH as '平均每行长度',

     MAX_DATA_LENGTH as '最大数据长度',

     INDEX_LENGTH as '索引大小',

     DATA_FREE as '碎片大小',

     auto_increment as '自增',

     CREATE_TIME as '创建时间',

     UPDATE_TIME as '更新时间',        

     TABLE_COLLATION as '表字符集',

     CHECKSUM as '校验和',

     CREATE_OPTIONS as '创建选项',

     TABLE_COMMENT as '备注'

FROM

    information_schema.TABLES t

WHERE

    TABLE_SCHEMA = '数据库名';

注:information_schema.TABLES t  或者  information_schema.`TABLES`  这两种写法都可以。

二、查询数据库内所有表的字段(列)信息

在Mysql中information_schema.COLUMNS表存储了数据表所有列的信息,下面对常用的字段进行介绍:

  • TABLE_CATALOG             这一列的值总是DEF;
  • TABLE_SCHEMA              记录数据库名
  • TABLE_NAME                  记录表名
  • COLUMN_NAME             记录列名
  • COLUMN_DEFAULT         记录列默认值
  • IS_NULLABLE                  是否可以取空
  • COLUMN_TYPE               记录列数据类型(详细)
  • COLUMN_KEY                 记录列索引类型
  • CHARACTER_MAXIMUM_LENGTH          CHAR/VARCHAR 最大长度;

对应SQL语句:

全部属性查询:

SELECT FROM information_schema.`COLUMNS` c WHERE TABLE_SCHEMA = '数据库名';

对应版:

SELECT

     TABLE_SCHEMA AS '库名',

     TABLE_NAME AS '表名',

     COLUMN_NAME AS '列名',

     ORDINAL_POSITION AS '列的排列顺序',

     COLUMN_DEFAULT AS '默认值',

     IS_NULLABLE AS '是否为空',

     DATA_TYPE AS '数据类型',

     CHARACTER_MAXIMUM_LENGTH AS '字符最大长度',

     NUMERIC_PRECISION AS '数值精度(最大位数)',

     NUMERIC_SCALE AS '小数精度',

     COLUMN_TYPE AS 列类型,

     COLUMN_KEY 'KEY',

     EXTRA AS '额外说明',

     COLUMN_COMMENT AS '注释'

FROM

     information_schema.`COLUMNS`

WHERE

     TABLE_SCHEMA = '数据库名'

ORDER BY

TABLE_NAME,

ORDINAL_POSITION;

三、查询数据库内所有表的索引信息

在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:

  • TABLE_CATALOG         包含索引的表所属的目录的名称。 该值始终为def;
  • TABLE_SCHEMA          包含索引的表所属的结构(数据库)的名称;
  • TABLE_NAME              包含索引的表的名称
  • NON_UNIQUE            如果索引不能重复,则为0;如果可以,则为1;
  • INDEX_SCHEMA         索引所属的结构(数据库)的名称;
  • INDEX_NAME             索引的名称。 如果是主键,则始终为PRIMARY;
  • SEQ_IN_INDEX            索引中的列序列号,以1开头;
  • COLUMN_NAME         列名称
  • COLLATION                 列在索引中排序方式:A(升序),D(降序),NULL(未排序);
  • CARDINALITY              估计索引中唯一值的数量,该值不一定精确;
  • SUB_PART                    索引前缀。 如果列仅被部分索引,则索引字符的数量,如果整列被索引,则为NULL;
  • PACKED                       指示密钥的打包方式。 如果不是,则为NULL;
  • NULLABLE                   如果列可能包含NULL值,则包含YES,否则包含’’;
  • INDEX_TYPE                索引类型(BTREE,FULLTEXT,HASH,RTREE);
  • COMMENT                  有关未在其自己的列中描述的索引的信息,例如在禁用索引时禁用;
  • INDEX_COMMENT      索引注释;

对应SQL语句:

全部属性查询:

SELECT FROM INFORMATION_SCHEMA.STATISTICS WHERE  table_schema = '数据库名'

对应:

SELECT

     TABLE_CATALOG as '目录',

     TABLE_SCHEMA as '库名',

     TABLE_NAME as '表名',

     NON_UNIQUE as '是否重复',

     INDEX_NAME as '索引名',

     SEQ_IN_INDEX as '索引的列号',

     COLUMN_NAME as '列名',

     collation as '列排序方式',

     cardinality as '索引唯一值数量',

     SUB_PART as '索引前缀',

     NULLABLE as '列包含空',

     INDEX_TYPE as '索引类型',

     COMMENT as '描述',

     INDEX_COMMENT as '注释'

FROM

     information_schema.STATISTICS s

WHERE

     TABLE_SCHEMA = 'mysql'

四、查询库名得建立的所有视图信息

在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:

  • TABLE_SCHEMA             视图所属的SCHEMA(数据库)的名称
  • TABLE_NAME                 表名称
  • VIEW_DEFINITION         视图定义语句
  • DEFINER                        创建触发器的用户的帐户
  • IS_UPDATABLE               MYSQL在CREATE VIEW时设置一个标志,称为视图可更新性标志。
  • CHECK_OPTION             CHECK_OPTION属性的值。该值是NONE,CASCADE或LOCAL之一
  • SECURITY_TYPE             视图SQL SECURITY特性。该值是DEFINER或INVOKER之一
  • COLLATION_CONNECTION           排序规则
  • CHARACTER_SET_CLIENT              编码格式

对应SQL语句:

全部属性查询:

SELECT from information_schema.VIEWS where TABLE_SCHEMA = '数据库名';

查询所有视图创建语句:

SELECT CONCAT('view ',TABLE_SCHEMA,'.', TABLE_NAME,' as ',VIEW_DEFINITION,';')

  FROM information_schema.views where TABLE_SCHEMA = '数据库名' ;

中文对应版:

SELECT

    TABLE_SCHEMA as '库名',

    TABLE_NAME as '表名',

    VIEW_DEFINITION as '视图定义语句',

    DEFINER as '创建触发器的用户的帐户',

    IS_UPDATABLE as '可更新标志',

    CHECK_OPTION as '设置视图约束',

    SECURITY_TYPE as '安全类型',

    COLLATION_CONNECTION as '排序规则',

    CHARACTER_SET_CLIENT as '编码格式'

from

    information_schema.VIEWS

where

    TABLE_SCHEMA = '数据库名';

----------------------------------SQL SERVER 中-----------------------------------------

有一张系统视图

sys.object

在数据库内创建的每个用户定义的架构范围内的对象(包括本机编译的标量用户定义函数)都包含一行。

    • 在开发文档里有具体描述:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver15

    几乎所有对象信息都存在于sys.objects系统视图中,同时又在不同的系统视图中保留了相应的副本,对于函数、视图、 存储过程、触发器等相应的文本对象,把相应的对象的详细资料存于新的sys.sql_modules视图中。

  • 表视图:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-tables-transact-sql?view=sql-server-ver15

一、查询数据库所有表和字段的基本信息

               

SELECT

           表名 = case when a.colorder = 1 then d.name else '' end,

           表说明 = case when a.colorder = 1 then isnull(f.value, ''else '' end,

           字段序号 = a.colorder,

           字段名 = a.name,

           标识 = case when COLUMNPROPERTY(a.id, a.name'IsIdentity')= 1 then '√'else '' end,

           主键 = case when exists(SELECT FROM sysobjects where xtype = 'PK' and parent_obj = a.id and name in (

SELECT name FROM sysindexes WHERE indid in(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid = a.colid))) then '√' else '' end,

           类型 = b.name,

           占用字节数 = a.length,

           长度 = COLUMNPROPERTY(a.id, a.name'PRECISION'),

           小数位数 = isnull(COLUMNPROPERTY(a.id, a.name'Scale'), 0),

           允许空 = case when a.isnullable = 1 then '√'else '' end,

           默认值 = isnull(e.text, ''),

           字段说明 = isnull(g.[value], '')

FROM

           syscolumns a

left join

           systypes b

on

           a.xusertype = b.xusertype

inner join

           sysobjects d

on

           a.id = d.id and d.xtype = 'U' and d.name <> 'dtproperties'

left join

           syscomments e

on

           a.cdefault = e.id

left join

           sys.extended_properties g

on

           a.id = G.major_id and a.colid = g.minor_id

left join

           sys.extended_properties f

on

           d.id = f.major_id and f.minor_id = 0

--where

-- d.name = 'Test'--如果只查询指定表,加上此where条件,tablename是要查询的表名;去除where条件查询所有的表信息

order by

           a.id,a.colorder

查询数据库所有建表语句:

select 'create table [' + so.name '] (' + o.list + ')' CASE WHEN tc.Constraint_Name IS NULL THEN '' ELSE 'ALTER TABLE ' + so.Name ' ADD CONSTRAINT ' + tc.Constraint_Name + ' PRIMARY KEY ' ' (' LEFT(j.List, Len(j.List)-1) + ')' END

from sysobjects so

cross apply

(select

           ' ['+column_name+'] ' +

           data_type + case data_type

           when 'sql_variant' then ''

           when 'text' then ''

           when 'decimal' then '(' cast(numeric_precision_radix as varchar) + ', ' cast(numeric_scale as varchar) + ')'

           else coalesce('('+case when character_maximum_length = -1 then 'MAX' else cast(character_maximum_length as varcharend +')',''end ' ' +

           case when exists (

select id from syscolumns

where  object_name(id)=so.name

           and name=column_name

           and columnproperty(id,name,'IsIdentity') = 1

then

           'IDENTITY(' +

           cast(ident_seed(so.nameas varchar) + ',' +

           cast(ident_incr(so.nameas varchar) + ')'

           else ''

           end ' ' +

           (case when IS_NULLABLE = 'No' then 'NOT ' else '' end ) + 'NULL ' +

           case when information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN 'DEFAULT '+ information_schema.columns.COLUMN_DEFAULT ELSE '' END ', '

from information_schema.columns where table_name = so.name

ORDER BY ordinal_position

FOR XML PATH('')) o (list)

LEFT JOIN

information_schema.table_constraints tc

on tc.Table_name = so.Name

AND tc.Constraint_Type = 'PRIMARY KEY'

cross apply

(select '[' + Column_Name + '], '

FROM information_schema.key_column_usage kcu

WHERE kcu.Constraint_Name = tc.Constraint_Name

ORDER BY

ORDINAL_POSITION

FOR XML PATH('')) j (list)

where xtype = 'U'

AND name NOT IN ('dtproperties');

查询整个数据库包括系统表所有的字段信息

SELECT FROM SYS.COLUMNS

二、查询数据库所有表的索引信息

注:还可以生成创建和删除语句

WITH TB

           AS SELECT    TB.object_id ,

                                  Schema_name = Sch.name ,

                                  table_name = TB.name

                   FROM      sys.tables TB

                                   INNER JOIN sys.schemas Sch ON TB.schema_id = Sch.schema_id

                   WHERE    TB.is_ms_shipped = 0

                    ),

             IXC

                AS SELECT IXC.object_id ,

                                    IXC.index_id ,

                                    IXC.index_column_id ,

                                    IXC.is_descending_key ,

                                    IXC.is_included_column ,

                                    column_name = C.name

                        FROM  SYS.index_columns IXC

                                    INNER JOIN SYS.columns C ON IXC.object_id = C.object_id

                                                                                        AND IXC.column_id = C.column_id

                 ),

IX

    AS SELECT       IX.object_id ,

                              index_name = IX.name ,

                              index_type_desc = IX.type_desc ,

                              IX.is_unique ,

                              IX.is_primary_key ,

                              IX.is_unique_constraint ,

                              IX.is_disabled ,

                              index_columns_TEMP = STUFF(IXC_COL.index_columns, 1, 1,

                                                                                 N'') ,

                              index_columns = CASE WHEN IXC_COL_INCLUDE.index_columns_includes IS NOT NULL

                                                                   THEN STUFF(LEFT(IXC_COL.index_columns,

                                                                                                DATALENGTH(IXC_COL.index_columns)

                                                                                                 -

DATALENGTH(IXC_COL_INCLUDE.index_columns_includes)),

                                                     1, 1, N'')

                                          ELSE STUFF(IXC_COL.index_columns,

                                                     1, 1, N'')

                                       END ,

                          index_columns_includes = STUFF(IXC_COL_INCLUDE.index_columns_includes,

                                                     1, 1, N'')

            FROM   sys.indexes IX

                    CROSS APPLY ( SELECT index_columns = ( SELECT

                                                          N','

                                                          + QUOTENAME(column_name)

                                                          FROM

                                                          IXC

                                                          WHERE

                                                         object_id = IX.object_id

                                                         AND index_id = IX.index_id

                                                         ORDER BY index_column_id

                             FOR   XML PATH('') ,

                                       ROOT('r') ,

                                       TYPE

).value('/r[1]''nvarchar(max)')

                               ) IXC_COL

                      OUTER APPLY ( SELECT index_columns_includes = ( SELECT

                                                         N','

                                                         + QUOTENAME(column_name)

                                                         FROM

                                                         IXC

                                                         WHERE

                                                         object_id = IX.object_id

                                                         AND index_id = IX.index_id

                                                         AND is_included_column = 1

                                                         ORDER BY index_column_id

                                   FOR     XML PATH('') ,

                                              ROOT('r') ,

                                              TYPE

).value('/r[1]''nvarchar(max)')

                     ) IXC_COL_INCLUDE

           WHERE index_id > 0

          )

SELECT DB_NAME() AS N'数据库名' ,

       TB.Schema_name AS N'架构' ,

       TB.table_name AS N'表名' ,

       IX.index_name AS N'索引名' ,

       IX.index_type_desc AS N'索引类型' ,

       IX.is_unique AS N'是否唯一索引' ,

       IX.is_primary_key AS N'是否主键' ,

       IX.is_unique_constraint AS N'是否唯一约束' ,

       IX.is_disabled AS N'是否禁用索引' ,

       IX.index_columns AS N'索引列' ,

       IX.index_columns_includes AS N'索引包含列' ,

       N'CREATE INDEX ' + N'[' + IX.index_name + N']' + N' ON ' + N'['

       + QUOTENAME(DB_NAME()) + N'.' + QUOTENAME(TB.SCHEMA_NAME) + N'.'

       + QUOTENAME(TB.table_name) + N'(' + IX.index_columns + N')'

       CASE WHEN IX.index_columns_includes IS NOT NULL

              THEN CHAR(13) + N'INCLUDE (' + IX.index_columns_includes

              + N')'

       ELSE N''

   END AS N'创建索引' ,

       N'DROP INDEX ' + QUOTENAME(IX.index_name) + N' ON '

       + QUOTENAME(DB_NAME()) + N'.' + QUOTENAME(TB.SCHEMA_NAME) + N'.'

       + QUOTENAME(TB.table_name) AS N'删除索引'

FROM TB

       INNER JOIN IX ON TB.object_id = IX.object_id

ORDER BY Schema_name ,

       table_name ,

       IX.index_name;

结果图:

三、查询建立的所有视图信息

select from sys.objects where xtype='V'

在SQL server的可视化工具Microsoft SQL Server Management Studio 中右键点击视图,设计中可查看创建语句

----------------------------------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是一个非常重要的文件,其中包含了数据字典表的定义及注释说明,应仔细阅读研究。

方法一

select table_name from user_tables;                     //当前用户的表 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;                    //包括系统表 ower,table_name,tablespace_name,last_analyzed等

--实例:

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),即定义数据的数据。

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

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

查询所有表、索引、视图信息的SQL语句-Mysql/oracle/sql server的不同实现方式相关推荐

  1. Oracle中查询用户表/索引/视图的创建语句

    1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建语句 select ...

  2. oracle sql语句序列,Oracle SQL之 序列使用限制

    Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: ■ A ...

  3. oracle中sql语句排序,Oracle SQL排序方式与case语句

    我在理解带有case语句的oracle(12c)sql order by子句时遇到困难.我有一张包含以下数据的表格, SELECT DEPT_NO, DEPT_NAME FROM SORTNG_LOG ...

  4. oracle sql语句序列,Oracle SQL:使用Select语句插入序列

    假设您要在按序列生成密钥之前对数据进行分组,那么就像您想要的那样 INSERT INTO HISTORICAL_CAR_STATS ( HISTORICAL_CAR_STATS_ID, YEAR, M ...

  5. Oracle+sql+取年度,oracle SQL语句取本周本月本年的数据

    --国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...

  6. mysql 所有表的字段信息_mysql如何查询所有表和字段信息

    mysql查询所有表和字段信息的方法: 1.根据库名获取所有表的信息 SELECT * FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'e ...

  7. Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全

    Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列)

  8. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...

    1用于解决存储文件大小不够的问题 2与普通表空间不同的地方在于大文件表空间只对应唯一一个数据文件或临时文件,普通表空间可最多1022个数据文件或临时文件 3大文件表空间对应文件可达4G个数据块大小,普 ...

  9. oracle+统计表的字段,统计系统中表的个数与查询所有表的字段信息-Oracle

    统计系统中表的个数与查询所有表的字段信息 –统计系统中表的个数: –表描述字段: –需要字段:Name.Code.Commente select lower(a.TABLE_NAME) || '-' ...

最新文章

  1. android 分组 listview,Android实现的ListView分组布局改进示例
  2. 求单独出现的数,冒泡排序优化,strncpy的优化
  3. java环境变量详解---找不到或无法加载主类
  4. NOIP2015 D1 解题报告
  5. 前端学习(795):基本包装类型
  6. django模板系统(下)
  7. 滴滴回应高额抽成:确实存在;抖音火山版被判赔腾讯 800 万元;华为鸿蒙系统有望下月规模化推送|极客头条...
  8. TypeScript基础类型
  9. 20180209-sys模块
  10. java开发课程表_Java开发人员课程包,折扣高达86%
  11. c++如何生成指定范围的随机数
  12. Android P新特性
  13. Lingo软件使用教程
  14. java 汽车租赁系统
  15. SAP 和 ERP 区别
  16. Unity 科大讯飞离线语音合成
  17. 怎么打开计算机访问权限,怎么打开电脑摄像头权限(摄像头权限5种开启方法)...
  18. Tomcat8.0系列配置GlobalSign SSL证书
  19. 苹果Mac系统怎么彻底关闭开机的声音?
  20. Request请求转发与URL编码

热门文章

  1. 1290 越狱(逆向思维-快速幂)
  2. 诺贝尔物理奖候选人张首晟:区块链技术是互联网世界新的分合转折点
  3. 用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
  4. 诺基亚5800XM触控音乐全解析
  5. 使用Matplotlib可视化数据的5个强大技巧
  6. 爬虫:东方财富网数据爬取
  7. Android adb命令行调试技巧
  8. C 练习4-7 求e的近似值 (15 分)
  9. 安卓开发:实现调用相机拍照
  10. 学习游戏软件开发需要哪些基础知识