在 Oracle 数据库中,可以使用数据字典视图来查询用户、数据库、模式、表、表结构、视图等数据库对象的元数据信息。以下是一些常用的查询示例:

查询用户信息

  1. 查询所有用户

    1
    SELECT * FROM DBA_USERS;
  2. 查询当前用户

    1
    SELECT USER FROM DUAL;
  3. 查询用户的默认表空间

    1
    SELECT DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'YOUR_USERNAME';

查询数据库信息

  1. 查询数据库版本

    1
    SELECT * FROM V$VERSION;
  2. 查询数据库实例名

    1
    SELECT INSTANCE_NAME FROM V$INSTANCE;
  3. 查询数据库参数

    1
    SELECT * FROM V$PARAMETER;

查询模式信息

  1. 查询所有模式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM DBA_USERS;

    SELECT * FROM DBA_USERS WHERE USERNAME NOT IN (
    'SYS','SYSTEM','DBSNMP','NEW_USER','OUTLN','MGMT_VIEW',
    'FLOWS_FILES','MDSYS','ORDSYS','EXFSYS','WMSYS','APPQOSSYS','APEX_030200',
    'OWBSYS_AUDIT','ORDDATA','CTXSYS','ANONYMOUS','SYSMAN','XDB','ORDPLUGINS',
    'OWBSYS','SI_INFORMTN_SCHEMA','OLAPSYS','SCOTT','ORACLE_OCM','XS$NULL','MDDATA',
    'DIP','APEX_PUBLIC_USER','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR'
    );
  2. 查询当前用户的模式

    1
    SELECT USERNAME AS SCHEMA_NAME FROM USER_USERS;

查询表信息

  1. 查询所有表

    1
    SELECT * FROM DBA_TABLES;
  2. 查询当前用户的表

    1
    SELECT * FROM USER_TABLES;
  3. 查询特定用户的表

    1
    SELECT * FROM ALL_TABLES WHERE OWNER = 'YOUR_SCHEMA_NAME';

查询表结构

  1. 查询表的所有列

    1
    SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND OWNER = 'YOUR_SCHEMA_NAME';
  2. 查询表的主键

    1
    2
    3
    4
    SELECT * FROM ALL_CONSTRAINTS 
    WHERE CONSTRAINT_TYPE = 'P'
    AND TABLE_NAME = 'YOUR_TABLE_NAME'
    AND OWNER = 'YOUR_SCHEMA_NAME';
  3. 查询表的外键

    1
    2
    3
    4
    SELECT * FROM ALL_CONSTRAINTS 
    WHERE CONSTRAINT_TYPE = 'R'
    AND TABLE_NAME = 'YOUR_TABLE_NAME'
    AND OWNER = 'YOUR_SCHEMA_NAME';
  4. 查询表的索引

    1
    2
    3
    SELECT * FROM ALL_INDEXES 
    WHERE TABLE_NAME = 'YOUR_TABLE_NAME'
    AND OWNER = 'YOUR_SCHEMA_NAME';
  5. 查询表的触发器

    1
    2
    3
    SELECT * FROM ALL_TRIGGERS 
    WHERE TABLE_NAME = 'YOUR_TABLE_NAME'
    AND OWNER = 'YOUR_SCHEMA_NAME';

查询视图信息

  1. 查询所有视图

    1
    SELECT * FROM DBA_VIEWS;
  2. 查询当前用户的视图

    1
    SELECT * FROM USER_VIEWS;
  3. 查询特定用户的视图

    1
    SELECT * FROM ALL_VIEWS WHERE OWNER = 'YOUR_SCHEMA_NAME';
  4. 查询视图的定义

    1
    SELECT TEXT FROM ALL_VIEWS WHERE VIEW_NAME = 'YOUR_VIEW_NAME' AND OWNER = 'YOUR_SCHEMA_NAME';

查询其他数据库对象

  1. 查询序列

    1
    SELECT * FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = 'YOUR_SCHEMA_NAME';
  2. 查询存储过程和函数

    1
    SELECT * FROM ALL_PROCEDURES WHERE OWNER = 'YOUR_SCHEMA_NAME';
  3. 查询包

    1
    SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'YOUR_SCHEMA_NAME';
  4. 查询同义词

    1
    SELECT * FROM ALL_SYNONYMS WHERE OWNER = 'YOUR_SCHEMA_NAME';

获取 DDL 语句

  1. 获取表的 DDL 语句

    1
    SELECT DBMS_METADATA.GET_DDL('TABLE', 'YOUR_TABLE_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;
  2. 获取视图的 DDL 语句

    1
    SELECT DBMS_METADATA.GET_DDL('VIEW', 'YOUR_VIEW_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;
  3. 获取存储过程或函数的 DDL 语句

    1
    SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'YOUR_PROCEDURE_NAME', 'YOUR_SCHEMA_NAME') FROM DUAL;

通过这些查询,你可以获取到关于用户、数据库、模式、表、表结构、视图以及其他数据库对象的详细元数据信息。根据你的具体需求,可以选择合适的查询来获取所需的信息。