syscat.source
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ---------------------------------------------------------------------------
  2. --
  3. -- syscat.sql-
  4. --    sample queries to the system catalogs
  5. --
  6. --
  7. -- Copyright (c) 1994, Regents of the University of California
  8. --
  9. -- $Id: syscat.source,v 1.3 1998/03/20 04:12:25 momjian Exp $
  10. --
  11. ---------------------------------------------------------------------------
  12. --
  13. -- lists the name of all database adminstrators and the name of their
  14. -- database(s)
  15. --
  16. SELECT usename, datname
  17.   FROM pg_user, pg_database
  18.   WHERE usesysid = int2in(int4out(datdba))
  19.   ORDER BY usename, datname;
  20. --
  21. -- lists all user-defined classes
  22. --
  23. SELECT relname
  24.   FROM pg_class
  25.   WHERE relkind = 'r'           -- not indices
  26.     and relname !~ '^pg_'       -- not catalogs
  27.     and relname !~ '^Inv'       -- not large objects
  28.   ORDER BY relname;
  29. --
  30. -- lists all simple indicies (ie. those that are not defined over a function
  31. -- of several attributes)
  32. --
  33. SELECT bc.relname AS class_name, 
  34.        ic.relname AS index_name, 
  35.        a.attname
  36.   FROM pg_class bc,             -- base class
  37.        pg_class ic,             -- index class
  38.        pg_index i,
  39.        pg_attribute a           -- att in base
  40.   WHERE i.indrelid = bc.oid
  41.      and i.indexrelid = ic.oid
  42.      and i.indkey[0] = a.attnum
  43.      and a.attrelid = bc.oid
  44.      and i.indproc = '0'::oid   -- no functional indices
  45.   ORDER BY class_name, index_name, attname;
  46. --
  47. -- lists the user-defined attributes and their types for all user-defined
  48. -- classes
  49. --
  50. SELECT c.relname, a.attname, t.typname
  51.   FROM pg_class c, pg_attribute a, pg_type t
  52.   WHERE c.relkind = 'r'     -- no indices
  53.     and c.relname !~ '^pg_' -- no catalogs
  54.     and c.relname !~ '^Inv' -- no large objects
  55.     and a.attnum > 0        -- no system att's
  56.     and a.attrelid = c.oid
  57.     and a.atttypid = t.oid
  58.   ORDER BY relname, attname;
  59. --
  60. -- lists all user-defined base types (not including array types)
  61. --
  62. SELECT u.usename, t.typname
  63.   FROM pg_type t, pg_user u
  64.   WHERE u.usesysid = int2in(int4out(t.typowner))
  65.     and t.typrelid = '0'::oid   -- no complex types
  66.     and t.typelem = '0'::oid    -- no arrays
  67.     and u.usename <> 'postgres'
  68.   ORDER BY usename, typname;
  69. --
  70. -- lists all left unary operators
  71. --
  72. SELECT o.oprname AS left_unary, 
  73.        right_type.typname AS operand,
  74.        result.typname AS return_type
  75.   FROM pg_operator o, pg_type right_type, pg_type result
  76.   WHERE o.oprkind = 'l'           -- left unary
  77.     and o.oprright = right_type.oid
  78.     and o.oprresult = result.oid
  79.   ORDER BY operand;
  80. --
  81. -- lists all right unary operators
  82. --
  83. SELECT o.oprname AS right_unary,
  84.        left_type.typname AS operand,
  85.        result.typname AS return_type
  86.   FROM pg_operator o, pg_type left_type, pg_type result
  87.   WHERE o.oprkind = 'r'          -- right unary
  88.     and o.oprleft = left_type.oid
  89.     and o.oprresult = result.oid
  90.   ORDER BY operand;
  91. --
  92. -- lists all binary operators
  93. --
  94. SELECT o.oprname AS binary_op,
  95.        left_type.typname AS left_opr,
  96.        right_type.typname AS right_opr,
  97.        result.typname AS return_type
  98.   FROM pg_operator o, pg_type left_type, pg_type right_type, pg_type result
  99.   WHERE o.oprkind = 'b'         -- binary
  100.     and o.oprleft = left_type.oid
  101.     and o.oprright = right_type.oid
  102.     and o.oprresult = result.oid
  103.   ORDER BY left_opr, right_opr;
  104. --
  105. -- lists the name, number of arguments and the return type of all user-defined
  106. -- C functions
  107. --
  108. SELECT p.proname, p.pronargs, t.typname
  109.   FROM pg_proc p, pg_language l, pg_type t
  110.   WHERE p.prolang = l.oid 
  111.     and p.prorettype = t.oid
  112.     and l.lanname = 'c'
  113.   ORDER BY proname;
  114. --
  115. -- lists all aggregate functions and the types to which they can be applied
  116. --
  117. SELECT a.aggname, t.typname
  118.   FROM pg_aggregate a, pg_type t
  119.   WHERE a.aggbasetype = t.oid
  120.   ORDER BY aggname, typname;
  121. --
  122. -- lists all the operator classes that can be used with each access method
  123. -- as well as the operators that cn be used with the respective operator
  124. -- classes
  125. --
  126. SELECT am.amname, opc.opcname, opr.oprname
  127.   FROM pg_am am, pg_amop amop, pg_opclass opc, pg_operator opr
  128.   WHERE amop.amopid = am.oid
  129.     and amop.amopclaid = opc.oid
  130.     and amop.amopopr = opr.oid
  131.   ORDER BY amname, opcname, oprname;