本人新手,以前接觸的關係型數據庫無非就是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;
再看看列名和列的值,我相信你會知道是什麼意思的~