在psql中,我们可以通过一系列的的快捷命令查看数据库元素,如:d 查看当前搜索路径下的表,那么内部用到的SQL语句是什么呢,可以通过命令来设置是否打印出来:
apple=# set ECHO_HIDDEN on apple=# c mydb You are now connected to database "mydb" as user "apple". mydb=# d ********* QUERY ********** SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','m','S','f','') AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; ************************** List of relations Schema | Name | Type | Owner --------+-----------------+---------------+---------- public | employees | table | postgres public | indent | table | apple public | indent_id_seq | sequence | apple public | student | table | postgres public | table_new | table | postgres public | test1 | table | apple public | test_cur | table | postgres public | test_from_apple | foreign table | apple public | test_id_seq | sequence | apple public | test_time | table | apple public | test_type | table | apple (11 rows) mydb=# set ECHO_HIDDEN off mydb=# d List of relations Schema | Name | Type | Owner --------+-----------------+---------------+---------- public | employees | table | postgres public | indent | table | apple public | indent_id_seq | sequence | apple public | student | table | postgres public | table_new | table | postgres public | test1 | table | apple public | test_cur | table | postgres public | test_from_apple | foreign table | apple public | test_id_seq | sequence | apple public | test_time | table | apple public | test_type | table | apple (11 rows)