美文网首页
Oracle经典实例——元数据查询

Oracle经典实例——元数据查询

作者: 梭哈侠 | 来源:发表于2020-03-27 13:59 被阅读0次

    元数据查询,可以查找在给定模式(schema)中创建的表,某个表的字段、索引、约束、数据字典等

    1.列举模式中的表

    所创建的表都包含在数据库的系统表或视图里,直接查询即可:

    select table_name from all_tables where owner='SYS';
    

    Oracle数据库含有如ALL_TABLES这样丰富的系统视图,可以查询关于表、索引、授权以及其他数据库对象的信息

    2.列举字段

    列举一个表的字段,以及它们的数据类型和在表中的位置:

    select colunm_name,data_type,column_id from all_tab_colunms 
        where owner='SYS' and table_name='table_name';
    

    ALL_TAB_COLUMNS还包含其他该表的信息

    3.列举索引列

    列出某个表的索引,包括构成索引的各列及其位置序号:

    select table_name,index_name,column_name,column_position from all_ind_columns
        where table_name='table_name' and table_owner='SYS';
    

    知道哪些列创建了索引对于查询来说是很重要的,了解索引能有效避免一些潜在的性能问题

    4.列举约束

    列出模式中某个表的约束,以及与这些约束相关的列:

    select t1.table_name,
           t1.constraint_name,
           t2.column_name,
           t1.constraint_type
      from all_constraints t1, all_cons_columns t2
     where t1.table_name = 'student'
       and t1.table_name = t2.table_name
       and t1.owner = t2.owner
       and t1.constraint_name = t2.constraint_name; 
    
    5.用SQL生成SQL

    使用字符串拼接SQL语句,通过查询填入需要的数据:
    生成SQL以计算各个表的行数

    select 'select count(*) from '||table_name||';'cns from user_tables;
    

    禁用所有表的外键约束

    select 'alter table '||table_name||'disable constraint '||constraint_name||';'cons
        from user_constraints where constraint_type='R';
    

    根据表的某些列生成插入脚本

    select 'insert into table1(field1,field2,field3)'||char(10)||'
        values(value1,value2,value3);'inserts 
        from emp where condition;
    

    整理自《SQL经典实例》

    相关文章

      网友评论

          本文标题:Oracle经典实例——元数据查询

          本文链接:https://www.haomeiwen.com/subject/kuyluhtx.html