在PostgreSQL中显示表

Show tables in PostgreSQL

在PostgreSQL中,与EDOCX1(mysql中的0)等价的是什么?


psql命令行界面,显示当前模式中的所有表:

1
\dt

以编程的方式(当然,也可以从psql接口):

1
SELECT * FROM pg_catalog.pg_tables;

系统表位于pg_目录数据库中。


以超级用户身份登录:

1
sudo -u postgres psql

您可以通过\l命令列出所有数据库和用户(通过\?列出其他命令)。

现在,如果您想查看其他数据库,可以通过\c命令(如\c template1\c postgres postgres)更改用户/数据库,并使用\d\dt\dS查看表/视图等。


(为了完整性)

您还可以查询(SQL标准)信息架构:

1
2
3
4
5
6
7
8
SELECT
    table_schema || '.' || TABLE_NAME
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');


您可以使用PostgreSQL的交互式终端psql在PostgreSQL中显示表。

1。启动PSQL

通常可以运行以下命令进入psql:

1
psql DBNAME USERNAME

例如,psql template1 postgres

您可能遇到的一种情况是:假设您以根用户身份登录,但不记得数据库名称。只需运行以下命令,就可以首先进入psql:

1
sudo -u postgres psql

在某些系统中,sudo命令不可用,您可以运行以下任一命令:

1
2
psql -U postgres
psql --username=postgres

2。显示表

现在在psql中,您可以运行如下命令:

  • \?列出所有命令
  • \l列表数据库
  • \conninfo显示当前连接信息
  • \c [DBNAME]连接到新数据库,如\c template1
  • \dt列表表
  • 然后可以运行SQL语句,例如SELECT * FROM my_table;(注意:语句必须以分号;结束)
  • \q退出psql

  • 作为Postgres用户首次登录:

    sudo su - postgres

  • 接所需DB:psql -d databaseName

  • \dt将返回所连接数据库中所有表的列表。


  • 运行带有-e标志的psql将返回内部用于实现的查询 DT和类似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    sudo -u postgres psql -E

    postgres=# \dt      
    ********* QUERY **********
    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' 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;        
    **************************


    如果只想查看已创建的表列表,则只能说:

    \dt

    但是我们也有PATTERN,它将帮助您自定义要显示的表。要显示包括pg_catalog模式在内的所有模式,可以添加*

    \dt *

    如果是:\?

    \dt[S+] [PATTERN] list tables


    只使用查看表格

    1
    => \dt

    如果要查看架构表

    1
    =>\dt+

    如果要查看特定的架构表

    1
    =>\dt schema_name.*


    首先使用以下命令连接数据库

    1
    \c database_name

    你会看到这个信息-You are now connected to database database_name。然后运行以下命令

    1
    SELECT * FROM TABLE_NAME;

    在数据库名称和表名称中,只需使用数据库和表名称更新


    so that as a superuser登录到数据库,你可以和他们schemas check the:P></

    1
    sudo su - postgres

    然后,我们可以使用get to PostgreSQL命令模式:后壳P></

    1
    psql

    现在你可以检查在数据库列表using the following by the command:P></

    1
    \l

    如果你会喜欢check the of the数据库作为维大小.使用:-好P></

    1
    \l+

    出版社q去背。P></

    You have found盎司你的数据库的数据库,现在你可以使用connect to the following命令:P></

    1
    \c database_name

    "You can check the tables连通数据库模式或模式:P></

    1
    \d

    现在使用Return to back to the Shell:P></

    1
    q

    现在继续see the details of to table使用:-一定P></

    1
    \d TABLE_NAME

    to Go back to _出版社\qPostgreSQL的壳。P></

    back to和to Return端子exit出版社。P></


    如果在PostgreSQL中使用pgadmin4,则可以使用它显示数据库中的表:

    1
    SELECT * FROM information_schema.tables WHERE table_schema='public';

    注释列表,\dt光环会在the tables of the Public模式你使用的数据库。我保持在我的表分离schemas the accepted回答,我不为我工作。P></

    to list的图式在表内,needed to:P></

    1)数据库:connect to the教育P></

    1
    psql mydb

    2)模式的specify the name for the tables想看到后\dt命令,这样:P></

    1
    \dt myschema.*

    这表明,结果我的兴趣:我的茶P></

    1
    2
    3
    4
    5
    6
                   List OF relations
     Schema   |       Name      | TYPE  |  Owner  
    ----------+-----------------+-------+----------
     myschema | users           | TABLE | postgres
     myschema | activity        | TABLE | postgres
     myschema | roles           | TABLE | postgres

    dt(无*必需)--将列出已连接到的现有数据库的所有表。还可以注意到:

    D[表名]——将显示给定表的所有列,包括类型信息、引用和键约束。


    1
    2
    3
    4
    5
    6
    7
    SELECT
      *
    FROM
      pg_catalog.pg_tables
    WHERE
      schemaname != 'information_schema'
      AND schemaname != 'pg_catalog';


    您可以使用\dt列出当前数据库中的表。

    fwiw,\d tablename将显示给定表的详细信息,类似于mysql中的show columns from tablename,但提供了更多的信息。


    使用psql:DTP></

    或:P></

    1
    2
    3
    4
    5
    6
    SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE pg_catalog.pg_table_is_visible(c.oid)
            AND c.relkind = 'r'
            AND relname NOT LIKE 'pg_%'
    ORDER BY 1

    首先,你必须像

    我的数据库是Ubuntu

    使用此命令连接

    1
     \c ubuntu

    此消息将显示

    "You are now connected to database"ubuntu" as user"postgres"."

    现在

    运行此命令以显示其中的所有表

    1
    \d+

    dt将列出表,"pset pager off"将在同一窗口中显示它们,而不切换到单独的窗口。爱死在dbshell中的那个特性。


    快速oneliner as aP></

    1
    2
    3
    # just list ALL the postgres TABLES sorted IN the terminal
    db='my_db_name'
    clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'


    在外国的psql to view,Run \dEP></


    首先,您可以使用Mac上的postgre.app或Postico连接Postgres数据库。运行以下命令:

    1
    psql -h localhost -p port_number -d database_name -U user_name -W

    然后输入密码,这样可以访问数据库。