In an earlier post we looked at the Queries for Sql Server for retrieving meta information. In this post, we will look at the PostgresSql version.

Get All Views

 SELECT table_name,        view_definition FROM   information_schema.VIEWS WHERE  table_schema = ANY ( Current_schemas(FALSE) );    

Get All Tables

 SELECT table_name FROM   information_schema.TABLES WHERE  table_schema = ANY ( Current_schemas(FALSE) )   

Get All Columns

 SELECT column_name,        is_nullable,        is_identity,        character_maximum_length,        numeric_precision,        numeric_precision_radix,        numeric_scale,        data_type FROM   information_schema.COLUMNS WHERE  table_schema = 'public'        AND table_name = '<TableName>'    

Get All Indices from database

 SELECT ix.indisunique AS IsUnique,        t.relname      AS TableName,        i.relname      AS Name,        a.attname      AS ColumnName FROM   pg_class t,        pg_class i,        pg_index ix,        pg_attribute a WHERE  t.oid = ix.indrelid        AND i.oid = ix.indexrelid        AND a.attrelid = t.oid        AND a.attnum = ANY ( ix.indkey )        AND t.relkind = 'r'        AND ix.indisprimary = FALSE        AND t.relname = '<TableName>';    

Get All Primary Key Constraints

 SELECT kcu.table_schema,        tco.constraint_name,        kcu.column_name FROM   information_schema.table_constraints tco        join information_schema.key_column_usage kcu          ON kcu.constraint_name = tco.constraint_name             AND kcu.constraint_schema = tco.constraint_schema             AND kcu.constraint_name = tco.constraint_name WHERE  tco.constraint_type = 'PRIMARY KEY'        AND kcu.table_name = '<TableName>' ORDER  BY kcu.table_schema,           kcu.table_name    

Get all Unique Key Constraints

 SELECT kcu.table_schema,        tco.constraint_name,        kcu.column_name FROM   information_schema.table_constraints tco        join information_schema.key_column_usage kcu          ON kcu.constraint_name = tco.constraint_name             AND kcu.constraint_schema = tco.constraint_schema             AND kcu.constraint_name = tco.constraint_name WHERE  tco.constraint_type = 'UNIQUE'        AND kcu.table_name = '<TableName>' ORDER  BY kcu.table_schema,           kcu.table_name;    

Get all check constraints

  SELECT col.column_name    AS ColumnName,        tc.constraint_name AS Name,        cc.check_clause    AS DEFINITION FROM   information_schema.table_constraints tc        join information_schema.check_constraints cc          ON tc.constraint_schema = cc.constraint_schema             AND tc.constraint_name = cc.constraint_name        join pg_namespace nsp          ON nsp.nspname = cc.constraint_schema        join pg_constraint pgc          ON pgc.conname = cc.constraint_name             AND pgc.connamespace = nsp.oid             AND pgc.contype = 'c'        join information_schema.COLUMNS col          ON col.table_schema = tc.table_schema             AND col.table_name = tc.table_name             AND col.ordinal_position = ANY ( pgc.conkey ) WHERE  tc.constraint_schema NOT IN( 'pg_catalog', 'information_schema' ) ORDER  BY tc.table_schema,           tc.table_name;    

Get all Foreign Key Constraints

  SELECT tc.constraint_name,        kcu.column_name,        ccu.table_name,        ccu.column_name FROM   information_schema.table_constraints AS tc        join information_schema.key_column_usage AS kcu          ON tc.constraint_name = kcu.constraint_name             AND tc.table_schema = kcu.table_schema        join information_schema.constraint_column_usage AS ccu          ON ccu.constraint_name = tc.constraint_name             AND ccu.table_schema = tc.table_schema WHERE  tc.constraint_type = 'FOREIGN KEY'        AND tc.table_name = '<TableName>'    

Get all Default value Constraints

  SELECT col.column_name    AS ColumnName,        col.column_default AS DefaultValue FROM   information_schema.COLUMNS col WHERE  col.column_default IS NOT NULL        AND col.table_schema NOT IN( 'information_schema', 'pg_catalog' )        AND col.table_name = '<TableName>' ORDER  BY col.column_name;