Jika Anda ingin membuat daftar semua tabel, Anda harus menggunakan:
\dt *.*
untuk menunjukkan bahwa Anda ingin semua tabel di semua skema . Ini akan menyertakan tabel di pg_catalog
, tabel sistem, dan tabel di information_schema
. Tidak ada cara bawaan untuk mengatakan "semua tabel di semua skema yang ditentukan pengguna"; Anda dapat, bagaimanapun, mengatur search_path
Anda ke daftar semua skema yang diinginkan sebelum menjalankan \dt
.
Anda mungkin ingin melakukan ini secara terprogram, dalam hal ini psql
backslash-commands tidak akan berhasil. Di sinilah INFORMATION_SCHEMA
datang untuk menyelamatkan. Untuk membuat daftar tabel:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
BTW, jika Anda ingin melihat apa psql
lakukan sebagai tanggapan terhadap perintah garis miring terbalik, jalankan psql
dengan -E
bendera. misalnya:
$ psql -E regress
regress=# \list
********* QUERY **********
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************
sehingga Anda dapat melihat psql
sedang mencari pg_catalog.pg_database
ketika mendapat daftar database. Demikian pula, untuk tabel dalam database yang diberikan:
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN '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','')
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;
Lebih baik menggunakan INFORMATION_SCHEMA
standar SQL dan portabel alih-alih katalog sistem Pg jika memungkinkan, tetapi terkadang Anda memerlukan informasi khusus Pg. Dalam kasus tersebut tidak masalah untuk menanyakan katalog sistem secara langsung, dan psql -E
dapat menjadi panduan yang berguna tentang cara melakukannya.