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

      本人新手,以前接触的关系型数据库无非就是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;再看看列名和列的值,我相信你会知道是什么意思的~
      
      
      
      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章