189 8069 5689

postgresql的表的简单介绍

如何查PostgreSQL 数据库中所有的表

[postgres@localhost bin]$ ./oid2name -d postgres

为将乐等地区用户提供了全套网页设计制作服务,及将乐网站建设行业解决方案。主营业务为成都网站设计、网站建设、将乐网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

From database "postgres":

now:

SELECT pg_catalog.pg_relation_filenode(c.oid) as "Filenode", relname as "Table Name" FROM pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_catalog.pg_database d ON d.datname = pg_catalog.current_database(),pg_catalog.pg_tablespace t WHERE relkind IN ('r') AND n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast' AND t.oid = CASE WHEN reltablespace 0 THEN reltablespace ELSE dattablespace END ORDER BY relname

Filenode Table Name

----------------------

24608 gaotab

24604 testtab

[postgres@localhost bin]$

执行结果就是这样,这里没有用我给出的 postgres 数据库名 ,而是用了 pg_catalog.current_database()

我把格式整理一下,并且把数据库名换成我想要的 ’postgres‘,当然,如果有其他数据库,换其他的名字就可以了。

SELECT

pg_catalog.pg_relation_filenode(c.oid) as "Filenode",

relname as "Table Name"

FROM

pg_class c

LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace

LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres',

pg_catalog.pg_tablespace t

WHERE

relkind IN ('r')

AND n.nspname NOT IN ('pg_catalog', 'information_schema')

AND n.nspname !~ '^pg_toast'

AND t.oid = CASE WHEN reltablespace 0 THEN reltablespace ELSE dattablespace END

ORDER BY

relname

其实 t 是没有必要的,还可以再简化:

SELECT

pg_catalog.pg_relation_filenode(c.oid) as "Filenode",

relname as "Table Name"

FROM

pg_class c

LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace

LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres'

WHERE

relkind IN ('r')

AND n.nspname NOT IN ('pg_catalog', 'information_schema')

AND n.nspname !~ '^pg_toast'

ORDER BY

relname

怎样用postgresql创建表

先在本机安装PostgreSQL数据库,然后在开始菜单中找到该程序,双击并打开该数据库。

找到数据库服务器点击要加表的数据库,将鼠标移到"数据表"后,点击鼠标右键 ,出现如下图的对话框,点击"新数据表"。

弹出"新数据表"的对话框后,如下图1,在名称中输入表的名字,拥有人按照默认的选择就好,表空间是指表存放的位置,最好选择数据库名称,注释中最好要填写,便于后续的阅读,填写完后效果如下图2。

在填写好属性信息后,点击上方菜单的"字段",如下图1标红的位置。这里是用来为新建的表增加字段使用的。点击"新增",出现"新字段"的属性对话框如下图2,填写相关的属性信息如下图3,点击"确定"后退出对话框。

字段新增之后,必须在为该表添加约束,为表增加一个属性便于索引。对话框如下图1,点击"新增"弹出对话框,切换到"字段",如下图2,选择字段,点击"新增”就退出主键的对话框

到这里为止,表的新建已经完成,点击"确定"就可以正常退出,如下图1.。这时在数据表那边就可以看到新增的表了如下图2。到这里为止就可以正常的使用该表。

如何查PostgreSQL 数据库中所有的表

1、通过命令行查询

d

数据库

——

得到所有表的名字

d

表名

——

得到表结构

2、通过SQL语句查询

"select

*

from

pg_tables"

——

得到当前db中所有表的信息(这里pg_tables是系统视图)

"select

tablename

from

pg_tables

where

schemaname='public'"

——

得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)

示例讲解PostgreSQL表分区的三种方式

表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。PostgreSQL的表分区有三种方式:

本文通过示例讲解如何进行这三种方式的分区。

为方便,我们通过Docker的方式启动一个PostgreSQL,可参考:《Docker启动PostgreSQL并推荐几款连接工具》。我们要选择较高的版本,否则不支持Hash分区,命令如下:

先创建一张表带有年龄,然后我们根据年龄分段来进行分区,创建表语句如下:

这个语句已经指定了按age字段来分区了,接着创建分区表:

这里创建了四张分区表,分别对应年龄是0到10岁、11到20岁、21到30岁、30岁以上。

接着我们插入一些数据:

可以看到这里的表名还是 pkslow_person_r ,而不是具体的分区表,说明对于客户端是无感知的。

我们查询也一样的:

但实际上是有分区表存在的:

而且分区表与主表的字段是一致的。

查询分区表,就只能查到那个特定分区的数据了:

类似的,列表分区是按特定的值来分区,比较某个城市的数据放在一个分区里。这里不再给出每一步的讲解,代码如下:

当我们查询第一个分区的时候,只有广州的数据:

哈希分区是指按字段取哈希值后再分区。具体的语句如下:

可以看到创建分区表的时候,我们用了取模的方式,所以如果要创建N个分区表,就要取N取模。

随便查询一张分区表如下:

可以看到同是SZ的哈希值是一样的,肯定会分在同一个分区,而BJ的哈希值取模后也属于同一个分区。

本文讲解了PostgreSQL分区的三种方式。

代码请查看:

postgresql 查看有哪些表

1、通过命令行查询\d数据库——得到所有表的名字\d表名——得到表结构2、通过

SQL语句

查询"select*frompg_tables"——得到当前db中所有表的信息(这里pg_tables是系统视图)"selecttablenamefrompg_tableswhereschemaname='public

在postgresql中如何从数据库中检索出所有的表名

1、查看当前数据库中所有的模式。

2、如果想查看模式中所有的对象信息,可以通过\d 模式名.* 加上通配符的方式来进行查看。

3、在查看模式中的对象时一般使用的方式都是模式名.对象名的方式。

4、在postgresql中有一个类型于linux系统中$PATH的环境变量search_path,默认情况下它的值是当前数据库值和公共模式值。

5、如果想其它模式也添加在搜索路径中可通过如下命令来进行设置。

6、设置完成后如果我们再访问tec模式下的对象,就不需要再使用模式名.对象名的方式了,直接使用对象名即可进行操作。


网页标题:postgresql的表的简单介绍
当前地址:http://jkwzsj.com/article/dsccpee.html

其他资讯