查看PostgreSQL数据库中所有表 - 注意的事项 -- 为什么使用sql查询所有表报错

    技术2022-07-10  208

    文章目录

    查询所有的数据库查询指定schema下的表tablename 和 schemaname 是什么?

          本人新手,以前接触的关系型数据库无非就是mysql,oracle;最多还听说阿里巴巴有个自研的关系型数据库,但也只听说过没用过。       最近因为工作关系需要用到postgreSql,在学习过程中发生点小意外。       mysql中,查看数据库和表如下:

    show databases; -- 查看所有数据库 show tables; -- 查看当前数据库下所有的表

          但是postgreSql不一样,查看所有的数据库是:

    \l --小写的L,不是1

          后来用了pgAdmin,里面可以写sql,但是用 \l 提示错误,就去查 怎么查询所有数据库。查到的答案是这么说的:

    select * from pg_tables;

          如果要查询指定schema的表,就如下:

    select tablename from pg_tables where schemaname='public'

    查询所有的数据库

          有意思的来了!!!

          我以为 select * from pg_tables, 要把 pg_tables换成要查询的数据库的名称,然后就报错了…       事实上,你需要把这句代码原封不动的执行,不要改!!

    select * from pg_tables; -- 不要改动任何一个字,直接执行就行。

    查询指定schema下的表

          这是查到的答案:

    select tablename from pg_tables where schemaname='public'

           查询的列(也就是tablename)不能动,表名(也就是pg_tables)不能动,但是 where 后面的 schemaname= 的参数必须要换成你自己的schemaname的名称。如下:

    select tablename from pg_tables -- 都不能改,tablename也不要动 where schemaname='test' -- 必须要改成自己的schemaname的名称

    tablename 和 schemaname 是什么?

          我也没去细查,但据我猜测,pg_tables应该是一张存了所有表信息的表,类似于元数据的概念。       schemaname是什么呢?你执行一下: select * from pg_tables;再看看列名和列的值,我相信你会知道是什么意思的~                            

    Processed: 0.059, SQL: 9